Существуют различия между отдельными таблицами и столбцами типа с точки зрения производительности или оптимизации для запросов?Производительность Типированная колонка x Отдельная таблица
, например:
Create Table AllInOne(
Key Integer Identity Primary Key,
Desc varchar(20) Not Null,
OneType Integer Not Null
)
Где OneType получает только 1,2 или 3. (целые значения)
Против следующей архитектуры:
Create Table One(
Key Integer Identity Primary Key,
Desc varchar(20) Not Null
)
Create Table Two(
Key Integer Identity Primary Key,
Desc varchar(20) Not Null
)
Create Table Three(
Key Integer Identity Primary Key,
Desc varchar(20) Not Null
)
Другая возможная архитектура:
Create Table Root(
Key Integer Identity Primary Key,
Desc varchar(20) Not Null
)
Create Table One(
Key Integer Primary Key references Root
)
Create Table Two(
Key Integer Primary Key references Root
)
Create Table Three(
Key Integer Primary Key references Root
)
В 3-м порядке все данные будут установлены в корневом каталоге и связаны с одной, двумя и тремя таблицами.
Я спросил своего учителя некоторое время назад, и он не мог ответить, если есть какая-либо разница. Предположим, мне нужно выбирать между этими тремя подходами.
Предположим, что часто используемые запросы фильтруют тип. И нет никаких дочерних таблиц, которые ссылаются на них.
Чтобы упростить понимание, давайте подумаем о системе начисления заработной платы.
One = Incomings
Two = Скидки
Три = База для расчета.
Зависит от ваших запросов. Помимо производительности, есть и другая (более серьезная разница). Во втором проекте вы не можете иметь внешний ключ, который ссылается на таблицу «AllInOne», вы можете ссылаться только на одну из трех таблиц отдельно. И наоборот. –
Согласен с ypercube. Если вы последуете этому аргументу до логического вывода, у вас будет только одна таблица в любой базе данных, просто с большим количеством столбцов ... – Paddy
@ypercube перефразировал вопрос – EProgrammerNotFound