Précédent   Forum des professionnels en informatique > Bases de données > Langage SQL
Langage SQL Forum d'entraide sur le langage SQL et sur les questions liées à la conception de schéma (DDL). Cours SQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/06/2011, 17h04   #1
Membre actif
 
Avatar de xess91
 
Homme
Inscription : octobre 2008
Messages : 407
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 407
Points : 160
Points : 160
Par défaut CREATE DOMAIN sql

Bonjours à tous,

Je lis en ce moment ce chapitre du cours Sql de sqlPro: ici, je ne suis pas passé par les précédents (1 à 6).

Dans l'exemple 60 sqlPro utilise l'expression suivante :

Code :
1
2
 
CREATE DOMAIN D_NUM_ID INTEGER
Ma question est la suivante à quoi sert la création de domaine en sql ?
J'ai fait quelques recherches sur le web, mais je n'ai rien trouvé mis à part la similarité avec CREATE TYPE. Serait-il possible de recevoir quelques exemples concret de l'utilisation de CREATE DOMAIN ?

Merci à tous pour vos réponses.
xess91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 19h42   #2
Expert Confirmé
 
Homme
Inscription : mai 2002
Messages : 1 638
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Rhône (Rhône Alpes)

Informations forums :
Inscription : mai 2002
Messages : 1 638
Points : 2 630
Points : 2 630
De mon point de vue ca permet de normaliser les types utilisés lors de la modélisation / création du mpd.

J'ai peut-être loupé quelques subtilités, d'autre se chargerons de me rectifier le cas échéant
punkoff est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 22h39   #3
ced
Rédacteur/Modérateur

 
Avatar de ced
 
Homme Cédric Duprez
Inscription : avril 2002
Messages : 3 823
Détails du profil
Informations personnelles :
Nom : Homme Cédric Duprez
Âge : 36
Localisation : France, Loiret (Centre)

Informations professionnelles :
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : avril 2002
Messages : 3 823
Points : 6 440
Points : 6 440
Voici un extrait de la documentation de PostgreSQL, qui résume assez bien (je trouve) la notion de domaine :
Citation:
Un domaine est essentiellement un type de données avec des contraintes optionnelles (restrictions sur l'ensemble de valeurs autorisées). L'utilisateur qui définit un domaine devient son propriétaire.

[...]Les domaines permettent d'extraire des contraintes communes à plusieurs tables et de les regrouper en un seul emplacement, ce qui en facilite la maintenance. Par exemple, plusieurs tables pourraient contenir des colonnes d'adresses email, toutes nécessitant la même contrainte de vérification (CHECK) permettant de vérifier que le contenu de la colonne est bien une adresse email. Définissez un domaine plutôt que de configurer la contrainte individuellement sur chaque table.
__________________
Rédacteur / Modérateur SGBD
Mes tutoriels et la FAQ MySQL

----------------------------------------------------
Pensez aux balises code et au tag
Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça
ced est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/06/2011, 10h06   #4
Membre actif
 
Avatar de xess91
 
Homme
Inscription : octobre 2008
Messages : 407
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 29
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : octobre 2008
Messages : 407
Points : 160
Points : 160
Merci à vous deux,

effectivement l'extrait que ced tu as joint est explicite !

A bientôt
xess91 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/06/2011, 19h47   #5
Rédacteur/Modérateur

 
Avatar de SQLpro
 
Homme Frédéric BROUARD
Expert SGBDR & SQL
Inscription : mai 2002
Messages : 10 954
Détails du profil
Informations personnelles :
Nom : Homme Frédéric BROUARD
Localisation : France

Informations professionnelles :
Activité : Expert SGBDR & SQL
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 10 954
Points : 17 774
Points : 17 774
En plus de cela, les DOMAINs permettent d'éviter de grossières erreur de transtypage implicite.
Exemple :
un nom tantôt en VARCHAR(32) tantôt en VARCHAR(50).
Si vous faites une jointure entre ces deux noms, alors sans vous le montrer le SGBDR devra faire un CAST implicite vers le VARCHAR(50) ce qui empêchera d'utiliser un éventuel index et donc conduit à des performances désastreuses.

En sus les contraintes CHECK des DOMAINs étant mutuelles, elles sont plus persistantes dans le cache des procédures dont le vidage répond à l'algorithme LRU (plus j'utilise, plus je conserve en RAM).

A +
__________________
Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
Site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
Blog SQL, SQL Server, modélisation données : http://blog.developpez.com/sqlpro
http://www.sqlspot.com : modélisation, conseils, audit, optimisation, formation
* * * * * Enseignant CNAM PACA - ISEN Toulon - CESI Aix en Provence * * * * *
SQLpro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h01.


 
 
 
 
Partenaires

Hébergement Web