Showing all posts tagged #sql:


T-SQL Recommandations - à propos des conventions et la nomenclature des objets

Posted on February 18th, 2015

Il n'y a pas, à proprement parler, de convention officielle pour ce qui est du style et de la nomenclature des tables, des champs et autres objets que vous définissez en SQL. Comme dans tout contexte de programmation, commencez par savoir s'il existe une norme explicite ou implicite déjà en place avant même d'imposer votre style et une norme en particulier. Au besoin, consultez le standard ISO sur les métadonnées ou les modèles de références de Microsoft pour les bases de données. Vous y verrez des contradictions importantes... l'homogénéité passe avant le purisme, consultez vos collègues avant d'entreprendre des ajouts!

T-SQL Recommandations - à propos des schémas et de la structure d'accès

Posted on February 17th, 2015

Séparez les schémas objets de la notion de propriétaire. Les schéma par défaut est dbo, qui signifie database owner est un vestige de l'époque où SQL Server isolait les ensembles de bases de données par usagers. Depuis la version 2005, les tables appartiennent à un schéma (ne pas confondre avec un diagramme). Il s'agit d'un regroupement de tables portant un nom. Il est donc possible d'avoir plusieurs tables de même noms dans des schémas différents d'une même base de données. Les programmeurs C# peuvent faire l'analogie avec les namespaces puisqu'on utilise le point comme délimiteur, ou bien on peut aussi les voir comme des dossiers de tables.

Sur SQL Server on a donc la structure d'accès à 4 niveau séparés par des points :
Serveur.BaseDeDonnées.Schéma.Objet ou même plus simplement Serveur...Objet ou encore le très commun Schéma.Objet

Notez qu'il n'est pas toujours nécessaire de spécifier le serveur, la base de donnée ou le schéma car le contexte nous place déjà dans une base de donnée et un schéma par défaut. C'est suffisant pour beaucoup d'utilisations.

Cette notation est fort utile pour intégrer plusieurs sources de données dans une opération, mais peut devenir très lourde si on ne fait pas attention en utilisant du code généré par un outil. Gardez votre code clair et léger en tenant compte du contexte! Au besoin changez de base de donnée à l'aide de la commande USE. Il n'y a malheureusement pas l'équivalent aussi simple pour changer de schéma courant. Le schéma par défaut étant un attribut de l'utilisateur, il est possible de le changer avec la commande ALTER USER, mais je ne recommande pas cette approche lourde.

Plus de détails sur le site de Microsoft.


Introduction au SQL

Posted on February 17th, 2015

Le SQL est le langage servant à exploiter les bases de données relationnelles. Il est constitué de trois langages:
  1. Le DML (Data Manipulation Language) est constitué des commandes INSERT, UPDATE, DELETE et la très célèbre commande SELECT. Il sert essentiellement à manipuler des enregistrements.
  2. Le DDL (Data Definition Language) est constitué des commandes CREATE, ALTER, DROP et RENAME. Il sert à manipuler la structure des tables.
  3. Le DCL (Data Control Language) est constitué des commandes GRANT, DENY, REVOKE, COMMIT, ROLLBACK et LOCK. Il contrôle l'accès aux données.
Toutes ces commandes constituent un langage déclaratif. En effet, quand on s'adresse à une base de données, on déclare le quoi et non le comment. C'est ce qui fait la force et la complémentarité du SQL face aux langages impératifs, orientés objets et autres.

Le langage existe depuis 1974. Bien qu'il ait été normalisé à plusieurs reprises par ANSI et ISO, il convient en général d'être assez spécifique au moment d'implémenter le code. En effet, les principaux fabricants de SGBDR ont des dialectes et des conventions qui leurs sont propres. Oracle à son PL/SQL, PostgreSQL à le PL/pgSQL, Sybase et Microsoft ont le T-SQL comme extension du SQL standardisé en vue d'en faire un langage qui inclut un volet procédural en plus d'appliquer des filtres et autre opérations là où le langage standard ne le permet pas. Cette richesse est à double tranchant. Il est relativement rare de voir du code SQL qui n'est pas teinté de la plateforme où il est destiné. Au fil des ans, de nombreuses abstractions sont venues servir d'interface aux logiciels qui se connectent aux bases de données afin d'en standardiser l'accès tout en préservant leurs avantages (ODBC, JDBC, ADO, ... et le mapping relationnel objet).

Je vous recommande le document Les bases fondamentales du langage Transact SQL produit par l'Association Dotnet France pour approfondir le sujet.


Stéphane Denis

Contrat Creative Commons
Ces articles produits par Stéphane Denis sur stephanedenis.cc sont mis à disposition selon les termes de la licence Creative Commons Paternité 4.0 International.