Лучшая практика для позиции столбца внешнего ключа в таблице - PullRequest
6 голосов
/ 06 июля 2010

Это может быть глупый вопрос, но здесь идет речь:

Существует ли стандарт или передовой опыт, который указывает, в каком порядке должны быть столбцы внешнего ключа в таблице?

Мне нравится идея, что PK - это самый первый столбец в таблице, за которым следуют все внешние ключи, а затем столбцы, относящиеся к этой таблице.

Другой способдля этого нужно иметь PK в качестве самого первого столбца, затем все вспомогательные столбцы, а затем все внешние ключи ...

Я думаю, это действительно не имеет значения, но я хотел бы получить стандартпо всей моей организации за это ...

Ответы [ 6 ]

3 голосов
/ 06 июля 2010

Неважно, я думаю, что самое главное, как вы называете столбцы.Обеспечение того, чтобы все внешние ключи следовали некоторому соглашению, облегчит вашу жизнь при разработке.

например, добавление суффикса _fk ко всем внешним ключам или чего-то подобного.

Таким образом, Vehicle_id становится vehice_id_fk при использовании.в качестве внешнего ключа.

2 голосов
/ 06 июля 2010

Порядок столбцов внешнего ключа в таблице не является и не должен быть релевантным. Лучший стандарт, который я видел (который со временем, естественно, ухудшается):

  1. Столбцы первичного ключа
  2. NOT NULL столбцы, которые имеют «фиксированную» длину и вряд ли изменятся.
  3. NOT NULL столбцы, которые могут быть заполнены с помощью обновления
  4. NULLable столбцы, которые могут быть заполнены с помощью обновления
  5. Столбцы, обнуляемые или нет, которые почти всегда меняются. (Вспомните столбец MOD_TIMESTAMP, который используется для оптимистической блокировки без сохранения состояния.)

Целью такой реализации является количество необходимых журналов при обновлении.

С точки зрения представления, достойный инструмент ERD должен представлять ссылки на внешние ключи как на уровне столбцов, так и на уровне строк.

Кроме того, я бы не последовал совету, который видел ранее - например, VEHICLE_ID_FK. Просто поместите VEHICLE_ID в дочернюю таблицу таблицы VEHICLE и продолжайте. Если вам нужно несколько столбцов VEHICLE_ID, введите их соответствующим образом, например COPS_VEHICLE_ID и ROBBERS_VEHICLE_ID.

2 голосов
/ 06 июля 2010

Договорились с ДХО.Соглашение, основанное на упорядочении столбцов, будет трудно поддерживать по мере добавления новых столбцов.Кроме того, большинство клиентов БД смогут предоставить вам список столбцов и их обозначений (PK, FK и т. Д.).

2 голосов
/ 06 июля 2010

Там, где я работал, я сначала увидел PK, затем внешние ключи, затем данные. Но ДХО прав; это не важно Порядок, в котором вы указываете многостолбцовые индексы, имеет решающее значение, но не порядок, в котором вы указываете столбцы в таблице. Если вы добавите к именам столбцов внешнего ключа _fk, _key или _id или аналогичное соглашение, это сэкономит время вам и вашим преемникам.

1 голос
/ 06 июля 2010

Лучше не иметь такого правила, я бы предложил.«Правила для дураков».

Что бы произошло, если бы вы ввели такое правило и кто-то захотел добавить новый ключ?Или добавить новый столбец к существующему ключу?Они должны переставить все колонки, чтобы сделать это?Я не вижу, что вы получите от этого.

В идеале ваши столбцы должны быть названы, чтобы было ясно, что в них.Это нелегко, и немного дополнительной мысли окупится в долгосрочной перспективе.

1 голос
/ 06 июля 2010

Интересная идея, но лично я думаю, что наличие «стандарта во всей моей организации» для этого принесет больше вреда, чем пользы.

Обучение и лучшие практики звучат хорошо, но слепо применяемое правило «считается вредным».».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...