Мой вопрос заключается в том, как узнать из схемы SQL-DDL, что отношение является «один к одному» или «многие ко многим» или «один ко многим»?Как узнать мощности из схемы SQL-DDL?
Спасибо,
Мой вопрос заключается в том, как узнать из схемы SQL-DDL, что отношение является «один к одному» или «многие ко многим» или «один ко многим»?Как узнать мощности из схемы SQL-DDL?
Спасибо,
Отношение один к одному будет иметь первичный ключ или ограничение уникальности на обоих концах.
Отношение «один ко многим» будет иметь первичный ключ или уникальное ограничение только на одном из двух концов.
Отношение «многие ко многим» будет иметь третью таблицу с неповторимыми внешними ключами для двух других таблиц. (Которые вместе будут составлять первичный ключ для этой таблицы.)
«один-к-одному» также может означать «один-к-одному» или «один-к-одному»), просто строка «один-ко-многим» также может означать «один-к-одному» или «нуль-много», ,Невозможно вычесть это из модели –
Только если у вас есть внешние ключи, чтобы связать сущностям
1:x..y
отношения где х 0 или 1, у 1 до Nтаблица ссылки для реализации N: N будет иметь два таких отношений
Это видно на диаграмме базы данных, которую вы можете создавать из встроенных или сторонних инструментов. Примеры:
Я не думаю, что утверждение 'NOT NULL означает x = 1' истинно. Потому что, если у вас нет строки в «дочерней» таблице, у вас действительно есть соотношение 1: 0. «Истинное» отношение 1: 1 (или 1: n с n> 0) не может быть принудительно применено с регулярными ограничениями SQL (по крайней мере, я не могу придумать способ) –
@a_horse_with_no_name: true. Плохая формулировка. Я основывал это на http://en.wikipedia.org/wiki/Cardinality_%28data_modeling%29. Обновлено – gbn
Вы не можете прочитать их непосредственно из схемы. Однако, если вы предполагаете, что автор схемы был очень тщательным при реализации ссылочной целостности, вы можете сделать некоторые выводы. Например:
NB: Те же выводы также могут быть сделаны, если внешний ключ указал на уникальное ограничение вместо первичного ключа.
"* в противном случае оно имеет минимальное значение одного *". Это неправда. У вас может быть столбец NOT NULL и все еще есть «один-к-одному» (не вставляя строку в связанную таблицу) –
@a_horse_with_no_name: Хорошо, я обновил свой ответ. –
SQL Server или другой? Какие инструменты вы используете, если не SSMS для SQL Server? – gbn