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 :

Je ne comprends pas le KEY à la fin de la création de table


Sujet :

Langage SQL

  1. #21
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut Le type DATE et ses valeurs légales
    Je complète la réponse que j’ai faite sur le comportement de DB2 concernant le type DATE. Je fais à nouveau référence à DB2, mais la discussion vaut pour les autres SGBD, mutatis mutandis.

    Je vous renvoie encore à :
    DB2 Universal Database for z/OS, Version 8 - SQL Reference
    Où il est précisé que si l’on code Not Null With Default pour une colonne de type DATE, mais sans préciser de valeur par défaut, alors DB2 fournira la date du jour (CURRENT DATE) lors des INSERT.

  2. #22
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut Norme SQL et modèle physique des données
    Il s’agit ici de savoir si les index sont des objets relevant de la norme SQL.

    Je cite SQLpro :
    Pour ce qui est des index comme des fichiers ce sont des problématique physiques. Or SQL est un langage d'objets logiques. Donc les index et fichiers n'existent pas dans la norme SQL.
    Je confirme. Je dirais même que les tables sont les opérandes des opérateurs mathématiques Restriction, Projection, Jointure, Union, Intersection et compagnie. Autrement dit, ce sont nécessairement des êtres mathématiques dont la manipulation permet de produire de nouveaux êtres mathématiques, en conformité avec le principe de fermeture (le résultat du mariage de deux tables est une table et la récursivité peut jouer, de façon arbitrairement complexe). En revanche, je ne sache pas que nous disposions d’une algèbre d’index, lesquels ressortissent à un autre univers, disons le modèle physique de données.

    A l’instar du Modèle Relationnel de Données, la norme SQL n’a donc pas à se préoccuper des index, lesquels ne sont vraiment pas de son ressort et relèvent plutôt de la performance des bases de données, donc directement des SGBD, à l'étage physique.


    Je cite Eric93 :
    Pour les fichiers ok, pour les index, je suis absolument pas d'accord, ou tu as vu que SQL est un langage d'objet logique ? Et même si c'étais le cas, quand on passe au modèle physique il faut bien prendre en compte les index, je ne connais aucun SGDB relationnel s'appuyant sur SQL qui n'utilise pas d'index.
    En relation avec ce qui précède, on peut dire que vous confondez le niveau logique, relevant de la norme SQL, et le niveau physique, technologique, relevant directement de chaque SGBD et très fluctuant dans le temps, au gré des besoins et des innovations technologiques. Vous raisonnez DB2, parce que vous y trouvez l’instruction CREATE INDEX dans le SQL Reference de ce SGBD, mais qui vous dit que les paramètres de cette instruction sont pérennes ? Par exemple, on n’y trouve plus le paramètre SUBPAGES qui a été supprimé du jour où sont arrivés les index de type 2. Qui vous dit que les autres paramètres méritent de faire l’objet d’une norme et concernent donc les autres SGBD ? Qui vous dit que l’instruction CREATE INDEX elle-même ne disparaîtra pas un jour, parce que l’on aura trouvé nettement mieux pour booster les performances et qu’elle sera devenue sans objet ? Il serait vain, voire dangereux d’intégrer l’instruction CREATE INDEX à la norme.

    Les éditeurs de SGBD sont convenus qu’il était sage d’adhérer à une norme relative au typage, à la structure des tables, les opérateurs pour les manipuler et les contraintes permettant d’en garantir l’intégrité : tout ce qui relève du composant RDS de DB2. Concernant le niveau physique, chacun doit pouvoir être libre de faire comme il l’entend. Tous les éditeurs proposent une instruction CREATE INDEX, mais les index ne sont pas forcément systématiquement des arbres B+ (ce que sont les index de DB2). Que voulez-vous imposer comme normes au niveau physique ? Et même, en supposant que l’instruction CREATE INDEX soit intégrée à la norme, pourquoi ne pas incorporer les instructions (non nécessairement typiques de DB2) CREATE CLUSTER, CREATE DIMENSION, CREATE STOGROUP (laquelle ne concerne guère les SGBD autres que DB2), CREATE WRAPPER (utilisée en DB2, mais pas dans sa déclinaison z/OS), etc. ? La totale, quoi. Avec à la clé une norme de 20000 pages, complètement instable et rapidement obsolète...
    Les table spaces et les index sont là, les premiers pour assurer la persistance des données, les seconds pour permettre d’accéder plus rapidement à celles-ci. A la limite les VSAM LDS accueillant table spaces et index dans DB2 pourraient être jaloux de ne pas faire partie de SQL.
    Maintenant, qui nous dit que les index ne partiront pas un jour dans les poubelles de l’Histoire ? C’est un peu comme le rôle joué par le charbon dans les transports ferroviaires ou celui de la voile pour le transport du fret maritime. Aujourd’hui, c’est fini. Un jour sans doute, les DBA auront oublié le mot 'index' lui-même, car la technologie aura bien évolué. Pour leur part, les tables vivront ce que vivent les mathématiques, à moins que la théorie relationnelle soit assassinée et qu’on en revienne à l’âge de la pierre.

  3. #23
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 920
    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 : 21 920
    Points : 51 712
    Points
    51 712
    Billets dans le blog
    6
    Par défaut
    Salut fsmrel.

    J'avais pas le temps de mettre en termes aussi élégant ces concepts, car je donne formation sur formation en ce moment, notamment pour France telecom, le CEA et d'autres grand comptes... Et je bosse aussi le soir pour la révision de mon bouquin sur SQL et les week end pour mes clients locaux.

    Je te remercie donc d'avoir remis en place les choses et d'y avoir pris le temps.

    Un de ces jours il faudrait que nous fassions un livre sur la modélisation de données. Toi au sens théorique, moi au sens pratique !

    A +

  4. #24
    Expert éminent sénior
    Avatar de fsmrel
    Homme Profil pro
    Spécialiste en bases de données
    Inscrit en
    Septembre 2006
    Messages
    8 119
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Spécialiste en bases de données
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2006
    Messages : 8 119
    Points : 31 627
    Points
    31 627
    Billets dans le blog
    16
    Par défaut
    Citation Envoyé par SQLpro
    Un de ces jours il faudrait que nous fassions un livre sur la modélisation de données. Toi au sens théorique, moi au sens pratique !
    Why not? Il y a de quoi faire !

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/09/2010, 01h02
  2. [MySQL] Php, je ne comprends pas comment faire pour introduire des données dans une table
    Par Liondd dans le forum PHP & Base de données
    Réponses: 23
    Dernier message: 14/12/2006, 13h53
  3. sql ne comprend pas mon where!et me demande des parametres
    Par marie10 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/04/2004, 12h08
  4. [Rave] un message que je ne comprends pas
    Par Clotilde dans le forum Rave
    Réponses: 2
    Dernier message: 30/09/2003, 22h46

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