Подтвердить что ты не робот

Лучшая практика для обозначения столбцов таблицы SQL

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

Допустим, у нас есть таблица продуктов. Какое из следующих наименований вы предпочитаете?

  • идентификатор,
  • имя,
  • Описание
  • фото
  • цена

или

  • product_id,
  • product_name,
  • PRODUCT_DESCRIPTION,
  • product_photo,
  • PRODUCT_PRICE
4b9b3361

Ответ 1

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

Ответ 2

Определенно первый. Во-вторых, это нарушение принципа DRY.

Ответ 3

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

Ответ 4

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

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

Ответ 5

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

Ответ 6

Таблица

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

Столбцы

ProductID,      - prefix with a table name
CategoryID,     - note that it 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

Ответ 7

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

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

Ответ 8

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

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

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

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

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

Ответ 9

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

Ответ 10

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

Ответ 11

Я бы пошел со вторым. Это не вопрос "Не повторяй себя" (это не код). Поля продуктов полезны только с продуктами, и ничего больше.

См. ISO/IEC 11179 для получения дополнительных идей.

Ответ 12

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

Ответ 13

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

Ответ 14

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

Ответ 15

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

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

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

  • Table1Id
  • Table1Name

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

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

Ответ 16

Мы называем столбцы первой буквой имени таблицы, подчеркивания и самого столбца. например, в таблице blog_msgs мы используем m_id, m_blog, m_title, m_content и в таблице блогов мы называем b_id, b_title, b_author.

Это хорошо из-за этого, этот метод является коротким, и вы можете отличаться между заголовком блога и заголовком сообщения первым письмом, название блога - b_title, а заголовок сообщения в блоге - m_title (m для сообщения).