ER / Data моделирование (связь между унаследованными типами - PullRequest
1 голос
/ 04 июля 2011

Было бы возможно (или это незаконно по любой причине) иметь что-то вроде этого:

isa with foreign key relationship

Это в основном класс ISA с отношением внешнего ключа ксама.

Идея состоит в том, что выходное сообщение - это просто сообщение.Но каждое сообщение (или назовем его входным сообщением) имеет соответствующее выходное сообщение.Это необходимо для связи с внешним ключом.

Это нормально, если нет, то почему?Или есть лучший способ смоделировать это?

Thnx.

1 Ответ

1 голос
/ 11 августа 2012

«Выходное сообщение» - это действительно специализация «Сообщение». Если бы было включено какое-то другое сообщение, например «Входное сообщение», случай стал бы более интересным. Отношения "isa" с несколькими альтернативами хорошо поддаются объектно-ориентированному описанию с использованием наследования классов.

Существует три основных способа разработки отношений для имитации шаблона, предоставляемого наследованием классов. Есть одна таблица, с NULL, вставленными во все атрибуты, которые не относятся к данному случаю. Есть модель наследования таблиц классов, где у каждого подкласса есть собственная таблица, которая «расширяет» (используя слово свободно) основную таблицу суперкласса с копией ключа и дополнительных столбцов. Третий метод - это своего рода компромисс.

Копия ключа является как PK, так и FK, который ссылается на таблицу суперкласса. Распространение значения из таблицы суперкласса в таблицы подкласса выполняется программно. Представлений, основанных на простых объединениях, достаточно, чтобы предоставить вам все данные о данном элементе подкласса, независимо от того, получены ли эти данные из таблицы суперкласса или таблицы подклассов.

...