IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

CREATE DOMAIN sql


Sujet :

Langage SQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 173
    Par défaut
    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

  3. #3
    ced
    ced est déconnecté
    Rédacteur/Modérateur

    Avatar de ced
    Homme Profil pro
    Gestion de bases de données techniques
    Inscrit en
    Avril 2002
    Messages
    6 065
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Gestion de bases de données techniques
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Avril 2002
    Messages : 6 065
    Par défaut
    Voici un extrait de la documentation de PostgreSQL, qui résume assez bien (je trouve) la notion de domaine :
    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 et R
    Mes tutoriels et la FAQ MySQL

    ----------------------------------------------------
    Pensez aux balises code et au tag
    Une réponse vous a plu ? N'hésitez pas à y mettre un
    Je ne réponds pas aux questions techniques par message privé, les forums sont là pour ça

  4. #4
    Membre éclairé Avatar de xess91
    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 408
    Par défaut
    Merci à vous deux,

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

    A bientôt

  5. #5
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 010
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 22 010
    Billets dans le blog
    6
    Par défaut
    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
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/12/2005, 11h54
  2. Create domain
    Par Ryan Sheckler dans le forum Requêtes
    Réponses: 4
    Dernier message: 21/12/2005, 11h54
  3. Problème de contrainte dans un "CREATE DOMAIN ..."
    Par VenusX117 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 15/02/2005, 18h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo