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