anti-anti-pattern (OTLT) в Postgres, используя Наследование - PullRequest
3 голосов
/ 24 июня 2011

Я знаю, что концепция «Одна истинная таблица поиска» является анти-паттерном и обычно не должна использоваться (см. Много статей в сети). Тем не менее, я хотел бы знать, так ли это до сих пор, когда вы используете наследование таблиц в Postgres?

Вы бы никогда не читали и не вставляли в основную справочную таблицу - она ​​действует скорее как шаблон для ваших других справочных таблиц, вы не теряете целостность ссылок (возможно, вы получаете место, которое в противном случае было бы потрачено впустую в ваших кеширующих блоках из-за к большему количеству данных в таблицах), и при вставке через дочерние таблицы вам даже не нужен тип.

Мой OTLT будет иметь следующие столбцы, необходимые для всех справочных таблиц:

CREATE TABLE sl_lookupmaster
(
  lookupid bigserial NOT NULL,
  parent bigint,
  tstamptdt timestamp without time zone NOT NULL DEFAULT localtimestamp,
  description character varying(500) NOT NULL,
  entityref bigint NOT NULL,
  deleted boolean NOT NULL DEFAULT false,
  CONSTRAINT sl_lookupmaster_pkey PRIMARY KEY (lookupid)
)

Тогда вы наследуете от этого.

Что думают люди, это все еще ошибка проектирования, это все еще OTLT?

1 Ответ

7 голосов
/ 25 июня 2011

Существует множество практических правил в отношении проектирования баз данных, и многие люди непреклонны в смысле «религиозной войны» за их защиту, не понимая принципов, лежащих в основе этого правила.Есть действительно потрясающая тема здесь , где парень просто спрашивает почему так плох OTLT?Там дюжина людей, говорящих "о, боже, это плохо!"и один парень, в конце концов, дал несколько реалистичных минусов.

Суть в том, что если ваши таблицы относительно статичны, если у вас не слишком много пользователей, одновременно нажимающих на них, если у вас есть элементы управлениянад тем, кто / что / как данные попадают в таблицу, и если с точки зрения логического проектирования вы все еще моделируете отдельные справочные таблицы, то вы, вероятно, можете обойтись без OTLT как физической реализации.

Я проектировалбазы данных в течение 25 лет, и, по моему мнению, вы можете свободно нарушать правила до тех пор, пока вы понимаете, каковы будут последствия этого решения.Всегда есть компромиссы в разработке чего-либо.Если вы делаете компромиссы с открытыми глазами, то какое бы решение вы ни приняли, оно должно быть хорошим.

При условии, что вы согласны с различными условиями, такими как проверка того, что ваш OTLT не станет горячей точкой илиНа мой взгляд, предложенная вами физическая реализация выглядит где-то между «ОК» и «элегантно».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...