Самое большое различие заключается в том, что с общим ключом сопоставление "один к одному" 2 объекта связаны друг с другом, они существуют вместе.
f.e. если вы создадите класс Person и Address , которые связаны с таблицами с одинаковыми именами, у каждого пользователя будет ровно один адрес ...
- класс Person -> свойства: адрес
- таблица Person -> столбцы: id, имя
- Адрес таблицы -> столбцы: id, город
При много-к-одному структура таблицы немного меняется, но тот же эффект может быть достигнут ...
- класс Person -> свойства: адрес
- таблица Person -> столбцы: идентификатор, имя,
addressid (fk)
- Адрес таблицы -> столбцы: id,
город
... но даже больше. Теперь этот человек может иметь несколько адресов:
- класс Person -> свойства: адрес
- таблица Person -> столбцы: идентификатор, имя,
addressid (fk), shippingaddressid (fk)
- Адрес таблицы -> столбцы: id,
город
Два внешних ключа (addressid и shippingaddressid) могут указывать на одну запись в БД ... или один адрес может принадлежать 2-3 лицам. так что, что многие-к-одному со стороны человека, это одно-ко-многим со стороны адреса.
и просто догадайтесь, как выглядит связь один-ко-многим только с одним предметом? Да, как один-на-один ...
ПРИМЕЧАНИЕ: адрес на самом деле должен быть объектом значения , не должен совместно использоваться в БД (так что это глупый пример, но я думаю, что это будет нормально).
Короче говоря:
- в ИЛИ сопоставлении один-к-одному сложнее справиться
- у каждого есть свои ограничения
- вместо того, чтобы использовать множество к одному, более гибко, и того же можно достичь с помощью