моделирование отношения «один к одному» в базе данных - это то же самое, что моделирование «наследования»? - PullRequest
0 голосов
/ 16 августа 2010

Мне было интересно, есть ли разница между моделированием отношения «один к одному» и отношения наследования (Table-Per-Type). В обоих случаях мы добавляем первичный ключ с ограничением UNIQUE, или иногда FK является частьюPK

Мне кажется, что структура таблицы одинакова, но, возможно, я что-то упускаю.

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 16 августа 2010

Есть несколько вариантов этого. Вот некоторые: - Предположим, A может существовать только с B, а B может существовать только с A. Тогда отношение один к одному. - Предположим, что A может существовать один, а B может расширять его, но B не может существовать один. Тогда отношения - это наследство. - Предположим, А не может существовать один, но он может существовать либо с В, либо с. Тогда это наследство.

1 голос
/ 16 августа 2010

Это просто переписывание ответов других, но я всегда говорю, что разница не в структуре таблицы (которая на самом деле одинакова), а в ограничении количества элементов внешнего ключа:

  • в обоих случаях у вас есть таблица T1 с внешним ключом F, «указывающим на» (т. Е. Содержащим значения из) ключа P другой таблицы, T2;
  • в обоих случаях каждый F указывает на различную P (P и F оба УНИКАЛЬНЫ);
  • в обоих случаях каждый F фактически указывает на P (P и F оба не равны NULL);
  • в случае наследования не каждый P всегда встречается как значение F;
  • в случае однозначного соответствия, каждый P всегда встречается как значение F.
1 голос
/ 16 августа 2010

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

...