Quelle est la meilleure pratique de nommer la procédure stockée pour t-sql?

j'ai travaillé avec plusieurs grandes bases de données et les noms des procédures stockées étaient très différents:

SP_PrefixXXX
PrefixYyyXxx
Prefix: Rep, Act

Quelle est la meilleure pratique de nommer? Comment puis-je organiser de manière adéquate?

24
demandé sur GEOCHET 2009-05-16 07:24:28
la source

10 ответов

sp_ prefix signifie Procédure du système, et il devrait être utilisé comme préfixe pour les procédures régulières. Si vous le faites, il fera d'abord un voyage supplémentaire à la master base de données à chaque fois pour chercher la procédure, et si elle aurait le même nom que l'une des procédures là, cette procédure sera exécutée à la place de votre procédure.

en dehors de cela, vous êtes libre de créer n'importe quelle convention de nommage que vous aimez. L'une utilisée par notre entreprise est subsystem_object_action, par exemple main_Customer_Get. Cela met des procédures qui appartiennent ensemble proche les uns des autres dans la liste.

51
répondu Guffa 2009-05-16 09:05:32
la source

la meilleure convention de nommage est celle qui est cohérente dans toute votre base de données:)

Vraiment, c'est à vous et à votre équipe. Tant que c'est clair et raisonnable, vous avez une marge de manœuvre. Assurez-vous que tout ce que vous décidez, tout le monde s'y conforme. Beaucoup plus important que la convention elle-même est le fait que tout le monde s'accroche.

j'ai tendance à éviter sp_, usp_ et autres, parce que je les trouve redondants. Par exemple, une procédure stockée appelée InsertCustomer est clairement un sproc, et en aucune façon ne pourrait être confondu pour une table, vue, ou tout autre type d'objet. sp_ en particulier doit être évitée.

je préfère CamelCase, mais encore une fois, c'est une question de préférence. J'aime mon proc nom à donner une bonne indication de ce que le proc n' - par exemple:

InsertSalesOrder PopulateItemStagingTables CalculateOrderSummary PrepareCustomerStatements

etc.

7
répondu Aaron Alton 2009-05-16 07:31:00
la source

j'aime les préfixer donc les SP traitant des objets spécifiques sont regroupés ensemble. Donc au lieu de quelque chose comme:

    InsertUser
    UpdateUser
    DeleteUser
    GetUsers

je fais comme ceci:

    AppName_User_GetUser
    AppName_User_InsertUser
    AppName_User_UpdateUser
    AppName_User_DeleteUser

je trouve que c'est plus facile pour moi de gérer dans mon application de gestion SQL et dans mon code aussi.

comme les autres personnes ont dit, ne pas préfixer avec sp_

7
répondu rvarcher 2009-05-16 09:19:30
la source

Je ne sais pas s'il existe vraiment une "meilleure pratique" spécifique dans ce cas. Avec l'entreprise que je suis maintenant, la norme est usp[nom de procédure] (no underscore). Personnellement, je préférerais ne pas avoir de préfixe, mais si vous venez dans une nouvelle entreprise ou un nouveau projet et qu'ils ont des normes préexistantes, à moins qu'ils n'utilisent sp_ là où il y a une raison technique de ne pas utiliser ceci, ce n'est probablement pas une question qui mérite d'être débattue car je ne pense pas du tout que ce soit dans ce cas un problème flagrant. norme.

généralement, si vous avez un débat et que les autres membres de l'équipe ne sont pas d'accord avec vous et que la norme consensuelle est différente, la meilleure politique est de laisser tomber rapidement et d'accepter le consensus; la cohérence est généralement plus importante que la norme elle-même, tout comme le fait de bien s'entendre avec les autres membres de l'équipe et de ne pas acquérir la réputation d'être "difficile".

6
répondu PaulR 2009-05-16 18:53:37
la source

ni "sp_", ni"usp_". Nous ils sont des procédures stockées, le schéma n'a pas besoin de nous le dire.

je les nomme généralement juste pour ce qu'ils font, peut-être en les divisant sur des schémas. Les exceptions sont que j'utiliserai un préfixe " ssis_ "pour les procédures stockées qui ne sont pas directement utilisées dans le cadre des opérations" normales " de la base de données, mais qui sont utilisées par un paquet SSIS pour référencer la base de données. Je peux utiliser "fn_" pour indiquer une fonction, pour la distinguer à partir d'une procédure stockée.

6
répondu John Saunders 2015-05-22 11:58:44
la source

bien, préfixer le nom avec "SP_" est assez redondant: c'est nommer pour l'implémentation (c'est une SP, par opposition à une table ou une vue). Il y a beaucoup d'autres moyens (systebales, information_schema, comment vous l'utilisez) qui vous indiqueront comment il est implémenté.

à la place, vous devriez lui donner un nom pour son interface, pour ce qu'elle fait pour vous. Pour plus de commodité (comme beaucoup de choses finissent par ordre alphabétique), j'aime grouper comme des choses sous des noms, peut-être en utilisant le même préfixe.

Mais encore une fois, le nom de ce qu'il fait, pas comment il arrive à être mis en œuvre.

en général, je trouve que les conventions de nommage courantes pour les objets de base de données utilisent des underscores au lieu de CamelCase; c'est juste une question de convention. Ce qui n'est pas une simple convention est aussi la convention commune d'utiliser toutes les lettres minuscules pour les objets de base de données; cela vous permet d'ignorer les paramètres du serveur qui peuvent ou non être insensibles à la casse.

2
répondu tpdi 2009-05-16 07:32:30
la source

j'ai tendance à essayer de donner des noms qui non seulement donnent une idée de la fonction, mais aussi des variables d'entrée.

Par exemple: ProcessMathEquationWithFieldIdPlantid

cela aidera à donner des informations immédiatement à quiconque l'utilise, je crois.

j'évite aussi sp_ et usp_ de limiter les risques de collision de noms.

1
répondu James Black 2009-05-16 08:35:03
la source

je ne suis pas un pro mais j'aime cette façon

Préfixe de l'application = XY; View = v; Procédure Stockée = p; Fonction = f

Table: XY_Name
View: vXY_Name
Procedure: sXY_Name
Function: fXY_Name

Qu'en pensez-vous ? Je sais que certaines personnes utilisent les deux caractères pour identifier le type d'objet mais un caractère est suffisant pour la plupart des cas, non ?

0
répondu Muflix 2015-05-04 11:13:54
la source

mieux créer le schéma pour le module séparé.

alors donnez un nom significatif et simple.

Par Exemple: si vous travaillez projet d'école.

créer Etudiant schéma

nom de la procédure : AddStudent

Donc il va ressembler Etudiant.AddStudent dans procedurelist

même chose pour le Module de L'enseignant

0
répondu user2275860 2015-05-22 07:52:50
la source

Cela peut aider. Comme je suis programmeur front/backend, J'utilise ce qui suit pour MySQL et SQLServer:

SPx_PAGE/MODULE_ACTION_OBJECT 

x: R pour read, I pour insert, U Pour update, W pour write (combine insert si l'index n'existe pas ou update s'il existe) et D pour delete.

page/module: à l'endroit qui appelle la procédure

Exemples:

SPR_DASHBOARD_GET_USERS //reads users data
SPW_COMPANIES_PUT_COMPANY //creates or modifies a company
0
répondu leandronn 2016-11-17 23:49:45
la source

Autres questions sur