Table des matières
- Table des matières
- Tous les noms doivent utiliser la langue anglaise.
Cela restraint à utiliser les caractères du code ASCII standard et évite les problèmes dûs à l'utilisation d'accents - Aucun espace n'est toléré dans le nom d'un objet.
également pour des raisons évidentes de confusions. - Utiliser un ou plusieurs mots décrivant la fonction de l'objet.
- Chaque mot doit commencer par une majuscule et poursuivre avec des minuscules.
- Les mots peuvent être séparés ou non par des caractères soulignés "_".
L'utilisation des caractères soulignées est déconseillée parce qu'ils ajoutent des caractères inutiles lorsque la règle #4 est utilisée correctement. De plus, ils sont difficiles à taper ce qui réduit la vitesse de frappe du programmeur. - Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom de la base de données)
- Un caractère souligné "_"
- Règles générales
- Aucun suffixe
- Clé primaire (même nom que la table + type abrégé).
- Champs Timestamp pour identifier la version du record (RowVersion)
- Date de création du record. (CreationDate)
- Nom de l'usager qui crée le record. (CreationUser)
- Date de modification du record. (ModifDate)
- Nom de l'usager qui modifie le record. (ModifUser)
- Création d'un record: (suffixe "Ins")
- reçoit tous les champs en paramètre sauf le champs Timestamp,
- retourne en paramètre la valeur du champs Timestamp,
- retourne le succès ou non de la création du record.
- Destruction d'un record: (suffixe "Del")
- reçoit la clé primaire en paramètre,
- retourne le succès ou non de la destruction du record.
- Modification d'un record (suffixe "Upd")
- reçoit la clé primaire et le Timestamp en paramètre,
- doit affecter la date de modification à la date courante,
- doit affecter l'usager qui modifie le record à l'usager courant,
- retourne le succès ou non de la modification du record.
- Utiliser "V" pour préfixe
- Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom du logiciel)
- Règles générales
- Abbréviation de la table de provenance consistant de la première lettre de chaque mot constituant le nom de la table (en majuscule). Si deux tables ont les mêmes préfixes, ajouter des lettres en minuscules qui aideront à la compréhension.
- Un caractère souligné "_"
- Règles générales
- Utiliser "USP" comme suffixe
- Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom du logiciel)
- Une abbréviation décrivant l'utilisation générale de la SProc
- INS pour insertion de records
- DEL pour suppression de records
- UPD pour mise à jour de records
- Règles générales
- Utiliser "RUL" comme préfixe
- Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom du logiciel)
- Règles générales
- Utiliser "DEF" comme préfixe
- Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom du logiciel)
- Règles générales
- Utiliser "UDF" comme suffixe
- Trois lettres décrivant le cadre d'utilisation (ex. abbréviation du nom du logiciel)
- Règles générales
- Appuyer sur CTRL-SHIFT, INS pour ouvrir la fenêtre de choix de gabarit
- Choisir le gabarit à utiliser
- Appuyer sur CTRL-SHIFT, M pour ouvrir une fenêtre permettant de remplir les paramètres.
- Conserver la casse (case-sensitive) des objets
Note: Il pourrait être intéressant d'installer les serveurs SQL pour le développement en activant l'option "Case Sensitive" qui oblige à respecter la casse. - Utiliser les minuscules pour les commandes de DML (Data Manipulation Language)
(delete, insert, select, update) - Utiliser les MAJUSCULES pour les commandes de DDL (Data Definition Language)
(CREATE, ALTER, DROP, GRANT, etc) - Utiliser des espaces et non des TABs pour l'indentation
Option "Save tabs as spaces" de l'onglet Editor du menu Tools > Options - Utiliser quatres (4) espaces pour l'indentation
- Chaque champs d'une requête doit être sur une ligne et contenir un alias
(Format de l'alias définis plus bas) - Chaque champs d'une requête doivent être alignées à leur première lettre
- Ne pas dépasser un écran (à la résolution standard) de largeur
- Si une ligne doit être coupée, aligner les parties allant ensembles
- Aligner les sous-requêtes
- Mettre le terminateur de sous-requête ")" sous le débuteur de sous-requête "("
- Utiliser le mécanisme de GOTO pour la gestion des erreurs, et SEULEMENT la gestion des erreurs.
- Limiter l'accès direct aux tables systèmes. Utiliser les vues INFORMATION_SCHEMA à la place.
Nomenclature des objets
Règles générales
Le nom des objets devrait suivre les règles générales suivantes:Bases de données
Le nom des bases de données doit suivre, sans dérogations, les règles générales.Tables
Le nom des tables doit suivre la syntaxe suivante:Chaque table aura une vue et trois (3) SProcs correspondantes.
Les vues auront le même nom que la table, avec "_V" en suffixe. Elles contiendront tous les champs de la table correspondante. Si la table ne contient pas tous les champs obligatoires , elle devra, elle, les contenir en utilisant la valeur "NULL".
Les SProcs seront définies comme suit et devront porter le même nom que la table correcpondante, un suffixe indiquant la fonction de la proc, et le suffixe suivant "Prc".
Types abrégés
GUID: Global Unique Identifier (SQL Type uniqueidentifier)
UID: Unique Identifier (SQL Type integer, smallint, tinyint, bigint)
UCID: Unique Character Indentifier (SQL Type char)
Remarque: Ne par prendre des types variables (ex.: varchar) pour la clé primaire d'une table.
Vues
Le nom des vues devrait suivre la même syntaxe que celle des tables, soit:Stored procedures
Les stored procedures devraient être nommées selon les règles suivantes:Usagers
Les mêmes règles que celles utilisées par l'administrateur du réseau devraient être utilisées.Roles
Les mêmes règles que celles utilisées par l'administrateur du réseau devraient être utilisées.Règles (Rules)
Les règles ne font pas partie de la norme ANSI SQL-92. Elles sont aussi une "feature" de compatibilité avec les anciennes versions de SQL Server. Microsoft recommende d'utiliser les contraintes de vérifications (CHECK constraints) à la place. Dans le cas où on décide d'utiliser les règles malgré les contre-indications, les règles suivantes devraient être suivies:Défauts (Defaults)
Les défauts ne font pas partie de la norme ANSI SQL-92. Elles sont aussi une "feature" de compatibilité avec les anciennes versions de SQL Server. Microsoft recommende d'utiliser les contraintes (DEFAULT constraints) à la place. Dans le cas où on décide d'utiliser les défauts malgré les contre-indications, les règles suivantes devraient être suivies:Types de données définies par l'usager (User-defined data-types - UDDT)
Le nom des UDDT devraient se conformer à les règles générales. Il est cependant accepté de déroger à ces règles pour permettre une utilisation plus aisée. Les noms devraient cependant comporter le suffixe "Udt" pour les identifier rapidement.Fonctions définies par l'usager (User-defined functions - UDF)
Les UDF devraient se conformer aux règles générales suivantes:Scripts
Scripts de création
L'utilisation des gabarits de création de script est fortement recommandée. Ils assurent l'uniformité et qu'un minimum d'éléments se retrouvera dans chaque objet créé. Vous pouvez copier ces gabarits dans le répertoire d'installation deQuery Analyser (habituellement: C:\Program Files\Microsoft SQL Server\80\Tools\Templates\SQL Query Analyzer) Voici quelques gabarits de création des objets principaux:Utilisation des gabarits
Pour utiliser un gabarit dans Query Analyzer. Vous n'avez qu'à suivre les instructions suivantesRègles générales
Ces quelques règles serviront à aider la lecture/re-lecture du code et, dans certains cas, à la portabilité du code sur différentes installations de SQL Server.
Quelques exemples:
Création d'une table
Création d'une fonction
Création d'une procédure emmagasinée (stored procedure)
Création d'une vue
Requête standard
USE Pubs
select au_id as AuthorID,
au_lname as AuthorLastName,
au_fname as AuthorFirstName
from dbo.authors
where au_id = '409-56-7008'
and au_lname = 'Bennet'
Requête avec JOIN
select distinct
au.au_lname,
au.au_fname,
ti.title,
ti.price
from dbo.authors au
inner join dbo.titleauthor tiau
on au.au_id = tiau.au_id
inner join dbo.titles ti
on ti.title_id = ti.title_id
order by au.au_lname, 4
On peut désigner les colonnes de tri par leur emplacement (comme dans la requête précédente). Il est cependant recommendé de toujours utiliser le nom complet (avec alias de la table). Ceci permettra d'éviter toute confusion ou problème dûs à un changement dans la définition de la requête.
Glossaire
- Alias :
- Nom donné à un champs pour le renommer en lui donnant un autre nom plus significatif.
- SProcs :
- Abbréviation utilisé pour Stored Procedure.
- SQL :
- Le Structured Query Language (langage structuré de requêtes) a été développé pour permettre un accès rapide aux données stockées dans un RDBMS.
- Stored Procedure :
- Ensemble d'instructions Transact-SQL effectuant une tâche précise.
Ces instructions sont compilés ce qui augmente la vitesse d'exécution. - Transact-SQL :
- Langage de programmation créé par Microsoft.
Ce langage est un mélange de SQL ANSI et d'instructions maison qui permettent d'accéder aux objets du serveur. - Vue :
- Une vue est une requête SELECT sauvegardé dans la base de données. Il est donc possible d'y effectué les mêmes opérations qu'avec un SELECT, quelques exceptions s'appliquent.
Équivalent d'une requête sur Microsoft Access.

