TSQL - Создать дизайн таблицы - PullRequest
0 голосов
/ 12 сентября 2011

У меня есть -

Table X  
------------------------------------
TaskId (bigint-identity-primary key)  
Data1 (varchar), Data2(varchar)

Теперь я создаю новую таблицу -

Table Y 
------------------------------------
Id (identity, Primary Key)
TaskId(FK to Table X)
Data3(varchar)

Теперь, поскольку таблица X и таблица Y будут иметь отношение один к одномув столбце TaskId, поэтому что и как следует сделать, я должен определить первичный ключ, индекс и т. д. для Таблица Y ?

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

Ответы [ 4 ]

3 голосов
/ 12 сентября 2011

Так как это отношение 1:1, а каждое Y - это Task, вы можете использовать этот подход:

Table Y 
----------
TaskId (bigint),
Data3 (varchar),
PRIMARY KEY TaskId, 
FOREIGN KEY TaskId REFERENCES Task(TaskId)

Я думаю, это полезно, если только несколько задач являются Y-задачамии не все из них.И вы предпочитаете, чтобы в ваших таблицах не было NULL.

2 голосов
/ 12 сентября 2011

Если это отношение один к одному, зачем создавать новую таблицу Y?Просто добавьте новый столбец Data3 в таблицу X.

0 голосов
/ 12 сентября 2011

Если вы должны отделить его, и вы уверены, что он всегда останется 1-1, то используйте taskID в качестве PK.Если это может быть 1-много в будущем, добавьте идентификатор и поместите уникальный индекс в Taskid.Затем, если вы наберете 1-много, все, что вам нужно сделать, это сбросить уникальный индекс.

0 голосов
/ 12 сентября 2011

Предполагая, что у вас действительно есть отношение 1: Множество ...

Сохраните свой PK и ключ кластеризованного индекса в поле ID.

Создайте некластеризованный индекс на TaskID, Data3 или, если вы никогда не фильтруете Data3 и только SELECT, просто INCLUDE (Data3).

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