модель реляционной базы данных - PullRequest
0 голосов
/ 19 января 2012

Допустим, у нас есть 3 таблицы: автомобили, люди, компании. мы хотим, чтобы владельцем машины был человек или компания. структура таблицы Cars: Car_id, Car_model, Owner_id Какой лучший способ сделать это?

Ответы [ 3 ]

1 голос
/ 19 января 2012

Если вы не можете изменить текущую структуру таблицы машин, то вы можете добавить новую таблицу с именем owners со следующими столбцами:

number id - уникальный ключ
number owner_id - это фактический идентификатор владельца
char owner_type - это значение, указывающее, является ли владелец лицом или компанией

Затем вам нужно будет сопоставить ссылку cars с owners и посмотреть на значение owner_type, чтобы определить, из какой таблицы получить данные вашего владельца.

EDIT

Забыл упомянуть (довольно важно):

В таблице cars заполните owner_id столбцом owners.id.

0 голосов
/ 19 января 2012

Как уже упоминал Игби, ваша существующая структура далека от идеала, но если вы застряли с ней, один из вариантов - это иметь новую таблицу Owner, которая имеет owner_id из таблицы Car, а такжеperson_id и company_id, только один из которых должен быть заполнен.

0 голосов
/ 19 января 2012

Как насчет того, чтобы иметь другое поле в таблице Cars как «Owner_type_id», которое будет определять, является ли владелец человеком, компанией или какой-либо другой вещью. Конечно, вы должны сохранить другую таблицу "Owner_Types", чтобы этот сценарий работал.

...