Гетерогенный тип предметов в отношениях один хозяин-ребенок - PullRequest
0 голосов
/ 11 марта 2012

Возможно, об этом уже спрашивали, но я не смог найти хороший ответ: у меня есть главная таблица, которая может быть в отношениях 1-ко-многим с разнородными объектами.Лучше всего описать это на примере:

У меня есть основная таблица аудио плейлиста (tb_playlist).Список воспроизведения может содержать программные эпизоды (tb_episode), песни (tb_songs) или аудиозапись (tb_reportae).Простой дизайн, который, как я знаю, не самый лучший для обеспечения целостности данных, будет выглядеть следующим образом:

**tb_playlist** 
(
playlist_id,
audioitem_id [can be episode_id, song_id, reportage_id],
audioitem_type [can be: episode, song, or reportage]
)

Приведенное выше решение явно не обеспечивает целостность данных, альтернативные столбцы могут быть следующими:1007 *

, но последнее плохо подходит для расширения типов аудио элементов.

Вопрос в том, как лучше всего решить эту проблему?

Большое спасибо!

1 Ответ

0 голосов
/ 11 марта 2012

Я думаю, вы должны создать диаграмму сущности-отношения проблемы. Я понимаю, что у вас есть иерархия: A PlayList может иметь много PlayListItems . Существует три вида PlayListItems (здесь я вижу иерархию): Эпизоды , Песни и Репортажи .

Проверьте этот вопрос, чтобы узнать, как обрабатывать иерархии: Какова лучшая схема базы данных для поддержки значений, которые соответствуют только определенным строкам?

...