Каково ваше соглашение об именах хранимых процедур?

Я видел различные правила именования хранимых процедур.

Некоторые люди добавляют к имени sproc префикс usp_, другие - аббревиатуру имени приложения, а третьи - имя владельца. Вы не должны использовать sp_ в SQL Server, если вы действительно это не имеете в виду.

Некоторые начинают имя процедуры с глагола (Получить, Добавить, Сохранить, Удалить). Другие подчеркивают имя (имена) сущности.

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

Вы используете соглашение об именах? Опишите его и объясните, почему вы предпочитаете его другим вариантам.

Резюме ответов:

  • Кажется, что все выступают за единообразие именования, что для всех может быть важнее использовать одно и то же соглашение об именах, чем то, какое конкретное используется.
  • Префиксы: в то время как многие используют usp_ или что-то подобное (но редко sp_), многие другие используют имя базы данных или приложения. Один умный администратор баз данных использует gen, rpt и tsk, чтобы отличить общие цепочки CRUD от тех, которые используются для отчетов или задач.
  • Глагол + Существительное кажется немного более популярным, чем Существительное + Глагол. Некоторые люди используют ключевые слова SQL (Select, Insert, Update, Delete) для глаголов, в то время как другие используют глаголы, отличные от SQL (или сокращения для них), такие как Get и Add. Некоторые проводят различие между существительными в единственном и множественном числе, чтобы указать, извлекаются ли одна или несколько записей.
  • Если необходимо, в конце предлагается дополнительная фраза. GetCustomerById, GetCustomerBySaleDate.
  • Некоторые люди используют подчеркивание между сегментами имени, а некоторые избегают подчеркивания. app_ Get_Customer vs. appGetCustomer - я думаю, это вопрос удобочитаемости.
  • Большие коллекции sproc можно разделить на пакеты Oracle, решения и проекты Management Studio (SQL Server) или схемы SQL Server.
  • Следует избегать непонятных сокращений.

Почему я выбрал именно тот ответ: Так много хороших отзывов. Спасибо вам всем! Как видите, выбрать что-то одно будет очень непросто. Тот, который я выбрал, мне понравился. Я пошел по тому же пути, который он описывает, - пытался использовать Verb + Noun, а затем не смог найти все sprocs, применимые к Customer.

Очень важно иметь возможность найти существующий sproc или определить, существует ли он вообще. Если кто-то случайно создаст дубликат sproc с другим именем, могут возникнуть серьезные проблемы.

Поскольку я обычно работаю над очень большими приложениями с сотнями sprocs, я предпочитаю самый простой для поиска метод именования. Для небольшого приложения я мог бы рекомендовать Verb + Noun, поскольку он следует общему соглашению о кодировании для имен методов.

Он также выступает за добавление префикса к имени приложения вместо не очень полезного usp_. Как указали несколько человек, иногда база данных содержит sprocs для нескольких приложений. Таким образом, префикс с именем приложения помогает разделить sproc И помогает администраторам баз данных и другим пользователям определить, для какого приложения используется sproc.

Что означает usp?

Midhat 04.05.2010 17:09

Я считаю, что usp - это сокращение от «пользовательская процедура». Это отличает его от системных процедур с префиксом sp_. Это важное различие, о чем вы можете прочитать в ответах.

DOK 05.05.2010 18:37

спасибо док. Grazie Mille

Midhat 06.05.2010 12:43

usp = пользовательская хранимая процедура

Robino 24.06.2014 17:41

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

tsilb 11.02.2016 01:59

Извините за задержку с комментарием, но это может помочь. Поскольку я являюсь фронтенд-программистом, я использую следующее как для MySQL, так и для SQLServer: SPx_PAGE / MODULE_ACTION_OBJECT x: R для чтения, I для вставки, U для обновления, W для записи (объединяет вставку, если индекс не существует, или обновление, если существует) и D для удаления. SPR_DASHBOARD_GET_USERS

leandronn 17.11.2016 23:43
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
124
7
74 884
17
Перейти к ответу Данный вопрос помечен как решенный

Ответы 17

Я всегда инкапсулирую хранимые процедуры в пакеты (на работе я использую Oracle). Это уменьшит количество отдельных объектов и поможет повторно использовать код.

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

Пакеты хорошие. Начиная с SQL Server 2005, Management Studio позволяет создавать «решения» для хранения связанных sprocs и других операторов SQL.

DOK 26.10.2008 20:16

@DOK - обратите внимание, что эти пакеты не имеют места в самой базе данных. Это чисто артефакты интерфейсного инструмента. Вы не можете запрашивать по пакетам в словаре данных. Пакеты Oracle являются объектами первого класса в словаре системных данных и имеют свою собственную область действия.

ConcernedOfTunbridgeWells 12.04.2011 15:47

для небольших баз данных я использую uspTableNameOperationName, например uspCustomerCreate, uspCustomerDelete и т. д. Это упрощает группировку по «основному» объекту.

для больших баз данных добавьте схему или имя подсистемы, например Получение, покупка и т. д., Чтобы они были сгруппированы вместе (поскольку sql-сервер любит отображать их в алфавитном порядке)

я стараюсь избегать сокращений в именах для ясности (и новым людям в проекте не нужно задумываться, что означает UNAICFE, потому что sproc называется uspUsingNoAbbreviationsIncreasesClarityForEveryone)

Да, особенно спасибо за использование сокращений.

DOK 26.10.2008 20:26

@ [DOK]: пожалуйста - что, без голосов? ;-)

Steven A. Lowe 26.10.2008 21:24

Стив, ты проголосовал за. Я был слишком занят чтением множества ответов и комментариев и мучительно размышлял о том, какой ответ «лучший».

DOK 26.10.2008 22:07

@ [DOK]: спасибо; «лучший» ответ - это, вероятно, комбинация, которая имеет смысл в вашей ситуации.

Steven A. Lowe 27.10.2008 19:42

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

Раньше я использовал префиксы Get / Update / Insert / Delete для операций CRUD, но теперь, поскольку я использую Linq to SQL или EF для выполнения большей части своей работы CRUD, они полностью исчезли. Поскольку у меня так мало хранимых процессов в моих новых приложениях, соглашения об именах больше не имеют значения, как раньше ;-)

Добавление к каждому sproc префикса _usp не помогает различать их. Я думаю, что некоторым администраторам баз данных нравится этот префикс, потому что он указывает на тип объекта базы данных. Может быть, мы услышим от кого-нибудь из них, кому это понравится.

DOK 26.10.2008 20:30

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

Если бы у нас не было устаревшего ограничения, я совершенно уверен, что мы бы не использовали префикс.

После префикса мы обычно начинаем имя SP с глагола, описывающего, что делает процедура, а затем с имени объекта, с которым мы работаем. Допускается множественное число имени объекта - мы стараемся сделать упор на удобочитаемость, чтобы было очевидно, что делает процедура, только по имени.

Типичные имена хранимых процедур в нашей команде:

shopGetCategories
shopUpdateItem

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

DOK 26.10.2008 20:33

Системы Венгерский (как и префикс usp выше) заставляет меня вздрогнуть.

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

Фактическое имя после префикса практически не отличается от именования функций: обычно это глаголы типа «Добавить», «Установить», «Создать», «Вычислить», «Удалить» и т. д., За которыми следует несколько более конкретных существительных, таких как «Пользователь». "," Ежедневные доходы "и т. д.

В ответ на комментарий Ant:

  1. Разница между таблицей и представлением важна для тех, кто разрабатывает схему базы данных, а не для тех, кто обращается к ее содержимому или изменяет его. В редких случаях, когда требуется специфика схемы, ее достаточно легко найти. Для случайного запроса SELECT это не имеет значения. На самом деле, я считаю возможность обрабатывать таблицы и представления одним и тем же большим преимуществом.
  2. В отличие от функций и хранимых процедур, имя таблицы или представления вряд ли будет начинаться с глагола или быть чем-либо, кроме одного или нескольких существительных.
  3. Функция требует вызова префикса схемы. Фактически, синтаксис вызова (который мы все равно используем) сильно различается между функцией и хранимой процедурой. Но даже если бы это было не так, применимо то же, что и 1.: если я могу одинаково относиться к функциям и хранимым процедурам, почему бы и нет?

Так как узнать, взаимодействуете ли вы с процедурой, функцией, представлением, таблицей или чем-то еще?

Ant 26.10.2008 20:47

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

Mark Stock 26.10.2008 21:09

Но это не венгерский. «Usp» - это не объявление переменной венгерского языка. «U» не означает «обновление», это означает «пользователь», как в «определяемой пользователем хранимой процедуре», и это просто защищает от того, что SQL Server просматривает главную базу данных каждый раз, когда он ищет вашу хранимую процедуру. Естественно, есть и другие способы, но «usp» обычно считается стандартом во многих корпусах, и, судя по тому, что я видел, он работает хорошо. Этому также учат Microsoft и рекомендованное Microsoft соглашение об именах: msdn.microsoft.com/en-us/library/ms124456(v=SQL.100).aspx

asus3000 08.06.2017 16:28

@Ant Тип объекта можно напрямую определить по его синтаксису, например SELECT * FROM foo ясно, что foo - это TABLE или VIEW. SELECT * FROM dbo.MyFunction() - это UDF, SELECT * FROM @tvv - это возвращающая табличное значение переменная, а хранимые процедуры могут быть вызваны только через EXEC. Так что двусмысленности нет.

Dai 13.11.2020 08:47

@Ant Что касается SELECT * FROM foo, не показывающего тип foo (поскольку foo может быть VIEW или TABLE) - это не должно иметь значения (это также может быть синонимом!), Потому что они намеренно взаимозаменяемы - вы также можете INSERT INTO и UPDATE как VIEW. , не забывай. Когда базы данных вносят критические изменения в свои схемы, они часто добавляют VIEW в качестве замены для старых таблиц - так что, если таблица была названа tbl_Foo и была преобразована в CREATE VIEW tbl_Foo, то это просто глупая ошибка и по вашим собственным стандартам. Отсюда: не использовать системные префиксы венгерского языка в базах данных!

Dai 13.11.2020 08:50

Я не думаю, что действительно имеет значение, какой у вас префикс, если вы логичны и последовательны. Лично я использую

spu_ [описание действия] [описание процесса]

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

spu_archiveCollectionData 

или же

spu_setAwardStatus

Я называю свои функции аналогично, но с префиксом udf_

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

spu_, интересно. Избегает проблемы с SQL Server sp_.

DOK 26.10.2008 20:45

Запускать имя хранимой процедуры с помощью sp_ в SQL Server - это плохо, потому что все системные sprocs начинаются с sp_. Последовательное именование (даже до степени hobgoblin-dom) полезно, потому что оно облегчает автоматические задачи на основе словаря данных. Префиксы немного менее полезны в SQL Server 2005, поскольку он поддерживает схемы, которые могут использоваться для различных типов пространств имен так же, как и префиксы в именах, которые используются. Например, в звездообразной схеме можно иметь схемы тусклый и факт и ссылаться на таблицы в соответствии с этим соглашением.

Для хранимых процедур префикс полезен для идентификации цепочек приложений из системных цепочек. up_ по сравнению с sp_ позволяет относительно легко идентифицировать несистемные хранимые процедуры из словаря данных.

Именование sprocs «sp_» также является очень плохой идеей для скорости, потому что SQL Server пытается оптимизировать свои поиски для тех, которые основаны на предположении, что они являются системными процедурами. Посмотрите сюда, 5-я точка вниз: rakph.wordpress.com/2008/04/19/tips-store-procedure

Ant 26.10.2008 20:46
Ответ принят как подходящий

В моем последнем проекте я использовал usp_ [Action] [Object] [Process], например, usp_AddProduct или usp_GetProductList, usp_GetProductDetail. Однако теперь база данных насчитывает более 700 процедур, и становится намного сложнее найти все процедуры для определенного объекта. Например, теперь мне нужно искать нечетные 50 процедур добавления для добавления продукта и нечетные 50 для получения и т. д.

Из-за этого в моем новом приложении я планирую сгруппировать имена процедур по объектам, я также отбрасываю usp, поскольку считаю, что он несколько избыточен, кроме того, чтобы сказать мне, что это процедура, которую я могу вычесть из имени сама процедура.

Новый формат выглядит следующим образом

[App]_[Object]_[Action][Process]

App_Tags_AddTag
App_Tags_AddTagRelations
App_Product_Add 
App_Product_GetList
App_Product_GetSingle

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

Что касается того, где используется более одного объекта, я обнаружил, что большинство экземпляров имеют первичный и вторичный объект, поэтому первичный объект используется в обычном экземпляре, а вторичный объект упоминается в разделе процесса, например App_Product_AddAttribute.

Что делать, если задействовано более одного объекта? Например, что, если sproc запрашивает информацию как из таблицы «Клиент», так и из таблицы «Заказы»?

DOK 26.10.2008 21:27

Измененный вопрос, чтобы ответить на этот вопрос.

dnolan 27.10.2008 00:15

Итак, вы удалили избыточный префикс usp_ и заменили его на App_. Как это лучше ??

Mitch Wheat 27.10.2008 02:52

Что происходит, если несколько приложений используют сохраненную процедуру?

Mitch Wheat 27.10.2008 02:53

Спасибо, Митч, давайте проясним. Этот префикс «App» является заполнителем для другой аббревиатуры, указывающей фактическое имя приложения (или аббревиатуру). Таким образом, если 3 приложения используют одну базу данных, могут быть ICA_Product_Add, CRM_Product_Add и BPS_Product_Add.

DOK 27.10.2008 13:54

Зачем дублировать каждую процедуру 3 раза для 3 приложений? Весь смысл процедур хранения состоит в том, чтобы иметь единое место, где происходит данное действие. "ICA_Product_Add, CRM_Product_Add и BPS_Product_Add" уничтожает это.

Jason Kester 27.10.2008 14:44

Джейсон, эти sprocs могут быть вставлены в разные таблицы. У них могут быть разные входные параметры или возвращаемые значения. Или у них может быть другое поведение. Если sprocs делают то же самое, я согласен, версия должна быть только одна. Как предложил кто-то другой, общие sprocs могут не иметь префикса.

DOK 27.10.2008 15:50

Даже если один и тот же sproc не отображается в нескольких приложениях, он все равно упрощает поиск sproc, которые используются конкретным приложением, путем добавления к нему индикатора приложения, чтобы все они были сгруппированы вместе.

DOK 27.10.2008 15:59

Если у вас есть несколько приложений, вызывающих одну и ту же процедуру, вам нужно быть особенно осторожным, любое изменение этой процедуры может нарушить работу этих нескольких приложений. С точки зрения наименования, это серая область, но вы можете назвать ее общим / глобальным или как угодно. @localghosts: спасибо за информативность.

dnolan 27.10.2008 18:54

Я очень опаздываю ... но @Simon Shaw меня заинтриговал, почему вы "ненавидите" хранимые процедуры для таких вещей, как "Product_GetList". Как бы вы предпочли это сделать? Даже если ваш способ наверняка лучше ненавидеть то, что кажется очень разумным, использование хранимой процедуры - это немного перебор?

MrEdmundo 21.01.2010 17:32

@Shawn: Мне также было бы любопытно, в чем на самом деле ваша проблема с хранимыми процедурами. Без каких-либо пояснений ваш комментарий просто смешон. Спасибо, что подробно остановились на этом.

Sk8erPeter 15.05.2012 16:41

есть ли разница между Product_GetDetail и Product_GetSingle?

Muflix 14.11.2016 16:01

Каков ваш текущий опыт использования этого нового подхода?

Muflix 06.06.2017 18:10

Очень поздно, но все еще не могу понять после прочтения всех ответов, если вы не используете префикс usp или что-то в этом роде, как можно узнать, что это хранимая процедура, а не представление или функция?

Hameed Syed 22.10.2018 06:43

@HameedSyed, вы не можете выполнить представление, функцию или таблицу ... см. sp_prefix для получения дополнительной информации.

Profex 17.01.2019 20:01

@dnolan, вместо того, чтобы указывать префикс App, не могли бы вы просто использовать разные Schema для каждого приложения? Я думаю, это подводит меня к тому, чтобы разобраться, для чего мне следует использовать схемы ...

Profex 17.01.2019 20:14

По префиксу sp (БЕЗ подчеркивания. Не используйте sp_, это специальные системные объекты): это может показаться вам излишним, если вы используете только обозреватель объектов. Но если вы регулярно запрашиваете INFORMATION_SCHEMA или таблицы sys, возможность упорядочить по имени, а не включать столбец типа объекта, легко сэкономила мне десятки часов за эти годы. Он также позволяет использовать префиксы, такие как zz и tmp, для разделения процессов на более высоком уровне, чем <имя приложения>.

dylanthelion 29.07.2019 20:13

Я всегда использую:

usp [Имя таблицы] [Действие] [Дополнительная информация]

Учитывая таблицу с именем "tblUser", я получаю:

  • uspUserCreate
  • uspUserSelect
  • uspUserSelectByNetworkID

Процедуры отсортированы в алфавитном порядке по имени таблицы и по функциональности, поэтому легко увидеть, что я могу сделать с любой данной таблицей. Использование префикса «usp» позволяет мне узнать, что я вызываю, если я (например) пишу процедуру из 1000 строк, которая взаимодействует с другими процедурами, несколькими таблицами, функциями, представлениями и серверами.

Пока редактор в среде IDE SQL Server не будет так же хорош, как Visual Studio, я сохраняю префиксы.

Избегайте sp_ * на сервере SQl, потому что все хранимые процедуры системы начинаются с sp_, и поэтому системе становится сложнее найти объект, соответствующий имени.

Так что если вы начнете с чего-то другого, кроме sp_, все станет проще.

Поэтому для начала мы используем обычное название Proc_. Это упрощает идентификацию процедур, если они представлены одним большим файлом схемы.

Кроме того, мы назначаем префикс, который идентифицирует функцию. Нравиться

Proc_Poll_Interface, Proc_Inv_Interface и др.

Это позволяет нам находить все сохраненные процессы, которые выполняют функцию ОПРОСА по сравнению с инвентаризацией и т. д.

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

другие функции eg.

Proc_Order_Place
Proc_order_Delete
Proc_Order_Retrieve
Proc_Order_History

Мы следовали именованию на основе функций coz Procs похожи на код / ​​функцию, а не на статические объекты, такие как таблицы. Не помогает то, что Procs могут работать более чем с одной таблицей.

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

Надеюсь, это поможет.

Вот некоторые пояснения по поводу проблемы с префиксом sp_ в SQL Server.

Хранимые процедуры, названные с префиксом sp_, являются системными sprocs, хранящимися в базе данных Master.

Если вы дадите своему sproc этот префикс, SQL Server сначала будет искать их в базе данных Master, а затем в базе данных контекста, что приводит к ненужной трате ресурсов. И, если созданный пользователем sproc имеет то же имя, что и системный sproc, созданный пользователем sproc не будет выполнен.

Префикс sp_ указывает, что sproc доступен из всех баз данных, но должен выполняться в контексте текущей базы данных.

Вот - хорошее объяснение, которое включает демонстрацию хита производительности.

Вот - еще один полезный источник, предоставленный Ant в комментарии.

Хм, я не понимаю. Почему sp снижает производительность? Usp или gsp в порядке?

Erwin Rooijakkers 15.05.2014 13:48

@ user2609980 DOK говорит, что SQL Server сначала ищет процесс с префиксом sp_ в главной БД, а затем в текущей БД, если не найден

GôTô 07.12.2014 00:26

+1 за четкое изложение чего-то, что имеет более запутанные объяснения в другом месте. Для меня это не новость, но я думаю, что это простое и лаконичное объяснение для начинающих.

undrline - Reinstate Monica 16.01.2019 16:51

Ссылка на демонстрацию хита производительности взята из статьи, написанной в 2001 году. С тех пор она изменилась, вот более подробная статья (от 2012 года) Аарона Бертрана: sqlperformance.com/2012/10/t-sql-queries/sp_prefix

Michael J Swart 04.04.2019 17:23

префикс приложения_ префикс операции_ описание задействованных объектов базы данных (за вычетом пробелов между символами подчеркивания - нужно было поставить пробелы, чтобы они отображались).

префиксы операций, которые мы используем -

  • «получить» - возвращает набор записей
  • «ins» - вставляет данные
  • «UPD» - обновляет данные
  • «дель» - удаляет данные

например

wmt_ ins _ customer _details

"инструмент управления персоналом, вставьте детали в таблицу клиентов"

преимущества

Все хранимые процедуры, относящиеся к одному и тому же приложению, сгруппированы по имени. Внутри группы хранимые процедуры, выполняющие однотипные операции (например, вставки, обновления и т. д.), Группируются вместе.

У нас эта система работает хорошо, имея ок. 1000 хранимых процедур в одной базе данных неуместно.

Минусов у такого подхода пока не обнаружено.

Я вообще ненавижу использование подчеркиваний, но способ их использования - не только для разделения префикса, но и для разделения операции - упростит поиск при сканировании списка из сотен sproc. Pretty_neat_idea.

DOK 26.10.2008 21:49

За эти годы я использовал практически все разные системы. Наконец-то я разработал вот этот, который продолжаю использовать сегодня:

Префикс:

  • gen - Общие: CRUD, в основном
  • rpt - Отчет: не требует пояснений
  • tsk - Задача: обычно что-то с процедурной логикой, запускается через запланированные задания

Указатель действия:

Ins - INSERT
Sel - SELECT
Upd - UPDATE
Del - DELETE

(В случаях, когда процедура выполняет много действий, общая цель используется для выбора спецификатора действия. Например, для клиента INSERT может потребоваться большая подготовительная работа, но общая цель - INSERT, поэтому выбирается «Ins».

Объект:

Для gen (CRUD) это затрагивается имя таблицы или представления. Для rpt (Report) это краткое описание отчета. Для tsk (Task) это краткое описание задачи.

Дополнительные осветлители:

Это необязательные биты информации, используемые для улучшения понимания процедуры. Примеры включают «По», «Для» и т. д.

Формат:

[Префикс] [Спецификатор действия] [Сущность] [Необязательные пояснители]

Примеры названий процедур:

genInsOrderHeader

genSelCustomerByCustomerID
genSelCustomersBySaleDate

genUpdCommentText

genDelOrderDetailLine

rptSelCustomersByState
rptSelPaymentsByYear

tskQueueAccountsForCollection

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

DOK 26.10.2008 22:01

В настоящее время я использую следующий формат

Обозначение:

[ПРЕФИКС] [ЗАЯВЛЕНИЕ] [МОДУЛЬ] _ [ИМЯ]

Пример:

P_CMS_USER_UserInfoGet

Мне нравится это обозначение по нескольким причинам:

  • начиная с очень простого префикса позволяет писать код для выполнения только объектов, начинающихся с префикса (например, для уменьшения SQL-инъекций)
  • в нашей более крупной среде несколько команд работают над разными приложениями, работающими на одной и той же архитектуре базы данных. Обозначение Application указывает, какая группа владеет SP.
  • Разделы Module и Name просто дополняют иерархию. Все имена должны соответствовать группе / приложению, модулю, функции из иерархии.

GetXXX - получает XXX на основе @ID

GetAllXXX - получает все XXX

PutXXX - вставляет XXX, если передано значение @ID -1; еще обновления

DelXXX - удаляет XXX на основе @ID

TableName_WhatItDoes

  • Comment_GetByID

  • Customer_List

  • UserPreference_DeleteByUserID

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

Одно предостережение к вышесказанному: я лично всегда ставлю перед всеми автоматически сгенерированными CRUD префиксы zCRUD_, чтобы они попадали в конец списка, где мне не нужно было его смотреть.

Отделить элементы «z» от остальных - отличная идея.

DOK 27.10.2008 14:00

Мне нравится этот метод. Их должно быть легко найти. Когда я просматриваю список первых sprocs глаголов и вижу 200 Gets, 200 Inserts, 200 обновлений, трудно найти все для конкретной таблицы или группы. Сначала я использовал метод глагола, и он быстро превратился в беспорядок. Имя таблицы сначала решает эту проблему. Так, например, в ответе выше все ваши комментарии или комментарии клиентов будут сгруппированы вместе, чтобы их было легко найти.

astrosteve 30.08.2016 01:41

А что делать, если у вас есть запрос, объединяющий несколько таблиц?

leandronn 17.11.2016 23:39

Я поздно присоединился к теме, но хочу написать здесь свой ответ:

В моих последних двух проектах есть разные тенденции, например, в одном из них мы использовали:

To get Data : s<tablename>_G
To delete Data : s<tablename>_D
To insert Data : s<tablename>_I
To update Data : s<tablename>_U

Это соглашение об именах также сопровождается префиксом слова dt во внешнем интерфейсе.

Пример:

exec sMedicationInfo_G
exec sMedicationInfo_D
exec sMedicationInfo_I
exec sMedicationInfo_U

С помощью приведенных выше соглашений об именах в нашем приложении мы получили хорошие и легко запоминающиеся имена.

Во втором проекте мы использовали те же соглашения об именах, но с разницей:

To get Data : sp_<tablename>G
To delete Data : sp_<tablename>D
To insert Data : sp_<tablename>I
To update Data : sp_<tablename>U

Пример:

exec sp_MedicationInfoG
exec sp_MedicationInfoD
exec sp_MedicationInfoI
exec sp_MedicationInfoU

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

DOK 14.06.2009 15:36

Спасибо DOK, да, его легко запомнить, и мы, разработчики, не боимся каких-либо сложностей в именах

Gaurav Aroraa 15.06.2009 09:29

Почему не _C _R _U _D?

onedaywhen 15.06.2009 12:24

@onedaywhen - это хорошая идея, я предлагаю нашему администратору базы данных, чтобы мы могли соответствующим образом поддерживать преобразование имен. Но главный мотив этого соглашения об именах - правильно представить весь объект, если я ничего не пропустил ...

Gaurav Aroraa 18.07.2012 09:57

Префикс sp_ использовать не рекомендуется.

Piyey 28.07.2017 00:54

Другие вопросы по теме