Почему отказ от составных ключей в пользу всех таблиц с использованием одного первичного ключа с именем id? Потому что вообще все ORM следуют этому.Почему единственный первичный ключ лучше составных?
EDIT
Я только начал изучать рубин на рельсах и в книге быстрой разработки прагматическими есть строка: --- Rails действительно не работает слишком хорошо, если каждая таблица не имеет числовой основной ключ. Менее суетливое название столбца. То же самое, что я читал, когда учил Учение.
EDIT2 Также проверьте эту ссылку. Я получаю все больше и больше запутывается об этой вещи: --- Composite primary keys versus unique object ID field
Из приведенной выше ссылке: -
* первичный ключ должен быть постоянным и бессмысленным; не суррогатные ключи обычно выходят из строя один или оба требования, в конце концов
Если ключ не является постоянным, у вас есть проблема с будущим обновлением, которая может стать довольно сложной , если ключ не имеет смысла, тогда он с большей вероятностью изменится, т.е. не быть постоянным; см. выше
Простой, общий пример: таблица предметов инвентаря. Может возникнуть соблазн сделать номер элемента (номер SKU, штрих-код, код части или что-то еще) первичный ключ, но через год все номера позиций меняются, и вы остаетесь с очень грязным обновлением, проблема базы данных ...
EDIT: есть дополнительная проблема, более практичная, чем философская. Во многих случаях вы каким-то образом найдете определенную строку, затем позже обновите ее или снова найдете (или и то, и другое). С составными ключами есть больше данных, чтобы отслеживать и больше ограничений в предложении WHERE для повторного поиска или обновления (или удаления). Также возможно, что один из ключевых сегментов может измениться за это время !. С суррогатный ключ, всегда существует только одно значение, чтобы сохранить (суррогатной ID) и по определению, он не может изменить, что значительно упрощает ситуацию. *
Не могли бы вы привести источники? Я использую как: составные клавиши, так и первичные ключи идентификатора на основе последовательностей. Иногда один из них более уместен, чем другой. – FrustratedWithFormsDesigner
Какой ORM вы используете, кто сторонники всегда используют простые клавиши над составными клавишами? Я никогда не сталкивался с ORM, который не играл хорошо с составными клавишами. Насколько я знаю, нет веских оснований для того, чтобы дать, например, стол соединения - суррогатный ключ. –
@FrustratedWithFormsDesigner @Iain Galloway Я читал это, изучая Доктрину, и теперь я столкнулся с тем же, изучая Ruby на рельсах. Дайте мне знать, если вы хотите точный номер страницы книги, где написана эта строка. Я начинаю, поэтому я спрашиваю о реальной вещи. Не перекрестный вопрос или обсуждение этого. Означает, почему они используют это поле идентификатора. ?? –