2009-07-14 2 views
0

Я пытаюсь создать базу данных для хранения моей адресной книги, но у меня возникла небольшая проблема. Моя база данных должна содержать отдельные контакты вместе с контактами компании. Это запись может быть как для отдельного лица, так и для компании. Как вы знаете, как у частных лиц, так и у компаний есть адреса, и мне нужны отношения «один-ко-многим» между людьми и адресами, а также компаниями и адрес.Как поделиться таблицей «Один-ко-многим»

Так человек может иметь много адресов и компания может имеет много адресов

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

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

Мысли?

ответ

4

Существуют различные подходы к этому ... Подход, который мы приняли, состоял в том, чтобы иметь таблицу «Имена», эквивалентную таблице контактов; таблицу адресов и таблицу телефонных номеров.

Таблицы адресов и телефонных номеров имеют внешний ключ в таблице имен. В таблице имен было поле типа «type», чтобы мы могли определить, было ли это имя отдельным, компанией, индивидуальным предпринимателем и т. Д.

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

+1

+1 для поля «type»; именно то, что я собирался написать. – bernie

 Смежные вопросы

  • Нет связанных вопросов^_^