Преобразование типов сущностей переменных в отношение M: N через таблицу EntityName - PullRequest
0 голосов
/ 07 сентября 2011

Я часто вижу таблицы «связывания» для отношения M: N, где N может быть 1..X типов объектов / классов, так что таблица содержит classNameId, ссылающийся на таблицу ClassName, и classPK, ссылающийся на конкретную таблицу Entity.

Как это называется?Есть ли у него альтернатива с таким же эффектом без таблицы EntityName?

enter image description here

1 Ответ

0 голосов
/ 07 сентября 2011

В модели ER сущности и сущности могут быть связаны наследованием, так же, как классы и подклассы находятся в объектной модели.Проблема возникает, когда вы преобразуете свою модель ER в реляционную модель.Реляционная модель не поддерживает наследование как таковое.

Шаблон проектирования называется обобщением-специализацией или для краткости gen-spec.К сожалению, во многих руководствах по базам данных пропущено, как разрабатывать таблицы для конкретной ситуации.

Но это хорошо понято. Это выглядит совсем не так, как ваша модель, но вы можете создать виды, которые при необходимости будут выглядеть как ваша модель.Посмотрите "реляционное моделирование специализации обобщения" для объяснения того, как это сделать.

Основная хитрость заключается в том, что специализированные таблицы "наследуют" значение своего первичного ключа от PK обобщенной таблицы.Смысл «наследовать» здесь в том, что это копия того же значения.Таким образом, PK в каждой специализированной таблице также является ссылкой FK на соответствующую запись в обобщенной таблице.

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