Как поделиться таблицей «один ко многим» - PullRequest
0 голосов
/ 14 июля 2009

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

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

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

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

Мысли

1 Ответ

4 голосов
/ 14 июля 2009

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

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

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

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