Отношения многие ко многим с SQL Management Studio - PullRequest
0 голосов
/ 30 декабря 2011

У меня есть следующие типы данных - Дом, Владелец, с первичными ключами соответственно houseID и ownerID.

Владелец может иметь много Домов.И Дом может иметь много владельцев.Поэтому я создал промежуточную таблицу HouseOwner, которая содержит два столбца, houseID и ownerID.

  1. Должен ли я сделать столбцы houseID и ownerID объединенным первичным ключом для таблицы HouseOwner?

  2. Как насчет создания отношений между таблицей HouseOnwer и таблицами House и Owner, я перехожу к диаграммам баз данных и добавляю все три таблицы. Теперь я должен перетащить houseID из таблицы House на houseID из таблицы HouseOwner?Или следует сделать это в другом раунде и перетащить houseID из таблицы HouseOwner в houseID на столе House?Я не уверен, какой способ сделать это, поскольку всплывающее диалоговое окно ищет таблицу первичного ключа и таблицу внешнего ключа.

Ответы [ 2 ]

2 голосов
/ 30 декабря 2011

1) Да. В частности, я бы сделал это, потому что, если вы используете некоторые инструменты ORM (в частности, EF), отношение «многие ко многим» будет автоматически определено, когда ваши таблицы спроектированы таким образом.

2) Я бы предложил сделать это по старинке, чтобы вам не пришлось беспокоиться об интерфейсе пользователя:

alter table HouseOwner
add constraint FK_HouseOwner_House
foreign key (HouseId)
references House (HouseId)
go
alter table HouseOwner
add constraint FK_HouseOwner_Owner
foreign key (OwnerId)
references Owner (OwnerId)
go
1 голос
/ 30 декабря 2011

Вопрос 1: Я бы добавил дополнительный суррогатный первичный ключ (просто столбец идентификаторов), но об этом много дискуссий.

Вопрос 2: внешние ключи находятся в вашей таблице HouseOwner и относятся к ним.к ПК дома и другой внешний ключ к столу владельца.

...