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

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

Некоторые люди добавляют к имени 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.


person DOK    schedule 26.10.2008    source источник
comment
Что означает usp?   -  person Midhat    schedule 04.05.2010
comment
Я считаю, что usp - это сокращение от user procedure. Это отличает его от системных процедур с префиксом sp_. Это важное различие, о чем вы можете прочитать в ответах.   -  person DOK    schedule 05.05.2010
comment
спасибо док. Grazie Mille   -  person Midhat    schedule 06.05.2010
comment
sqlblog.com/ blogs / aaron_bertrand / archive / 2008/10/30 / (см. также: stackoverflow.com/questions/871612/)   -  person mg1075    schedule 21.03.2013
comment
usp = сохраненная пользователем процедура   -  person Robino    schedule 24.06.2014
comment
Я поддерживаю его только потому, что он закрыт, надеюсь, чтобы показать сильным мира сего, что подобные вопросы полезны для сообщества.   -  person tsilb    schedule 11.02.2016
comment
Извините за задержку с комментарием, но это может помочь. Поскольку я являюсь фронтенд-программистом, я использую для MySQL и SQLServer следующее: SPx_PAGE / MODULE_ACTION_OBJECT x: R для чтения, I для вставки, U для обновления, W для записи (объединяет вставку, если индекс не существует или обновить, если существует) и D для удаления. SPR_DASHBOARD_GET_USERS   -  person leandronn    schedule 17.11.2016


Ответы (17)


В моем последнем проекте я использовал 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.

person dnolan    schedule 26.10.2008
comment
Что делать, если задействовано более одного объекта? Например, что, если sproc запрашивает информацию как из таблицы «Клиент», так и из таблицы «Заказы»? - person DOK; 26.10.2008
comment
Измененный вопрос, чтобы ответить на этот вопрос. - person dnolan; 27.10.2008
comment
Итак, вы удалили избыточный префикс usp_ и заменили его на App_. Как это лучше ?? - person Mitch Wheat; 27.10.2008
comment
Что происходит, если несколько приложений используют сохраненную процедуру? - person Mitch Wheat; 27.10.2008
comment
Спасибо, Митч, давайте проясним. Этот префикс приложения является заполнителем для другой аббревиатуры, указывающей фактическое имя приложения (или аббревиатуру). Таким образом, если 3 приложения используют одну базу данных, могут быть ICA_Product_Add, CRM_Product_Add и BPS_Product_Add. - person DOK; 27.10.2008
comment
Зачем дублировать каждую процедуру 3 раза для 3 приложений? Весь смысл процедур хранения состоит в том, чтобы иметь единое место, где происходит определенное действие. ICA_Product_Add, CRM_Product_Add и BPS_Product_Add уничтожают это. - person Jason Kester; 27.10.2008
comment
Джейсон, эти sprocs могут быть вставлены в разные таблицы. У них могут быть разные входные параметры или возвращаемые значения. Или у них может быть другое поведение. Если sprocs делают то же самое, я согласен, версия должна быть только одна. Как предположил кто-то другой, общие sprocs могут не иметь префикса. - person DOK; 27.10.2008
comment
Даже если один и тот же sproc не отображается в нескольких приложениях, он все равно упрощает поиск sproc, которые используются конкретным приложением, добавляя к нему префикс индикатора приложения, чтобы все они были сгруппированы вместе. - person DOK; 27.10.2008
comment
Если у вас есть несколько приложений, вызывающих одну и ту же процедуру, вам нужно быть особенно осторожным, любые изменения в этой процедуре могут нарушить работу этих нескольких приложений. С точки зрения наименования, это серая область, но вы можете назвать ее общим / глобальным или как угодно. @localghosts: спасибо за информативность. - person dnolan; 27.10.2008
comment
Я очень опаздываю ... но @Simon Shaw меня заинтриговал, почему вы ненавидите хранимые процедуры для таких вещей, как Product_GetList. Как бы вы предпочли это сделать? Даже если ваш способ наверняка лучше ненавидеть то, что кажется очень разумным, использование хранимой процедуры - это немного перебор? - person MrEdmundo; 21.01.2010
comment
Очень поздно, но все еще не могу понять после прочтения всех ответов, если вы не используете префикс usp или что-то в этом роде, как можно узнать, что это хранимая процедура, а не представление или функция? - person Hameed Syed; 22.10.2018
comment
@HameedSyed, вы не можете выполнить представление, функцию или таблицу ... см. sp_prefix, чтобы получить дополнительную информацию. - person Profex; 17.01.2019
comment
@dnolan, вместо того, чтобы указывать префикс App, не могли бы вы просто использовать разные Schema для каждого приложения? Я думаю, это подводит меня к тому, чтобы разобраться, для чего мне следует использовать схемы ... - person Profex; 17.01.2019
comment
По префиксу sp (БЕЗ подчеркивания. Не используйте sp_, это специальные системные объекты): это может показаться вам излишним, если вы используете только обозреватель объектов. Но если вы регулярно запрашиваете INFORMATION_SCHEMA или таблицы sys, возможность упорядочить по имени, а не включать столбец типа объекта, легко сэкономила мне десятки часов за эти годы. Он также позволяет использовать префиксы, такие как zz и tmp, для разделения процессов на более высоком уровне, чем ‹имя приложения›. - person dylanthelion; 29.07.2019

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

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

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

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

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

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

person DOK    schedule 26.10.2008
comment
Хм, я не понимаю. Почему sp снижает производительность? Usp или gsp в порядке? - person Erwin Rooijakkers; 15.05.2014
comment
@ user2609980 DOK говорит, что SQL Server сначала ищет процесс с префиксом sp_ в главной БД, а затем в текущей БД, если не найден - person GôTô; 07.12.2014
comment
+1 за четкое изложение чего-то, что имеет более запутанные объяснения в другом месте. Для меня это не новость, но я думаю, что это простое и лаконичное объяснение для начинающих. - person undrline - Reinstate Monica; 16.01.2019
comment
Ссылка на демонстрацию хита производительности взята из статьи, написанной в 2001 году. С тех пор она изменилась, вот более подробная статья (от 2012 года) Аарона Бертрана: sqlperformance.com/2012/10/t-sql-queries/sp_prefix - person Michael J Swart; 04.04.2019

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

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

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

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

  1. Разница между таблицей и представлением важна для тех, кто разрабатывает схему базы данных, а не для тех, кто обращается к ее содержимому или изменяет его. В редких случаях, когда требуется специфика схемы, найти ее достаточно легко. Для случайного запроса SELECT это не имеет значения. На самом деле, я считаю возможность обрабатывать таблицы и представления одним и тем же большим преимуществом.
  2. В отличие от функций и хранимых процедур, имя таблицы или представления вряд ли будет начинаться с глагола или быть чем-либо, кроме одного или нескольких существительных.
  3. Функция требует вызова префикса схемы. Фактически, синтаксис вызова (который мы все равно используем) сильно различается между функцией и хранимой процедурой. Но даже если бы это было не так, применимо то же, что и 1.: если я могу одинаково относиться к функциям и хранимым процедурам, почему бы и нет?
person Sören Kuklau    schedule 26.10.2008
comment
Так вот, как узнать, взаимодействуете ли вы с процедурой, функцией, представлением, таблицей или чем-то еще? - person Ant; 26.10.2008
comment
Я бы предположил, что функции могут начинаться с Get или быть именем, не начинающимся с глагола. Все остальное будет процедурой, потому что в конце концов они называются хранимыми процедурами. Процедуры скрывают такие особенности, как представления, таблицы и все остальное. - person Mark Stock; 26.10.2008
comment
Но это не венгерский. USP не является объявлением переменных в Венгрии. U не означает обновление, это означает пользователя, как в пользовательской хранимой процедуре, и он просто защищает от того, что SQL Server смотрит в главную БД каждый раз, когда он ищет вашу хранимую процедуру. Естественно, есть и другие способы, но usp обычно считается стандартом во многих корпусах, и, судя по тому, что я видел, он работает хорошо. Этому также учит Microsoft и рекомендованное Microsoft соглашение об именах: msdn.microsoft.com/en-us/library/ms124456 (v = SQL.100) .aspx - person asus3000; 08.06.2017
comment
@Ant Тип объекта можно напрямую определить по его синтаксису, например SELECT * FROM foo ясно, что foo - это TABLE или VIEW. SELECT * FROM dbo.MyFunction() - это UDF, SELECT * FROM @tvv - это возвращающая табличное значение переменная, а хранимые процедуры могут быть вызваны только через EXEC. Так что двусмысленности нет. - person Dai; 13.11.2020
comment
@Ant Что касается SELECT * FROM foo, не показывающего тип foo (поскольку foo может быть VIEW или TABLE) - это не имеет значения (это также может быть синоним!), Потому что они намеренно взаимозаменяемые - вы также можете INSERT INTO и UPDATE и VIEW тоже, не забывайте. Когда базы данных вносят критические изменения в свои схемы, они часто добавляют VIEWs в качестве замены для старых таблиц, поэтому, если таблица была названа tbl_Foo и была преобразована в CREATE VIEW tbl_Foo, то это просто глупо и неправильно по вашей собственные стандарты. Следовательно: не используйте системные префиксы венгерского языка в базах данных! - person Dai; 13.11.2020

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

Префикс:

  • 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
person Pittsburgh DBA    schedule 26.10.2008
comment
Теперь есть интересный взгляд на приставку. Похоже, это хороший способ разделить звенья по их использованию. - person DOK; 26.10.2008

TableName_WhatItDoes

  • Comment_GetByID

  • Customer_List

  • UserPreference_DeleteByUserID

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

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

person Jason Kester    schedule 26.10.2008
comment
Отделение z элементов от остальных - отличная идея. - person DOK; 27.10.2008
comment
Мне нравится этот метод. Их должно быть легко найти. Когда я просматриваю список первых sprocs глаголов и вижу 200 Gets, 200 Inserts, 200 обновлений, трудно найти все для конкретной таблицы или группы. Сначала я использовал метод глагола, и он быстро превратился в беспорядок. Имя таблицы сначала решает эту проблему. Так, например, в ответе выше все ваши комментарии или комментарии клиентов будут сгруппированы вместе, чтобы их было легко найти. - person astrosteve; 30.08.2016
comment
А что делать, если у вас есть запрос, объединяющий несколько таблиц? - person leandronn; 17.11.2016

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

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

person ConcernedOfTunbridgeWells    schedule 26.10.2008
comment
Именование sprocs sp_ ​​также является плохой идеей для скорости, потому что SQL Server пытается оптимизировать поиск для тех, которые основаны на предположении, что они являются системными процедурами. Посмотрите здесь, 5-й пункт вниз: rakph.wordpress.com/ 19 апреля 2008 г. / tips-store-procedure - person Ant; 26.10.2008

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

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

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

person Steven A. Lowe    schedule 26.10.2008
comment
Да, особенно спасибо за использование сокращений. - person DOK; 26.10.2008
comment
@ [DOK]: пожалуйста - что, без голосов? ;-) - person Steven A. Lowe; 26.10.2008
comment
Стив, ты проголосовал за. Я был слишком занят, читая массу ответов и комментариев, и мучительно размышлял о том, какой ответ лучше. - person DOK; 26.10.2008
comment
@ [DOK]: спасибо; «лучший» ответ - это, вероятно, комбинация, которая имеет смысл в вашей ситуации. - person Steven A. Lowe; 27.10.2008

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

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

person Gabriele D'Antona    schedule 26.10.2008
comment
Пакеты хорошие. Начиная с SQL Server 2005, Management Studio позволяет создавать решения для хранения связанных sprocs и других операторов SQL. - person DOK; 26.10.2008
comment
@DOK - обратите внимание, что эти пакеты не имеют места в самой базе данных. Это чисто артефакты интерфейсного инструмента. Вы не можете запрашивать по пакетам в словаре данных. Пакеты Oracle являются объектами первого класса в словаре системных данных и имеют свою собственную область действия. - person ConcernedOfTunbridgeWells; 12.04.2011

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

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

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

Пример:

P_CMS_USER_UserInfoGet

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

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

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

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

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

  • uspUserCreate
  • uspUserSelect
  • uspUserSelectByNetworkID

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

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

person Ant    schedule 26.10.2008

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

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

  • «get» - возвращает набор записей
  • «ins» - вставляет данные.
  • «upd» - обновляет данные
  • «del» - удаляет данные

e.g

wmt_ ins _ customer _details

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

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

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

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

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

person Russ Cam    schedule 26.10.2008
comment
Я вообще ненавижу использование подчеркиваний, но способ их использования - не только для разделения префикса, но и для разделения операции - упростит поиск при сканировании списка из сотен sproc. Pretty_neat_idea. - person DOK; 26.10.2008

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

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

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

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

person tsilb    schedule 26.10.2008

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

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

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

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

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

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

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

shopGetCategories
shopUpdateItem
person driis    schedule 26.10.2008
comment
Ну, вы никогда не знаете, когда вы работаете с базой данных, предназначенной для одного приложения, будет ли позже другое приложение, использующее ту же базу данных. В вашей ситуации это действительно помогает отделить звездочки. - person DOK; 26.10.2008

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

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

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

spu_archiveCollectionData 

or

spu_setAwardStatus

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

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

person Cruachan    schedule 26.10.2008
comment
spu_, интересно. Уклоняется от проблемы SQL Server sp_. - person DOK; 26.10.2008

Избегайте 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 могут работать с более чем одной таблицей.

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

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

person computinglife    schedule 26.10.2008

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

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

Для получения данных: s ‹tablename› _G
Для удаления данных: s ‹tablename› _D
Для вставки данных: s ‹tablename› _I
Для обновления данных: s ‹tablename› _U

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

Пример:

exec sMedicationInfo_G
exec sMedicationInfo_D
exec sMedicationInfo_I
exec sMedicationInfo_U

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

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

Для получения данных: sp_ ‹tablename› G
Для удаления данных: sp_ ‹tablename› D
Для вставки данных: sp_ ‹tablename› I
Для обновления данных: sp_ ‹tablename› U

Пример:

exec sp_MedicationInfoG
exec sp_MedicationInfoD
exec sp_MedicationInfoI
exec sp_MedicationInfoU
person Community    schedule 13.06.2009
comment
Интересный. Я никогда не видел, чтобы это делалось таким образом, но правильные названия легко запомнить или угадать. - person DOK; 14.06.2009
comment
Спасибо DOK, да, его легко запомнить, и мы, разработчики, не чувствуем никаких сложностей в именах - person Gaurav Arora; 15.06.2009
comment
Почему не _C _R _U _D? - person onedaywhen; 15.06.2009
comment
@onedaywhen - это хорошая идея, я предлагаю нашему администратору базы данных, чтобы мы могли соответствующим образом поддерживать преобразование имен. Но главный мотив этого соглашения об именах - правильно представить весь объект, если я ничего не пропустил ... - person Gaurav Arora; 18.07.2012
comment
Префикс sp_ не рекомендуется. - person Piyey; 28.07.2017