Как сделать так, чтобы каждый элемент данных в моей схеме базы данных имел уникальное имя?
Я читал о принципе, который гласит следующее: "Каждый отдельный элемент данных должен иметь уникальное имя в схеме вашей базы данных". (Http://bytes.com/topic/sql-server/answers/439341-name-keyword) Как вы применяете это?
Обычная техника заключается в размещении трехзначного сокращения перед значимым именем столбца. Таким образом, Employee.Name становится Emp_Name. Все идет нормально. Однако Employer.Name также должно стать Emp_Name. Итак, я должен придумать загадочную аббревиатуру для работодателя, которая имеет мало смысла. Допустим, "Эмль". И по мере того, как Схема становится больше, все больше и больше усилий должно быть направлено на то, чтобы избежать столкновения.
На мой взгляд, хороший компромисс состоит в том, чтобы всегда использовать разумные префиксы. Таким образом, мы избегаем большинства коллизий без использования неинтуитивных сокращений, таких как "Eml" для работодателя.
1 ответ
Требование, чтобы каждый элемент данных имел уникальное имя, не должно интерпретироваться как каждый столбец с уникальным именем.
В частности, внешние ключи должны иметь одинаковые имена в зависимости от таблицы, на которую они ссылаются. Так, CustomerID
будет означать одно и то же, где бы это ни происходило. Это будет ссылка на первичный ключ к Customer
Таблица. И я бы назвал первичный ключ в таблице CustomerID
хотя иногда я тоже вижу это как ID
,
Есть и другие случаи, когда повторяющиеся имена в порядке. У всех таблиц, которые я создаю, есть метаданные в каждой строке, описывающие, когда и кто создал строку. Они называются CreatedAt
а также CreatedBy
соответственно. Они есть во всех таблицах, но не являются частью логической модели данных.
Другой случай повторяющихся имен, который приходит на ум, - это эффективная дата окончания на медленно меняющихся измерениях. Обычно проще просто назвать эти EffDate
а также EndDate
(или что угодно), а не пытаться сделать их уникальными.
Наконец, я много работаю с использованием методов потока данных, которые включают несколько промежуточных таблиц. Я намеренно сохраняю имена столбцов одинаковыми для целей отслеживания.
Тем не менее, ответ на ваш вопрос заключается в использовании префиксов, связанных с таблицей. Элементы данных, уникальные для этой таблицы, могут иметь короткий префикс, чтобы мы знали, что это такое. Например, Cust_Name
а также Addr_City
разумные имена для имени клиента в таблице клиентов и названия города в таблице адресов.