Принятие решения по внешнему ключу при реализации отношений один к одному в 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 это все равно не будет истинным отношением "один-к-одному" , потому что отложенные ключи там не поддерживаются.