У нас имеются две сущности у каждой есть первичный ключ. Ме соединяем их идентифицирующей связью один ко многим. Получается в одной из сущностей будет составной первичный ключ состоящий из своего собственного и внешнего. Так вот вопрос если к этой таблицы присоединяем еще одну и опять по идентифицирующей связи один ко многим. То в третей таблицы первичный ключ будет состоять из трех? Или из двух? Просто MySQL Workbeanch делает 3. Может можно один удалить или он обязателен? Я оставляю всегда два - это ошибка? Добавлено спустя 20 минут: к примеру есть сущность "клиенты" вторая "заказы" третья "товары в заказе". Связи расставлены везде идентифицирующие. Клиенты ( один ко многим ) Заказы. Заказы ( один ко многим ) Товары в заказе. Первичные ключи сущностей без связей ( id клиента, id заказка ,id товар в заказе). Получаеться судя по MySQL Workbeanch мне нужно делать. Первичные ключи Клиенты ( id клиента ) Заказы ( id заказа, id клиента ) Товары в заказе ( id товар в заказе id заказа, id клиента ) Просто я не понимаю зачем хранить id клиента в первичном ключе последней сущности. Если я ее могу запросом выбрать. А что если еще дальше будут связи там все в первичных ключах будет?
с чего ты это взял? либо ты не понимаешь что такое первичный ключ, либо шайтан-машина что-то делает неправильно. кто у вас главный? ))) "Товары в заказе", насколько я понимаю, это реализация связи многие-ко-многим. тот случай когда реально необходим составной ключ (id_order, id_product). а id_client в этом ключе лишний! то есть отдельно эту избыточность можно оставить для удобства каких-то выборок. но он не должен быть частью первичного или уникального ключа!
Ну, это в зависимости от того, как организовано хранение товаров. Если у каждого товара есть уникальный ID (в системе Magento его называют SKU), т.е. у двух одинаковых пылесосов разные SKU - то можно обойтись связью "один ко многим" (один заказ ко многим товарам). И там в каждой таблице хватит одного поля на ключ (id клиента в клиентах, id заказа в заказах, SKU в товарах).