Принятие решения по внешнему ключу при реализации отношений один к одному в MySQL
У меня есть две простые таблицы "items" и "orders". Для простоты предположим, что один элемент может быть только в одном порядке или один заказ может содержать только один элемент.
Теперь, поскольку это может быть реализовано с использованием простых отношений один к одному, я могу сделать следующее:
Я могу добавить первичный ключ таблицы заказов в таблицу элементов, как показано ниже
//Table Items
item_id, item_name, order_id
1, shoes, 1
2, watch, 2
//Table Orders
order_id, customer
1, James
2, Rick
или я могу добавить первичный ключ таблицы элементов в таблицу заказов, как показано ниже
//Table Items
item_id, item_name
1, shoes
2, watch
//Table Orders
order_id, customer, item_id
1, James, 1
2, Rick, 2
Какой из них правильный и почему? Есть ли какие-либо направляющие линии, чтобы решить, к какому ключу идет? Конечно, здравый смысл будет работать в простых примерах, как указано выше, но в сложных примерах, как мы решаем?
Ответы
Ответ 1
Отношения "один-к-одному" должны быть объединены просто в одну таблицу. Если нет противоречий, отношения "один-к-одному" могут быть признаком нерассмотренного решения.
И если вы действительно хотите использовать такие отношения, это полностью зависит от вас, где разместить FK. Возможно, вы захотите учитывать опциональность при применении FK. Однако в MySQL это все равно не будет истинным отношением "один-к-одному" , потому что отложенные ключи там не поддерживаются.