Какова правильная структура проектирования базы данных mysql для - PullRequest
0 голосов
/ 02 октября 2011

В моей базе данных есть таблица с именем Resource. Это общая информация о ресурсе (ресурсом может быть статья, статическая веб-ссылка, видео на YouTube или любое другое количество типов).

Для моего примера:

Таблица: ресурс

primary key - id,
column - type,
column - title,
column - description,
column - created_on,
column - updated_on

Таблица: resource_video

primary key - id,
column - youtube_id (spose this could be the primary key, but not relevant in the question).
column - ...

Таблица: resource_weblink

primary key - id,
column - url
column - ...

Таким образом, по сути, таблица resource содержит общие (относятся ко всем ресурсам) столбцы, а затем таблицы настроены для хранения resource_type специфических данных. Каков наилучший (нормализованный) способ создания отношений между resource и resource_type.

Мой первый инстинкт заключается в том, что это должно быть отношение один к одному, идентифицирующее отношения между двумя таблицами с внешним ключом resource_id в таблицах resource_video и resource_weblink, или был бы лучший способ справиться с этим ситуация?

1 Ответ

1 голос
/ 02 октября 2011

Я бы назначил первичному ключу каждой таблицы resource_* ограничение внешнего ключа для столбца id resource.Нет необходимости в отдельном id для каждого подтипа ресурса.См. эту ветку для примера того, как это сделать (посмотрите на иерархию SupportSystem в принятом ответе).

...