Рекомендации по именованию столбцов таблицы SQL [закрыто]

18
задан 2 revs, 2 users 100% 19 August 2010 в 20:33
поделиться

16 ответов

Добавление имени столбца к имени таблицы не дает никаких преимуществ и загромождает код. Первый вариант лучше. Только столбец «ID» может иметь преимущество с префиксом, поскольку это, скорее всего, ключ, и, вероятно, есть другие таблицы с тем же столбцом.

27
ответ дан 30 November 2019 в 05:54
поделиться

Первый, без вопросов. Присвоение имени столбцу id Product_id может быть полезно в некоторых случаях (хотя я не могу вспомнить ни одного в данный момент), но в противном случае нет абсолютно никакого смысла повторять имя таблицы в имени каждого столбца. И если вы выберете другую альтернативу, мне стало не нравится _ в именах столбцов, поэтому я бы вместо этого использовал ProductId.

1
ответ дан 30 November 2019 в 05:54
поделиться

Лично я считаю префикс product_ излишним и раздражающим. Однако, в конечном счете, это вопрос личных предпочтений (или консенсуса команды).

1
ответ дан 30 November 2019 в 05:54
поделиться

Я бы только префикс столбца ID (PK) с именем таблицы, так как вы можете иметь согласованные имена столбцов при использовании его в качестве FK в другой таблице. Префикс для других столбцов не нужен.

0
ответ дан 30 November 2019 в 05:54
поделиться

Я бы добавил имя таблицы только для ID, например, product_ID просто из личных предпочтений, а остальное оставил как в первом примере.

0
ответ дан 30 November 2019 в 05:54
поделиться

Я бы выбрал второе. Это не вопрос Don't Repeat Yourself (это не код). Поля продуктов полезны только для продуктов, и ни для чего другого.

См. ISO/IEC 11179 для получения дополнительной информации о том, почему.

1
ответ дан 30 November 2019 в 05:54
поделиться

Преимущество префикса в том, что вы хотите объединить таблицы Например, если у вас есть две таблицы:

  • продуктов
    • id
    • name
    • category_id
  • категории
    • id
    • name

Чтобы иметь возможность получить каждый продукт с соответствующей категорией, вы должны использовать select * from products join категории в category_id = category.name , потому что обе таблицы содержат "name" поле.

Но, если поля будут с префиксом:

  • товаров
    • product_id
    • product_name
    • product_category_id
  • категории
    • category_id
    • category_name

Вы можете просто выбрать * из продуктов, присоединиться к категориям на category_id = category_name

Проблема со вторым способом состоит в том, что имена полей слишком длинные. Чтобы решить эту проблему, я увидел другой способ:

  • товаров
    • p_id
    • p_name
    • p_category_id
  • категории
    • c_id
    • c_name

Таким образом, вы получаете преимущества обоих способов вместе. И короткие поля, и простые соединения.

0
ответ дан 30 November 2019 в 05:54
поделиться

Таблицы

Product
ProductCategory - prefix with underlying table name, could be other categegories

Столбцы

ProductID,      - prefix with a table name
CategoryID,     - note that it's not a ProductCategoryID
Name,
Description,
Photo,
Price

Ключи

PK_Product_ProductID  - primary key
AK_Product_Name       - alternative key (unique column)
FK_Product_CategoryID - foreign key

Индексы

IX_Product_Price
4
ответ дан 30 November 2019 в 05:54
поделиться

Если у меня есть таблица продуктов и таблица клиентов, мой идентификатор становится ProductID и CustomerID соответственно. Я считаю, что это проще, поскольку идентификатор может означать что угодно, особенно если вы пытаетесь вернуть оба в запросе. Но все это вопрос предпочтений.

Но сохранять последовательность - это все, что я могу сказать.

3
ответ дан 30 November 2019 в 05:54
поделиться

Я думаю, что в большинстве случаев первый вариант подойдет, поскольку вам обычно нужно указывать таблицу в запросах. Так что если имя таблицы (или псевдоним) описательное, то такие вещи как product.id будут понятнее, чем product.product_id.

6
ответ дан 30 November 2019 в 05:54
поделиться

Я выбрал первый вариант просто потому, что уже известно, из какой таблицы взяты поля. Кроме того, я буду использовать <имя таблицы> _ <ключевое поле> в других таблицах в качестве имени поля внешнего ключа (например, product_id ).

4
ответ дан 30 November 2019 в 05:54
поделиться

Определенно первое. Второе - нарушение принципа DRY.

11
ответ дан 30 November 2019 в 05:54
поделиться

Я бы выбрал первый вариант, не повторяйте имя таблицы в поле, что произойдет, если имя таблицы изменится?

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

3
ответ дан 30 November 2019 в 05:54
поделиться

Я согласен с теми, кто говорит, что имя таблицы должно быть опущено во всех столбцах, кроме ID.

Если столбец является внешним ключом, то я предпочитаю давать ему то же имя, что и столбцу, на который он ссылается. Это позволяет упростить и облегчить запоминание. Из этого правила есть два исключения. Если несколько внешних ключей ссылаются на один и тот же столбец в одной и той же таблице, то для их различения потребуется какой-то префикс, основанный на их использовании. А если внешний ключ имеет специализированное использование, то ему может понадобиться другое имя (например, ManagerPersonId, а не PersonId).

Это правило об именах внешних ключей поощряет префикс столбца ID к имени таблицы.

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

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

2
ответ дан 30 November 2019 в 05:54
поделиться

Я думаю, это очень важно.

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

Таблица с именем Table1 и филдами:

  • Table1Id
  • Table1Name

Это не имеет смысла, верно?

Однако при использовании внешних ключей поле внешнего ключа должно иметь префикс имени таблицы.

0
ответ дан 30 November 2019 в 05:54
поделиться

Никто не упомянул об этом, поэтому я подумал, что буду - я борюсь с такими вещами, как столбец «имя». Я обнаруживаю, что использую префикс общих столбцов, таких как «имя», потому что это очень неоднозначно. Но я делаю это для удобства чтения, а не в качестве общего правила префикса.

2
ответ дан 30 November 2019 в 05:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: