Гость
Map
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как правильнее выбирать имена атрибутов? / 25 сообщений из 25, страница 1 из 1
18.04.2021, 09:29
    #40063525
Morskoi_kotik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Здравствуйте! Подскажите, пожалуйста! Я проектирую БД и у меня множество таблиц с одинаковыми наименованиями атрибутов.

например есть таблица customer и в ней есть атрибут name. В то же время есть таблица product и в ней также есть атрибут name.

Я хочу переименовать эти атрибуты в customerName и productName соответственно. Подскажите, целесообразно ли давать такие имена атрибутам? (в т.ч. с учетом регистра). Или нет разницы и можно оставлять просто name? И если в некоторых таблицах будет просто name, а в некоторых, как я писал-customerName? Например, в таблице manager атрибут для имени менеджера останется просто name?
...
Рейтинг: 0 / 0
18.04.2021, 11:53
    #40063550
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Morskoi_kotik,

это хороший вопрос, на который нет однозначного ответа. В принципе, выходит удобнее и надёжнее, когда имя атрибута заодно выступает чем-то вроде имени домена (то есть ты знаешь, что в одинаково называемых полях лежат одинаковые по смыслу данные, в разно называемых - разные. productName - это ведь не то же самое, что customerName, другой смысл данных). Но с другой стороны, если начать последовательно двигаться в эту сторону, в итоге приходишь к тому, что все поля всех таблиц должны содержать префиксом имя таблицы, что уже очевидная нелепость. Простые имена удобны тем, что они короче, но в результате появляется необходимость во многих запросах снабжать их алиасами - те самые p.name as productName.

В общем, если ставить целью "сделать всё единообразно", то лучше без таких префиксов. А так... стоит пробовать варианты и искать наиболее удачный баланс.
...
Рейтинг: 0 / 0
18.04.2021, 12:29
    #40063552
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Morskoi_kotikПодскажите, целесообразно ли давать такие имена атрибутам?

А ты попробуй. Когда твои запросы приобретут вид "select customer.customerName,
product.productName", "ты всё поймёшь и всё увидишь сам".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
18.04.2021, 12:47
    #40063554
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Дим, а ты всегда пишешь запросы без алиасов таблиц или специально ради автора расстарался?
...
Рейтинг: 0 / 0
18.04.2021, 12:53
    #40063557
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Я пишу запросы без алиасов таблиц когда а) название таблицы однословное; и б) таблица
используется в запросе один раз.

PS: И да я это делаю именно потому, что "customer.name, product.name" читается лучше чем "c.name, p.name" и тем более "c.customerName, p.productName".
Добавить префикс таблицы к имени поля где его нет - SQL позволяет. Оторвать у имени поля зашитый префикс таблицы - нет.
...
Рейтинг: 0 / 0
18.04.2021, 13:01
    #40063558
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Dimitry Sibiryakov
Я пишу запросы без алиасов таблиц когда

Всегда боялся неленивых программистов.
...
Рейтинг: 0 / 0
18.04.2021, 13:15
    #40063560
Morskoi_kotik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Благодарю за ответы! Я, в принципе, уже понял, что хлопотно писать потом все это будет в запросах. Проще алиас поставить.
...
Рейтинг: 0 / 0
18.04.2021, 14:28
    #40063583
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Morskoi_kotik,

Кому проще, кому нет. Мне проще без алиасов. В своё время достаточно повозился с процедурами и встречал, когда для одного поля умудрялись делать по 3 алиаса и потом читать все "это", то еще удовольствие, а еще многие любят сокращать имена таблиц (PZXYZ, PXTYZ) и прочая ахинея по экономию байтов.
Когда сам проектирую, у меня: user_name, user_login, channel_name, никакого дискомфорта в отличии от алиасов на первоначальные имена полей мне это не доставляет (алиасы используются для других вещей). В своё время проводили эксперимент на джуниорах, учет ошибок и времени для понимания процедур, вариант с алиасами и короткие имена проиграли в чистую.
...
Рейтинг: 0 / 0
18.04.2021, 15:00
    #40063588
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
softwarer
А так... стоит пробовать варианты и искать наиболее удачный баланс.


истина где-то тут... ибо неожиданно может нарисоваться вариант, который ни то ни это...

- в product текстовое поле product
- в customer текстовое поле customer
Если есть полные и сокращенные наименования то два поля product1 и product2
В документации для юниоров будет только одно примечание:
- Наименование искать в одноименном с таблицей поле...
Это я так... навеяло сквозняком... форточка открыта...
...
Рейтинг: 0 / 0
18.04.2021, 22:53
    #40063656
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Morskoi_kotik
Подскажите, целесообразно ли давать такие имена атрибутам?

Нет.
...
Рейтинг: 0 / 0
22.04.2021, 10:04
    #40064647
как правильнее выбирать имена атрибутов?
Dimitry Sibiryakov
Я пишу запросы без алиасов таблиц когда а) название таблицы однословное; и б) таблица
используется в запросе один раз.

PS: И да я это делаю именно потому, что "customer.name, product.name" читается лучше чем "c.name, p.name" и тем более "c.customerName, p.productName".
Добавить префикс таблицы к имени поля где его нет - SQL позволяет. Оторвать у имени поля зашитый префикс таблицы - нет.
Я использую компромиссный вариант:

Алиасы использую всегда, но, сокращаю до одного символа крайне редко и только для часто используемых в запросах таблиц, при условии, если это сокращение используется во всех запросах системы. Обычно алиасы у меня состоят из 3-4 символов. Например, есть у меня таблица "job". Везде в запросах для неё применяется алиас "j". Ни для какой другой таблицы этот алиас не используется. А в данном примере я напишу:
Код: sql
1.
SELECT cust.name FROM customer cust;
...
Рейтинг: 0 / 0
22.04.2021, 14:21
    #40064744
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Ведущий профессионал,

Выбрать имя таможни или "Наименование кастомного значения" ?
...
Рейтинг: 0 / 0
22.04.2021, 15:15
    #40064772
как правильнее выбирать имена атрибутов?
Bsplesk
Ведущий профессионал,

Выбрать имя таможни или "Наименование кастомного значения" ?
Идёте во FROM и смотрите, к какой таблице этот алиас относится. Если таблица custom_value, то алиас у меня будет cstv, например. Использование алиасов позволяет выбирать длинные и понятные имена таблиц. При этом оставляя компактным код, не растягивая его на сотни строк.
...
Рейтинг: 0 / 0
22.04.2021, 19:17
    #40064888
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Ведущий профессионал,

авторИдёте во FROM

Вот как раз об этом, что никакой понятности "cstv" (tvsv, vvtv ... etc), кроме как для автора, да и то пока он помнит, не несет, а только путает. Все равно идти во "from" и если табличек много (допустим с 10) и запрос/процедура не умещается на одном экране, то и "выписывать на листочек" приходится, что там сокращал автор.
Многим гораздо проще, когда таблица названа так, как она названа в БД.
...
Рейтинг: 0 / 0
22.04.2021, 19:36
    #40064900
как правильнее выбирать имена атрибутов?
Bsplesk
Ведущий профессионал,

авторИдёте во FROM


Вот как раз об этом, что никакой понятности "cstv" (tvsv, vvtv ... etc), кроме как для автора, да и то пока он помнит, не несет, а только путает. Все равно идти во "from" и если табличек много (допустим с 10) и запрос/процедура не умещается на одном экране, то и "выписывать на листочек" приходится, что там сокращал автор.
Многим гораздо проще, когда таблица названа так, как она названа в БД.Всё уже выписано на листочек:
Код: sql
1.
2.
3.
4.
FROM
	job j
	JOIN customer cst ON cst.job = j.job
	JOIN customer_value cstv ON cstv.customer_id = cst.id



Может, у Вас потому и не умещается на экране как по вертикали, так и по горизонтали, что графоманством злоупотребляете. У меня названия таблиц могут 30 символов занимать, чтобы понятнее. А вот для алиасов 3-4 символа хватает.
...
Рейтинг: 0 / 0
22.04.2021, 20:09
    #40064910
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Bsplesk
Многим гораздо проще, когда таблица названа так, как она названа в БД.

По моим наблюдениям, неиспользование алиасов и "таблица названа так, как в БД" - верный признак новичка, который довольно быстро проходит. Оно слишком уж тесно связано с

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

P.S. Ок, не "новичка", а "человека, который мало и редко работает с SQL". В каких-то других областях он вполне может быть опытен и хорош.
...
Рейтинг: 0 / 0
22.04.2021, 20:58
    #40064921
s_ustinov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
softwarer

в) отсутствием потребности джойнить одну и ту же таблицу несколько раз.


Прямо сейчас переделывал отчет с 25 левыми джойнами одной и той же таблицы...
...
Рейтинг: 0 / 0
22.04.2021, 21:53
    #40064930
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
softwarer,

Именно новичка, всё верно. Новички они такие.
magento


wordpress
...
Рейтинг: 0 / 0
22.04.2021, 22:28
    #40064938
как правильнее выбирать имена атрибутов?
softwarer
в) отсутствием потребности джойнить одну и ту же таблицу несколько раз.
Угу. Например, надо обрабатывать пронумерованные записи с учётом предыдущей записи:
Код: sql
1.
2.
3.
FROM
	WareHouseTransactionStatisticsByDepartment curr
	LEFT JOIN WareHouseTransactionStatisticsByDepartment prev ON prev.OperationNumber = curr.OperationNumber - 1



Несмотря на сокращения алиаса до 4 символов, смысл совершенно прозрачен.
...
Рейтинг: 0 / 0
22.04.2021, 23:04
    #40064956
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Ведущий профессионал,

Почему не называть более осмысленно?

Код: plsql
1.
2.
3.
4.
5.
with curr as (
select * from users limit 10
)
select * from curr prev
left join users curr ON prev.user_id = curr.user_id - 1;
...
Рейтинг: 0 / 0
23.04.2021, 09:34
    #40065051
Bsplesk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Пример выше условный и им хотел показать рано или поздно ваши сокращения (один - два - даже четыре символа) в рамках запроса/процедуры могут начать обозначать совершенно разные вещи и из-за этого будет страдать читаемость запроса и появляться трудно выявляемые, логические ошибки (запрос отрабатывает, синтаксически корректен, но возвращает не то, что нужно). Если с запросами на "10 строк" вопросов обычно не возникает, то как только запрос/процедура становится строк так 50-100, тут и начинается веселье (особенно если первоначальные название сразу без особой надобности сократили, как p1, p2, c4,cc2, pp7).
Для вас curr - это текущая запись, а для кого-то это будет валюта curr (currency).
Поэтому и не вижу смысла в этих сокращениях - что мешает написать, хотябы current?
...
Рейтинг: 0 / 0
23.04.2021, 11:23
    #40065110
как правильнее выбирать имена атрибутов?
Bsplesk
Пример выше условный и им хотел показать рано или поздно ваши сокращения (один - два - даже четыре символа) в рамках запроса/процедуры могут начать обозначать совершенно разные вещи и из-за этого будет страдать читаемость запроса и появляться трудно выявляемые, логические ошибки (запрос отрабатывает, синтаксически корректен, но возвращает не то, что нужно). Если с запросами на "10 строк" вопросов обычно не возникает, то как только запрос/процедура становится строк так 50-100, тут и начинается веселье (особенно если первоначальные название сразу без особой надобности сократили, как p1, p2, c4,cc2, pp7).
Для вас curr - это текущая запись, а для кого-то это будет валюта curr (currency).
Поэтому и не вижу смысла в этих сокращениях - что мешает написать, хотябы current?
Зависит от контекста. Если по смыслу задачи тут нет финансовых расчётов, то и валюты появиться не может.
...
Рейтинг: 0 / 0
23.04.2021, 18:14
    #40065321
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
Осмысленность сокращений - это отдельный вопрос, который крайне существенно зависит от конкретики. У меня, например, был проект, где одним из типовых сокращений было dsc, причём оно принципиально отличалось от другого, столь же типового ds_c (а также от ds и от dsc_c). И никто проблем не испытывал, все мгновенно понимали, о чём речь - именно потому, что сокращения были выбраны удачно.
...
Рейтинг: 0 / 0
23.04.2021, 19:26
    #40065344
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
softwarer
В принципе, выходит удобнее и надёжнее, когда имя атрибута заодно выступает чем-то вроде имени домена (то есть ты знаешь, что в одинаково называемых полях лежат одинаковые по смыслу данные, в разно называемых - разные. productName - это ведь не то же самое, что customerName, другой смысл данных).

Просто считай, что таблица это неймспейс для домена. И, кстати, еще ведь могут быть разные схемы или вообще разные БД - не включать же их тоже в названия артефактов из соображения, что "Customer" в схеме "Bank" это не то же самое, что "Customer" в схеме "Shop". А те же алиасы ты ведь тоже не называешь t1, t2, t3, наверняка, т.ч. проблем с этим не должно быть.
...
Рейтинг: 0 / 0
23.04.2021, 19:28
    #40065345
fkthat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
как правильнее выбирать имена атрибутов?
softwarer
Осмысленность сокращений - это отдельный вопрос, который крайне существенно зависит от конкретики.

Если в запросе не больше трех-четырех таблиц, то алиасы можно хоть до первой буквы сокращать - проблем никаких нет.
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как правильнее выбирать имена атрибутов? / 25 сообщений из 25, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]