Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
LexNext
Member

Откуда:
Сообщений: 31
Всем доброго вечера.
Собственно сабж. Сам пришел в основном из мира mysql поэтому сравниваю с ним - наименование полей там обычно оформляют в нижнем регистре и по простому.
Пример (таблица products):
(p.k.)id
title
(f.k.)type_id
...........


В ms sql (ориентируюсь на большинство примеров из книг и нескольких дампов различных баз):
(P.K.)IDProduct
Title
(F.K.)TypeId
..............

Считаю, что указание в наименовании первичного ключа имени таблицы, к которой он относиться - это просто неудобно, когда возникнет потребность в выборке из нескольких подобных таблиц в динамике.
Ну а про заглавные буквы, тут я никак не могу контраргументировать, просто не привычно, поэтому и хотел у вас уточнить, всегда ли вы жестко следуете ли этому соглашению? Или в mssql коммьюинити лояльно относятся к подобного рода отступлениям?
Спасибо.
19 дек 12, 23:37    [13656972]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
LexNext
Считаю, что указание в наименовании первичного ключа имени таблицы, к которой он относиться - это просто неудобно, когда возникнет потребность в выборке из нескольких подобных таблиц в динамике.
Хотите иметь в разных таблицах одноименные поля -- дело ваше. Но будьте готовы к возможным трудноуловимым ошибкам. Причем тут динамика вообще не понятно. Если имеется в виду множество таблиц с одинаковой схемой, то, скорее всего, это неверно спроектированная БД.
LexNext
Ну а про заглавные буквы, тут я никак не могу контраргументировать, просто не привычно, поэтому и хотел у вас уточнить, всегда ли вы жестко следуете ли этому соглашению? Или в mssql коммьюинити лояльно относятся к подобного рода отступлениям?
Опять же, пишите как хотите. Но прежде рекомендую ознакомиться с http://www.sqlcmd.ru/is_tsql_case_sensitive-part01.html
20 дек 12, 00:13    [13657108]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
invm
LexNext
Ну а про заглавные буквы, тут я никак не могу контраргументировать, просто не привычно, поэтому и хотел у вас уточнить, всегда ли вы жестко следуете ли этому соглашению? Или в mssql коммьюинити лояльно относятся к подобного рода отступлениям?
Опять же, пишите как хотите. Но прежде рекомендую ознакомиться с http://www.sqlcmd.ru/is_tsql_case_sensitive-part01.html
В данном случае речь не о регистрозависимости, а о стиле наименований.

А то, что регистр нужно писать всегда правильно, это имхо очевидно...

invm
Хотите иметь в разных таблицах одноименные поля -- дело ваше. Но будьте готовы к возможным трудноуловимым ошибкам.
Имхо это правильно - в разных таблицах одноименные поля, как иначе? Так не делают ни в одном языке программирования, и в коде для разных субд редко такое встречал (хотя да, это конечнро бывает).
Не вижу смысла повторять в каждой таблце её имя в именах полей.
20 дек 12, 11:13    [13658350]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
alexeyvg
Имхо это правильно - в разных таблицах одноименные поля, как иначе? Так не делают ни в одном языке программирования, и в коде для разных субд редко такое встречал (хотя да, это конечнро бывает).
Не вижу смысла повторять в каждой таблце её имя в именах полей.
Имеем в БД 100500 таблиц. Все с суррогатным PK id.
1. При написании сложного запроса в одном из джойнов ошиблись алиасом таблицы. На данных в тестовой БД ошибку не обнаружили и задеплоили на продуктив.
2. При чтении сложного многотабличного запроса необходимо держать в голове все алиасы таблиц, иначе понять о каком "id" идет речь затруднительно.

Конечно, включать в наименование столбца наименование таблицы - это перебор. Достаточно осмысленной аббревиатуры.

Впрочем, каждый волен выбирать себе геморрой по собственному вкусу...
20 дек 12, 11:33    [13658467]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
Программист-Любитель
Member

Откуда:
Сообщений: 16839
alexeyvg
Не вижу смысла повторять в каждой таблце её имя в именах полей.
Ровно противоположное мнение.
20 дек 12, 12:00    [13658698]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
Критик
Member

Откуда: Москва / Калуга
Сообщений: 35398
Блог
invm,

используйте осмысленную аббревиатуру в алиасе, зачем в имени столбца его дублировать?
20 дек 12, 12:06    [13658756]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
alexeyvg
Имхо это правильно - в разных таблицах одноименные поля, как иначе? Так не делают ни в одном языке программирования, и в коде для разных субд редко такое встречал (хотя да, это конечнро бывает).
Не вижу смысла повторять в каждой таблце её имя в именах полей.
Имеем в БД 100500 таблиц. Все с суррогатным PK id.
1. При написании сложного запроса в одном из джойнов ошиблись алиасом таблицы. На данных в тестовой БД ошибку не обнаружили и задеплоили на продуктив.
Это означает, что данные в тестовой БД не соответстуют задаче, решаемой с применением указанной БД... Или неправильно выполненно тестирование при написании запроса перед деплоем... Бывает... :(
Но со степенью одинаковости полей разных таблиц, алиасов таблиц в запросах и прочим никак не связано.
invm
2. При чтении сложного многотабличного запроса необходимо держать в голове все алиасы таблиц, иначе понять о каком "id" идет речь затруднительно.
Давать осмысленные алиасы таблицам в запросе не пробовали? :)
invm
Конечно, включать в наименование столбца наименование таблицы - это перебор. Достаточно осмысленной аббревиатуры.
А потом вспоминать, как одна "осмысленная абревиатура" одной таблицы может/должна быть связана с другой такой же не менее "осмысленной абревиатурой"...
20 дек 12, 12:18    [13658846]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
Критик
invm,

используйте осмысленную аббревиатуру в алиасе, зачем в имени столбца его дублировать?
Т.е. вы предлагаете вместо однократного использования аббревиатуры в имени столбца, составить для команды разработчиков реестр правил формирования имен алиасов, да потом еще и контролировать их соблюдение?
20 дек 12, 13:04    [13659207]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
Критик
invm,

используйте осмысленную аббревиатуру в алиасе, зачем в имени столбца его дублировать?
Т.е. вы предлагаете вместо однократного использования аббревиатуры в имени столбца, составить для команды разработчиков реестр правил формирования имен алиасов, да потом еще и контролировать их соблюдение?
"И это - правильно!" (с)
Соглашения об оформлении запросов, именовании алиасов, комментировании текста запросов и прочей синтаксической "глазури" все равно нужно принимать и как-то контролировать их соблюдение.
Кстати, очень забавно ссылаться на ""однократное использование абревиатуры в имени столбца", когда одна и та же таблица в сложном запросе может использоваться "много больше" одного раза... И куда деться бедному разработчику без осмысленности в алиасах? :)
20 дек 12, 13:34    [13659461]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
sphinx_mv
invm
пропущено...
Т.е. вы предлагаете вместо однократного использования аббревиатуры в имени столбца, составить для команды разработчиков реестр правил формирования имен алиасов, да потом еще и контролировать их соблюдение?
"И это - правильно!" (с)
Соглашения об оформлении запросов, именовании алиасов, комментировании текста запросов и прочей синтаксической "глазури" все равно нужно принимать и как-то контролировать их соблюдение.
Кстати, очень забавно ссылаться на ""однократное использование абревиатуры в имени столбца", когда одна и та же таблица в сложном запросе может использоваться "много больше" одного раза... И куда деться бедному разработчику без осмысленности в алиасах? :)
Ну вот будет у вас в команде несколько нерадивых разработчиков (а других не дадут, ибо бюджет и т.д и т.п.) и можете их контролировать в свое удовольствие. А я предпочитаю тратить свое время более рационально.
20 дек 12, 13:55    [13659637]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
invm
alexeyvg
Имхо это правильно - в разных таблицах одноименные поля, как иначе? Так не делают ни в одном языке программирования, и в коде для разных субд редко такое встречал (хотя да, это конечнро бывает).
Не вижу смысла повторять в каждой таблце её имя в именах полей.
Имеем в БД 100500 таблиц. Все с суррогатным PK id.
1. При написании сложного запроса в одном из джойнов ошиблись алиасом таблицы. На данных в тестовой БД ошибку не обнаружили и задеплоили на продуктив.
2. При чтении сложного многотабличного запроса необходимо держать в голове все алиасы таблиц, иначе понять о каком "id" идет речь затруднительно.

Конечно, включать в наименование столбца наименование таблицы - это перебор. Достаточно осмысленной аббревиатуры.

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

По большому счёту, алиас - это аббревиатура с точкой. Абсолютно равновероятно допускать все ошибки с ней так же как с алиасом.

Да, при одноременном использовании аббревиатур и алиасов вероятность ошибки уменьшается, однако это имхо перебор, в конце концов можно ошибиться в логике или в интерпретации ТЗ, чем перепутать алиасы.
invm
На данных в тестовой БД ошибку не обнаружили и задеплоили на продуктив.
Ошибка в имени столбца с большой вероятностью вылезет при тестировании.
Критик
invm,

используйте осмысленную аббревиатуру в алиасе, зачем в имени столбца его дублировать?
Да стараюсь использовать алиасы осмысленные и одинаковые для каждой таблицы.
20 дек 12, 14:04    [13659722]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
sphinx_mv
пропущено...
"И это - правильно!" (с)
Соглашения об оформлении запросов, именовании алиасов, комментировании текста запросов и прочей синтаксической "глазури" все равно нужно принимать и как-то контролировать их соблюдение.
Кстати, очень забавно ссылаться на ""однократное использование абревиатуры в имени столбца", когда одна и та же таблица в сложном запросе может использоваться "много больше" одного раза... И куда деться бедному разработчику без осмысленности в алиасах? :)
Ну вот будет у вас в команде несколько нерадивых разработчиков (а других не дадут, ибо бюджет и т.д и т.п.) и можете их контролировать в свое удовольствие. А я предпочитаю тратить свое время более рационально.
Ну, Вам только показалось, что Вы тратите свое время рационально: разработчики приходят и уходят, а код, ими написаный - остается.
Без элементарных согласованных и соблюдаемых(!) правил сопровождать проект практически маловозможно.

К тому же контроль за соблюдением этих правил - часть контроля качества продукта.
Не хотите контролировать качество? Грустный у Вас подход... Возможно, стоит задуматься о смене сферы деятельности...
20 дек 12, 14:21    [13659851]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
sphinx_mv
invm
пропущено...
Ну вот будет у вас в команде несколько нерадивых разработчиков (а других не дадут, ибо бюджет и т.д и т.п.) и можете их контролировать в свое удовольствие. А я предпочитаю тратить свое время более рационально.
Ну, Вам только показалось, что Вы тратите свое время рационально: разработчики приходят и уходят, а код, ими написаный - остается.
Без элементарных согласованных и соблюдаемых(!) правил сопровождать проект практически маловозможно.

К тому же контроль за соблюдением этих правил - часть контроля качества продукта.
Не хотите контролировать качество? Грустный у Вас подход... Возможно, стоит задуматься о смене сферы деятельности...


Расскажите пожалуйста как качество кода упало от использования ProductId в место Id?
20 дек 12, 14:32    [13659949]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Владимир Затуливетер
sphinx_mv
пропущено...
Ну, Вам только показалось, что Вы тратите свое время рационально: разработчики приходят и уходят, а код, ими написаный - остается.
Без элементарных согласованных и соблюдаемых(!) правил сопровождать проект практически маловозможно.

К тому же контроль за соблюдением этих правил - часть контроля качества продукта.
Не хотите контролировать качество? Грустный у Вас подход... Возможно, стоит задуматься о смене сферы деятельности...


Расскажите пожалуйста как качество кода упало от использования ProductId в место Id?
А Вы бы перечитали тему и посмотрели бы к чему непосредственно это относится - например, начиная отсюда 13659461 - тогда, может, и вопросов лично Вам непонятных, возникать не будет.
20 дек 12, 14:44    [13660058]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
sphinx_mv
Вы тратите свое время рационально: разработчики приходят и уходят, а код, ими написаный - остается.
Без элементарных согласованных и соблюдаемых(!) правил сопровождать проект практически маловозможно.
Угу. Гораздо проще сделать правило автоматически соблюдаемым и ненарушаемым, чем постоянно контролировать его соблюдение.
sphinx_mv
К тому же контроль за соблюдением этих правил - часть контроля качества продукта.
Не хотите контролировать качество? Грустный у Вас подход... Возможно, стоит задуматься о смене сферы деятельности...
Ну вот уже перешли на личности, оценку профпригодности и советы о том, как жить дальше :) Что и было совершенно ожидаемо :)
На этом дальнейшую дискуссию считаю бессмысленной.
20 дек 12, 14:56    [13660181]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
Владимир Затуливетер
Member

Откуда:
Сообщений: 427
sphinx_mv
Владимир Затуливетер
пропущено...


Расскажите пожалуйста как качество кода упало от использования ProductId в место Id?
А Вы бы перечитали тему и посмотрели бы к чему непосредственно это относится - например, начиная отсюда 13659461 - тогда, может, и вопросов лично Вам непонятных, возникать не будет.


Я прекрасно понимаю о чем речь.
Прекрываясь "качеством кода" придумать кучу правил и потом им следовать не очень хорошая идея, если есть более простое решение, просто написать ProductId в место Id. Никто не путается, не нужны правила, просто по другому не напишешь.

Я конечно понимаю, есть разные системы, сложные и не очень, и для каждой из них свои "правила игры". Но намекать что человек не компитентен в этой области мягко говоря не хорошо. В одном месте это работает, в другом может быть нет.
20 дек 12, 15:20    [13660413]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
sphinx_mv
Вы тратите свое время рационально: разработчики приходят и уходят, а код, ими написаный - остается.
Без элементарных согласованных и соблюдаемых(!) правил сопровождать проект практически маловозможно.
Угу. Гораздо проще сделать правило автоматически соблюдаемым и ненарушаемым, чем постоянно контролировать его соблюдение.
Вы действительно считаете очень разумным предлагать соблюдать какие-то правила "автоматически", если никаких правил и соглашений лично Вы установливать не собираетесь... Ну-ну...
invm
sphinx_mv
К тому же контроль за соблюдением этих правил - часть контроля качества продукта.
Не хотите контролировать качество? Грустный у Вас подход... Возможно, стоит задуматься о смене сферы деятельности...
Ну вот уже перешли на личности, оценку профпригодности и советы о том, как жить дальше :) Что и было совершенно ожидаемо :)
На этом дальнейшую дискуссию считаю бессмысленной.
Вас, собственно, никто и не принуждает...
20 дек 12, 15:37    [13660567]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
Владимир Затуливетер
sphinx_mv
пропущено...
А Вы бы перечитали тему и посмотрели бы к чему непосредственно это относится - например, начиная отсюда 13659461 - тогда, может, и вопросов лично Вам непонятных, возникать не будет.


Я прекрасно понимаю о чем речь.
Прекрываясь "качеством кода" придумать кучу правил и потом им следовать не очень хорошая идея, если есть более простое решение, просто написать ProductId в место Id. Никто не путается, не нужны правила, просто по другому не напишешь.
Немного не так. Чуть ранее перед этим оппоненты для каждой из таблиц в базе предлагали название этого столбца вместо "ProductId" указывать с неким префиксом: типа, в таблице с номенклутурой товаров "должно писаться" нечто абревиатурное типа "GoodsProductId", а в таблице с отгрузкой "OrderProductId" - иначе сакральный тип "один раз указав абревиатуру таблицы в названии столбца" просто теряется... Ловлю брошенные в меня тапки, если кто-нибудь сможет обоснованно доказать, что путаницы от этого стало "сильно меньше" - тем более в случае, когда одна и та же таблица в запросе участвует несколько раз...

С другой стороны, назвать "отсутствием правил" именование столбца именно "ProductId" вместо простого "Id" - весьма затруднительно. И почему обязательно "ProductId"? Чем плохи "Product_Id", "IdProduct" или "Id_Product"? По сути ничем, но...
Будем продолжать возражать против правил хотя бы именования колонок таблиц? :)
Владимир Затуливетер
Я конечно понимаю, есть разные системы, сложные и не очень, и для каждой из них свои "правила игры".
"Правила игры" должны быть. И кто-то (и как-то) должен контролировать их соблюдение.
Это - фундамент, без которого нет ничего...
Владимир Затуливетер
Но намекать что человек не компитентен в этой области мягко говоря не хорошо. В одном месте это работает, в другом может быть нет.
"Игра без правил" одинаково плохо работает в любом месте...
Правила и следование им (даже в рамках одного отдельно взятого разработчика в отдельно взятом проекте) - жизненная необходимость.
20 дек 12, 16:09    [13660842]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
PaulYoung
Member

Откуда: Москва
Сообщений: 2567
Небольшой оффтоп:Работал я когда-то в одной компании... Так вот там поля первичных ключей назывались ISN. Во всех таблицах. Неудобств от этого никто не испытывал, кроме одного человека. Он предпочел в своем проекте создать собственную структуру, там назвал всё это ID (что было ему привычнее?) и синхронизировал с данными основной БД. Зачем и почему, так и осталось загадкой, потому как проект этот немедленно выкинули вместе с ним. К чему это я? А к тому, что называть поля можно по-разному, достаточно, чтобы голова на плечах разработчика была. С мозгами.
20 дек 12, 16:19    [13660926]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
sphinx_mv,

Вы всерьез пытаетесь доказать, что схема
create table dbo.Customers
(
 id int not null primary key,
 Name varchar(100) not null,
 ...
);

create table dbo.OrderStates
(
 id int not null primary key,
 Name varchar(100) not null,
 ...
);

create table dbo.Orders
(
 id int not null primary key,
 cust_id int not null references dbo.Customers (id),
 ordst_id int not null references dbo.OrderStates (id),
 ...
);
Легко допускающая написание запроса, типа
select
 ord.id,
 cust.Name as cust_Name,
 ordst.Name as ordst_Name
 ...
from
 dbo.Orders ord join
 dbo.Customers cust on cust.id = ord.cust_id join
 dbo.OrderStates ordst on ordst.id = ord.ordst_id
where
  ordst.id = ... /*А нужно было ord.id = ..., разработчик просто ошибся*/
Благодаря жестким правилам именования алиасов и тотального контроля за всем и вся, имеет преимущество над
create table dbo.Customers
(
 cust_id int not null primary key,
 cust_Name varchar(100) not null,
 ...
);

create table dbo.OrderStates
(
 ordst_id int not null primary key,
 ordst_Name varchar(100) not null,
 ...
);

create table dbo.Orders
(
 ord_id int not null primary key,
 cust_id int not null references dbo.Customers (cust_id),
 ordst_id int not null references dbo.OrderStates (ordst_id),
 ...
);
Где подобный запрос даже не скомпилируется, не говоря уже о необходимости постоянно писать алиасы для одноименных столбцов?
20 дек 12, 16:25    [13660986]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
sphinx_mv,

Вы всерьез пытаетесь доказать, что схема
(skip-skip-skip)
Легко допускающая написание запроса, типа
select
...
  ordst.id = ... /*А нужно было ord.id = ..., разработчик просто ошибся*/
Благодаря жестким правилам именования алиасов и тотального контроля за всем и вся, имеет преимущество над
(skip-skip-skip)
Где подобный запрос даже не скомпилируется, не говоря уже о необходимости постоянно писать алиасы для одноименных столбцов?
Детсадовские аргументы - в детский сад: подобный запрос не только скомпилируется, но и может содержать ничуть не меньшее количество ошибок разработчика.
Мне не нужно НИЧЕГО доказывать - Вы вместо меня уже ВСЕ доказали:
/* (skip-skip-skip) разработчик просто ошибся*/ 

Подобные ошибки, кстати, ловятся практически "в-лет" - отладочный запуск запроса вернет неадекватные результаты...
И в Вашем случае разработчик точно так же "легко и непринужденно" ошибется - пусть, уже не в кляузе WHERE, а в кляузе JOIN. Вероятность ошибки точно такая же. Сильно полегчало?
20 дек 12, 17:06    [13661325]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
invm
Member

Откуда: Москва
Сообщений: 9845
sphinx_mv
Детсадовские аргументы - в детский сад: подобный запрос не только скомпилируется, но и может содержать ничуть не меньшее количество ошибок разработчика.
Спасибо, поржал насчет "скомпилируется".
sphinx_mv
Подобные ошибки, кстати, ловятся практически "в-лет" - отладочный запуск запроса вернет неадекватные результаты...
И в Вашем случае разработчик точно так же "легко и непринужденно" ошибется - пусть, уже не в кляузе WHERE, а в кляузе JOIN. Вероятность ошибки точно такая же. Сильно полегчало?
Детсадовские аргументы - в детский сад :) К сведению, -- примеры предназначены для ясного выделения проблемы, и не должны рассматриваться как случаи из жизни.
Людям свойственно ошибаться. Никакими правилами и контролем этого не избежать. И если существует возможность физически устранить ошибки определенного рода, то это нужно делать. Впрочем доказывать что-либо упертым и фанатикам -- абсолютно бесполезное занятие.

В общем, кто хотел, тот понял проблему. А тот, кто уповает только лишь на правила, циркуляры, контроль, постановку в угол на горох и т.д. и т.п., пусть продолжает бороться за качество и надежность. Успехов им в их многотрудном деле.
20 дек 12, 18:16    [13661717]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
invm
В общем, кто хотел, тот понял проблему. А тот, кто уповает только лишь на правила, циркуляры, контроль, постановку в угол на горох и т.д. и т.п., пусть продолжает бороться за качество и надежность. Успехов им в их многотрудном деле.
Вообще выбор схемы наименования обусловлен не надёжностью, уровень надёжности и "ошибкозащищённости" просто учитывается при принятии решения.

Заметьте, что развитие языков идёт по пути разделения (выделения, изоляции) пространств имён, это просто удобно и повышает читаемость кода.

В таблицах будут по несколько полей с именами, в системе по несколько сотен или тысяч таблиц (а бывает и больше).
Утверждение "Если имеется в виду множество таблиц с одинаковой схемой, то, скорее всего, это неверно спроектированная БД." не учитывается, ведь имена таблиц в схемах по такой логике тоже должны отличаться, правильно?

Итого, получится несколько сотен-тысяч-десятков тысяч полей "имя" в их различной реинкарнации. И что делать, какие должны быть имена? префикс1префикс2префикс3Name?

Как раз сруктуры, классы и делаются для такого разделения, что бы имя было всегда name, независимо от того, чьё это имя.

Я бы предпочёл, что бы можно было в таблице делать несколько полей с одинаковым именем, и разделать их пространствами имён, а не делать префиксы в именах, например, для таблицы типа связь пользователей в соцсети:

create table dbo.Link
(
id int not null primary key,
who(
id int not null references dbo.User (id),
occur datetime not null,
)
for(
id int not null references dbo.User (id),
occur datetime not null,
)
...
);
20 дек 12, 19:51    [13662253]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31987
alexeyvg
Я бы предпочёл, что бы можно было в таблице делать несколько полей с одинаковым именем, и разделать их пространствами имён, а не делать префиксы в именах, например, для таблицы типа связь пользователей в соцсети:
Забыл тег:
create table dbo.Link
(
  id int not null primary key,
  who(
    id int not null references dbo.User (id),
    occur datetime not null,
  )
  for(
    id int not null references dbo.User (id),
    occur datetime not null,
  )
  ...
);
--  обращение:
select l.who.id as user_who_id, 
         l.for.id as user_for_id
from dbo.Link
-- или даже так
select l.who.id, 
         l.for.id
from dbo.Link
-- а в клиенте пусть используется полное имя, т.е. "who.id",  "for.id"
20 дек 12, 19:55    [13662282]     Ответить | Цитировать Сообщить модератору
 Re: Наименование полей таблицы с заглавных букв - общепринятый стиль?  [new]
sphinx_mv
Member [заблокирован]

Откуда:
Сообщений: 1672
invm
sphinx_mv
Детсадовские аргументы - в детский сад: подобный запрос не только скомпилируется, но и может содержать ничуть не меньшее количество ошибок разработчика.
Спасибо, поржал насчет "скомпилируется".
Вы сомневаетесь относительно выделенного? Тогда вот Вам подобный (и даже выполняющийся) запрос:
select ords.ord_id, cust.Name as cust_Name, ordst.Name as ordst_Name ...
from dbo.Orders ords 
join dbo.OrderStates ordst on ordst.ordst_id = ordst.ordst_id join dbo.Customers cust on cust.cust_id = ords.cust_id
/* ... плюс еще с десяток JOINов ... */
where ords.ord_id = ... /* Подсказка: ошибка - не здесь! */
Претензии по форматированию текста и именованию алиасов не принимаются - соответствующие формальные правила Вами ни с кем "не согласованы", поэтому "как хочу, так и ворочу".
"Разработчик" в этом запросе тоже (и точно так же!) "ошибся".
Вам сильно помогли при поиске ошибок "абревиатуры в именах полей"? "Терзают смутные сомнения" (с)
invm
sphinx_mv
Подобные ошибки, кстати, ловятся практически "в-лет" - отладочный запуск запроса вернет неадекватные результаты...
И в Вашем случае разработчик точно так же "легко и непринужденно" ошибется - пусть, уже не в кляузе WHERE, а в кляузе JOIN. Вероятность ошибки точно такая же. Сильно полегчало?
Детсадовские аргументы - в детский сад :) К сведению, -- примеры предназначены для ясного выделения проблемы, и не должны рассматриваться как случаи из жизни.
И что?
Ваши примеры НЕ устраняют практической возможности точно таких же ошибок, потому что кое-кто (не буду показывать пальцем) элементарно не желает согласовывать с другими разработчиками команды ни стиль написания, ни правила именования объектов...
Но это пусть остается на его личной совести.
invm
Людям свойственно ошибаться. Никакими правилами и контролем этого не избежать. И если существует возможность физически устранить ошибки определенного рода, то это нужно делать.
Это ничего, что ошибки "определенного рода" начинают проявляться в других местах?
invm
Впрочем доказывать что-либо упертым и фанатикам -- абсолютно бесполезное занятие.
Фанатичная вера в то, что строгое следование добавлению префиксов, суффиксов и прочих абревиатур в названия столбцов таблиц спасут от ошибок (потому что, типа, "автоматический контроль") - в сад.
invm
В общем, кто хотел, тот понял проблему. А тот, кто уповает только лишь на правила, циркуляры, контроль, постановку в угол на горох и т.д. и т.п., пусть продолжает бороться за качество и надежность. Успехов им в их многотрудном деле.
Ну, и как? Ошибку в моем примере вполне запускаемого запроса Вы уже нашли?
Вам в этом сильно помогло отсутствие формальных общих правил и контроля за их соблюдением?
А они бы весьма по-способстовали облегчению Вашей весьма незавидной при поиске допущенной ошибки участи...
20 дек 12, 20:30    [13662428]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить