Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];

Вниз

Как лучше называть ключевое (и не только) поля таблиц?   Найти похожие ветки 

 
Бездомный   (2011-10-27 15:37) [0]

Например, таблица пользователей, как лучше:

id,
name,
email,
...

или

user_id,
name,
email,
...

или

user_id,
user_name,
user_email,
...


 
Ega23 ©   (2011-10-27 15:38) [1]

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


 
И. Павел ©   (2011-10-27 15:40) [2]

ИМХО, первый вариант самый удобный. третий вариант вообще не встречал и не понятно - зачем он. Поля с именами типа user_id я использую для вторичных ключей, чтобы было ясно, в какой таблице лежит первичный.


 
Медвежонок Пятачок ©   (2011-10-27 15:41) [3]

ИМХО, первый вариант самый удобный.

особенно удобно когда в объединении сто таблиц и в каждой есть понятное и удобное поле "name"


 
Ega23 ©   (2011-10-27 15:41) [4]


> ИМХО, первый вариант самый удобный. третий вариант вообще
> не встречал и не понятно - зачем он. Поля с именами типа
> user_id я использую для вторичных ключей, чтобы было ясно,
>  в какой таблице лежит первичный.


Встречал все три + ещё парочку.


 
Ega23 ©   (2011-10-27 15:42) [5]


> особенно удобно когда в объединении сто таблиц и в каждой
> есть понятное и удобное поле "name"


С другой стороны, для ORM весьма удобно.


 
Омлет ©   (2011-10-27 15:45) [6]

> Медвежонок Пятачок ©   (27.10.11 15:41) [3]

И что? В каждой таблице есть id, никто не плачет.


 
Медвежонок Пятачок ©   (2011-10-27 15:47) [7]

у меня нет id ни в одной таблице. и тоже никто не плачет.


 
Медвежонок Пятачок ©   (2011-10-27 15:48) [8]

никто не плачет.


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


 
Омлет ©   (2011-10-27 16:01) [9]

> Медвежонок Пятачок ©   (27.10.11 15:47) [7]
> и тоже никто не плачет.


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


 
Медвежонок Пятачок ©   (2011-10-27 16:07) [10]

Им не надо вспоминать, так как в имени поля стоит префикс напоминающий к какой таблице поле принадлежит


 
Anatoly Podgoretsky ©   (2011-10-27 16:10) [11]

> Бездомный  (27.10.2011 15:37:00)  [0]

А что больше нравится?


 
Anatoly Podgoretsky ©   (2011-10-27 16:10) [12]

> Медвежонок Пятачок  (27.10.2011 15:41:03)  [3]

Про псевдонимы слышал?


 
Медвежонок Пятачок ©   (2011-10-27 16:14) [13]

не, не слышал, но видел в кино. давно правда.


 
Inovet ©   (2011-10-27 16:17) [14]

> [13] Медвежонок Пятачок ©   (27.10.11 16:14)
> не, не слышал, но видел в кино. давно правда.

В уино было про чужих.


 
Компромисс   (2011-10-27 18:58) [15]

Третий вариант хуже первого, так как первый вариант может полностью заменить третий, но не наоборот. Замена осуществляется путем замены первого символа "_"  в каждом слове на ".".
То есть вместо
select user_id, category_name
 from user,
      category,
 where user_category_id = category_id

путем замены получаем
select user.id, category.name
 from user,
      category,
 where user.category_id = category.id


Первый вариант лучше, потому что он позволяет избегать ненужных префиксов таблицы к запросам к одной таблицы.
То есть
select id,
      name
 from user

лучше, чем
select user_id,
      user_name
 from user


 
Jeer ©   (2011-10-27 19:58) [16]

Практически всегда третий вариант.
СУБД бывают разные, слегка разнятся диалекты, а третий вариант работает всегда.


 
Kerk ©   (2011-10-27 20:40) [17]

3 удобнее


 
Sergey Masloff   (2011-10-27 20:41) [18]


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

Так вообще большинство делает имхо правильно


 
Компромисс   (2011-10-28 10:12) [19]

Jeer ©   (27.10.11 19:58) [16]
Kerk ©   (27.10.11 20:40) [17]

как вы таблицы называете?

Если user_accounts и users, то у вас вполне могут быть поля
user_accounts_id и users_account_id.
Как вы определяете, в какой таблице находится поле с 3+ подчеркиваниями?
Например, user_type_account_name? Только по смыслу?

Если вы вместо подчеркивания используете camelcasing типа userAccounts, то не все СУБД поддерживают это.


 
DiamondShark ©   (2011-10-28 21:33) [20]

Удалено модератором


 
DiamondShark ©   (2011-10-28 21:40) [21]

Удалено модератором


 
Компромисс   (2011-10-28 21:44) [22]

Удалено модератором


 
Mystic ©   (2011-10-28 23:11) [23]

В MySQL предпочитаю второй из-за USING, в остальных первый


 
PEAKTOP ©   (2011-10-28 23:44) [24]

а у вас тут весело, гы-гы =)

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

Естественно то, что движок обычно генерирует в качестве SQL-скрипта создания объектов базы данных находится за рамками человеческой логики. Например - посмотрите базу от 1С, где все таблицы имеют имена вроде DH0012, DT0835, SC1200, RA0012 и такие же "информативные" имена полей.

холивар ни о чем.


 
Inovet ©   (2011-10-28 23:59) [25]

> [24] PEAKTOP ©   (28.10.11 23:44)

Ну дык, в этих Адынэсах к ним напрямую и не обращаются.


 
Anatoly Podgoretsky ©   (2011-10-29 09:45) [26]

> PEAKTOP  (28.10.2011 23:44:24)  [24]

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


 
Сусл_   (2011-10-30 01:24) [27]

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


 
Loginov Dmitry ©   (2011-10-30 23:14) [28]


> Например, таблица пользователей, как лучше:


Когда-то давно пользовался только 3-м вариантом, но после знакомства с SQL все больше отдаю предпочтение 1-му. При написании SQL-запросов, особенно с выборкой из большого числа таблиц, очень напрягает постоянно указывать префиксы, тем более алиасы таблиц также приходится использовать. Префиксы применяю только для FK.
Разумеется, с принятыми в фирме стандартами нужно считаться, они приоритетнее личных предпочтений.


 
Kerk ©   (2011-10-30 23:20) [29]


> PEAKTOP ©   (28.10.11 23:44) [24]

Это индусская специфика. Нормальных программистов не касается.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2012.02.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.04 c
3-1272022775
Kobylyansky
2010-04-23 15:39
2012.02.19
Firebird+тип сервера


15-1319773357
Думкин
2011-10-28 07:42
2012.02.19
Задача, пятничное


15-1319888631
flur
2011-10-29 15:43
2012.02.19
comport


15-1317315646
Юрий Зотов
2011-09-29 21:00
2012.02.19
Слетел винт...


15-1319833839
Германн
2011-10-29 00:30
2012.02.19
Кто-нибудь помнит TP 7.0?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский