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

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

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

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

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

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

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

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

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


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

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

Нет.
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #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
как правильнее выбирать имена атрибутов?
    #40064744
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ведущий профессионал,

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

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

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

Вот как раз об этом, что никакой понятности "cstv" (tvsv, vvtv ... etc), кроме как для автора, да и то пока он помнит, не несет, а только путает. Все равно идти во "from" и если табличек много (допустим с 10) и запрос/процедура не умещается на одном экране, то и "выписывать на листочек" приходится, что там сокращал автор.
Многим гораздо проще, когда таблица названа так, как она названа в БД.
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #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
как правильнее выбирать имена атрибутов?
    #40064910
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bsplesk
Многим гораздо проще, когда таблица названа так, как она названа в БД.

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

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

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

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


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

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


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



Несмотря на сокращения алиаса до 4 символов, смысл совершенно прозрачен.
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #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
как правильнее выбирать имена атрибутов?
    #40065051
Bsplesk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пример выше условный и им хотел показать рано или поздно ваши сокращения (один - два - даже четыре символа) в рамках запроса/процедуры могут начать обозначать совершенно разные вещи и из-за этого будет страдать читаемость запроса и появляться трудно выявляемые, логические ошибки (запрос отрабатывает, синтаксически корректен, но возвращает не то, что нужно). Если с запросами на "10 строк" вопросов обычно не возникает, то как только запрос/процедура становится строк так 50-100, тут и начинается веселье (особенно если первоначальные название сразу без особой надобности сократили, как p1, p2, c4,cc2, pp7).
Для вас curr - это текущая запись, а для кого-то это будет валюта curr (currency).
Поэтому и не вижу смысла в этих сокращениях - что мешает написать, хотябы current?
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #40065110
Bsplesk
Пример выше условный и им хотел показать рано или поздно ваши сокращения (один - два - даже четыре символа) в рамках запроса/процедуры могут начать обозначать совершенно разные вещи и из-за этого будет страдать читаемость запроса и появляться трудно выявляемые, логические ошибки (запрос отрабатывает, синтаксически корректен, но возвращает не то, что нужно). Если с запросами на "10 строк" вопросов обычно не возникает, то как только запрос/процедура становится строк так 50-100, тут и начинается веселье (особенно если первоначальные название сразу без особой надобности сократили, как p1, p2, c4,cc2, pp7).
Для вас curr - это текущая запись, а для кого-то это будет валюта curr (currency).
Поэтому и не вижу смысла в этих сокращениях - что мешает написать, хотябы current?
Зависит от контекста. Если по смыслу задачи тут нет финансовых расчётов, то и валюты появиться не может.
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #40065321
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Осмысленность сокращений - это отдельный вопрос, который крайне существенно зависит от конкретики. У меня, например, был проект, где одним из типовых сокращений было dsc, причём оно принципиально отличалось от другого, столь же типового ds_c (а также от ds и от dsc_c). И никто проблем не испытывал, все мгновенно понимали, о чём речь - именно потому, что сокращения были выбраны удачно.
...
Рейтинг: 0 / 0
как правильнее выбирать имена атрибутов?
    #40065344
fkthat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
В принципе, выходит удобнее и надёжнее, когда имя атрибута заодно выступает чем-то вроде имени домена (то есть ты знаешь, что в одинаково называемых полях лежат одинаковые по смыслу данные, в разно называемых - разные. productName - это ведь не то же самое, что customerName, другой смысл данных).

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

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


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