Как бы я разработал эту таблицу в SQL? - PullRequest
0 голосов
/ 11 января 2011

У меня есть родительская основная таблица, которая достаточно универсальна для хранения общей информации о дочерних элементах.Поскольку дети существенно отличались друг от друга, мы создали для них отдельные таблицы.Итак, у меня есть что-то вроде этого:

tblMaster
--------
MasterID int
Name varchar(50) --Common to all children and there are a bunch of fields like this
ChildType int -- Type of Child either ChildOne or ChildTwo
ChildID int -- need to store ChildOneID or ChildTwoID depending on type of Child, so that i can refer to children

tblChild1
--------
ChildOneID int IDENTITY

tblChild2
---------
ChildTwoID int IDENTITY

Должен ли я иметь ChildID в мастере, который является ChildOneID или ChildTwoID на основе столбца ChildType?У меня есть несколько детей, и я упростил его для этого вопроса.

Другой способ - добавить ChildOneID и ChildTwoID в качестве столбцов в мастере, но, поскольку у меня есть несколько столбцов, ябудет иметь много пустых столбцов

РЕДАКТИРОВАТЬ: Любая помощь приветствуется

Ответы [ 3 ]

1 голос
/ 13 января 2011

Можете ли вы просто иметь.

tblMaster
--------
MasterID int
Name varchar(50) --Common to all children and there are a bunch of fields like this

tblChild1
--------
ChildOneID int IDENTITY
MasterID int

tblChild2
---------
ChildTwoID int IDENTITY
MasterID int

Предполагая, что у каждого ребенка есть один родитель, в противном случае настройте таблицу соединений. если его много ко многим.

1 голос
/ 11 января 2011

Я бы поместил идентификатор в идентификатор мастера, а затем использовал тот же идентификатор в соответствующей дочерней таблице, как показано ниже.

tblMaster

ID int Identity
Имя varchar (50) - общее для всех детей, и есть несколько полей, подобных этому
ChildType int - Тип Child, ChildOne или ChildTwo

tblChild1

ID int

tblChild2

ID int

0 голосов
/ 11 января 2011

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

...