Sql, называющий лучшую практику

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

Я называю таблицу Users, и я не совсем уверен в том, как назвать участников.

user_id очевидный, но интересно, должен ли я снабдить префиксом все другие поля "пользователя _" или нет.

user_name user_age

или просто имя и возраст, и т.д...

8
задан KdgDev 25 July 2010 в 05:30
поделиться

9 ответов

подобные префиксы бессмысленны, если только у вас нет чего-то более произвольного, например двух адресов. Тогда вы можете использовать адрес_1, адрес_2, адрес_дома и т.д.

То же самое с телефонными номерами.

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

Просто чтобы показать вам. Если бы вы поставили префикс для всех этих полей, ваши запросы могли бы выглядеть так

SELECT users.user_id FROM users WHERE users.user_name = "Jim"

В то время как они могли бы выглядеть так

SELECT id FROM users WHERE username = "Jim"
9
ответ дан 5 December 2019 в 06:36
поделиться

Для имен таблиц я обычно использую существительные во множественном числе (или фразы существительных), как вы.

Для имен столбцов я бы не использовал имя таблицы в качестве префикса. Сама таблица определяет контекст колонки.

2
ответ дан 5 December 2019 в 06:36
поделиться

table users (plural):

  • id
  • name
  • age

plain and simple.

1
ответ дан 5 December 2019 в 06:36
поделиться

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

По возможности используйте имена, которые имеют смысл и не являются сокращенными, если только используемый вами механизм хранения не работает с ними хорошо.

В отношениях мне нравится использовать Id для первичного ключа и [имя_таблицы]_Id для внешнего ключа. Например, Order.Id и OrderItem.OrderId

Id хорошо работает, если в качестве первичного ключа используется суррогатный ключ.

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

Edit: Кроме того, существует теория, согласно которой таблица должна называться в честь того, что должна представлять собой одна запись в этой таблице. Так, название таблицы "User" вместо "Users" - лично для меня множественное число имеет больше смысла, просто соблюдайте последовательность.

0
ответ дан 5 December 2019 в 06:36
поделиться

Как показывают другие ответы, это личное предпочтение - выбрать определенную схему именования и придерживаться ее.
Около 10 лет назад я работал с Oracle Designer, и он использует схему именования, которую я люблю и использую с тех пор:

  • имена таблиц имеют множественное число - суррогатный первичный ключ USERS
  • именуется в единственном числе от имени таблицы плюс '_id' - первичный ключ для таблицы USERS будет "USER_ID". Таким образом, у вас будет согласованное именование, когда вы используете поле «USER_ID» в качестве внешнего ключа в некоторых других именах столбцов таблицы
  • , которые не имеют имени таблицы в качестве префикса.

Необязательно:

  • в базах данных с большим количеством таблиц (интерпретируйте "большой" как считаете нужным) используйте 2-3 префиксы таблиц символов, чтобы вы могли логически разделить таблицы на области. Например: все таблицы, содержащие данные о продажах (счета-фактуры, позиции счетов-фактур, статьи), имеют префикс «INV_», все таблицы, содержащие данные о человеческих ресурсах, имеют префикс «HR_». Таким образом, легче найти и отсортировать таблицы, содержащие связанные данные (это также можно сделать, разместив таблицы в разных схемах и установив соответствующие права доступа, но это усложняется, когда вам нужно создать более одной базы данных на одном сервере)

Опять же, выберите схему именования, которая вам нравится, и будьте последовательны.

3
ответ дан 5 December 2019 в 06:36
поделиться

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

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

Что-то не очень хорошо известно, так это то, что SQL поддерживает краткий синтаксис соединения с использованием ключевого слова USING :

CREATE TABLE users (user_id int, first_name varchar(50), last_name varchar(50));
CREATE TABLE sales (sale_id int, purchase_date datetime, user_id int);

Затем следующий запрос:

SELECT s.*, u.last_name FROM sales s JOIN users u USING (user_id);

эквивалентен более подробному и популярному синтаксису соединения :

SELECT s.*, u.last_name FROM sales s JOIN users u ON (u.user_id = s.user_id);

1 Это не всегда возможно. Типичным примером является поле user_id в таблице users и поля report_by и assign_to в ссылочной таблице, которые оба ссылаются на пользователей таблица. Использование поля user_id в таких ситуациях неоднозначно и невозможно для одного из полей.

6
ответ дан 5 December 2019 в 06:36
поделиться

Во-первых, я бы предложил использовать существительное в единственном числе, т.е. user вместо users, хотя это скорее личное предпочтение.

Во-вторых, есть те, кто предпочитает всегда называть столбец первичного ключа id, вместо user_id (т.е. имя таблицы + id), и аналогично, например, name вместо employee_name. Я думаю, что это плохая идея по следующей причине:

-- when every table has an "id" (or "name") column, you get duplicate column names in the output:
select e.id, e.name, d.id, d.name
from employee e, department d
where e.department_id = d.id

-- to avoid this, you need to specify column aliases every time you query:
select e.id employee_id, e.name employee_name, d.id department_id, d.name department_name
from employee e, department d
where e.department_id = d.id

-- if the column name includes the table, there are no conflicts, and the join condition is very clear
select e.employee_id, e.employee_name, d.department_id, d.department_name
from employee e, department d
where e.department_id = d.department_id

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

0
ответ дан 5 December 2019 в 06:36
поделиться

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

2
ответ дан 5 December 2019 в 06:36
поделиться

Рассматривайте его как сущность и называйте поля соответственно

Я бы предложил таблицу User с такими полями, как id, имя, возраст и т. д.

Группа записей - это совокупность пользователей, а группа полей представляет пользователя.

Таким образом, в итоге вы ссылаетесь на user.id, user.name, user.age (хотя вы не всегда будете включать имя таблицы, в зависимости от запроса).

2
ответ дан 5 December 2019 в 06:36
поделиться
Другие вопросы по тегам:

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