Исходя из этого с точки зрения формального словаря данных, я бы назвал элемент данных invoice_ID
. Как правило, имя элемента данных будет уникальным в словаре данных и в идеале должно иметь одно и то же имя, хотя иногда могут потребоваться дополнительные уточняющие термины на основе контекста, например элемент данных с именем employee_ID
может использоваться дважды в оргструктуре и поэтому квалифицируется как supervisor_employee_ID
и subordinate_employee_ID
соответственно.
Очевидно, что соглашения о присвоении имен носят субъективный характер и зависят от стиля. Я считаю, что руководящие указания ISO / IEC 11179 являются полезной отправной точкой.
Для СУБД я рассматриваю таблицы как наборы объектов (кроме тех, которые когда-либо содержат только одну строку, например, таблицу cofig, таблицу констант и т. Д.), Например. таблица, где мой employee_ID
является ключом, будет называться Personnel
. Так что сразу соглашение TableNameID
не работает для меня.
Я видел стиль TableName.ID=PK TableNameID=FK
, используемый в больших моделях данных, и должен сказать, что он немного сбивает с толку: я предпочитаю, чтобы имя идентификатора было одинаковым во всем, то есть не меняло имя в зависимости от того, в какой таблице оно появляется в. Следует отметить, что вышеупомянутый стиль, кажется, используется в магазинах, которые добавляют столбец IDENTITY
(автоинкремент) к каждой таблице , в то же время избегая использования натуральных и составных ключей во внешних ключах. Эти магазины, как правило, не имеют формальных словарей данных и не строят из моделей данных. Опять же, это просто вопрос стиля, на который я лично не согласен. Так что, в конечном счете, это не для меня.
После всего этого я вижу случай, когда иногда удаляют классификатор из имени столбца, когда имя таблицы предоставляет контекст для этого, например. элемент с именем employee_last_name
может стать просто last_name
в таблице Personnel
. Обоснование здесь заключается в том, что доменом являются «фамилии людей», и он, скорее всего, будет UNION
редактироваться с last_name
столбцами из других таблиц, а не использоваться в качестве внешнего ключа в другой стол, но опять же ... Я мог бы просто передумать, иногда ты никогда не сможешь сказать. Вот в чем дело: моделирование данных - это отчасти искусство, отчасти наука.