Bonsoir,


Citation Envoyé par Oishiiii Voir le message
Si le domaine de P#_SET dans la Figure 8-13 est un ensemble de "Part Numbers" et qu'un Part Number est sensé être de la forme Px
Les valeurs légales définies pour le type (domaine) P# des numéros de [type de] pièce sont effectivement de la forme Px. Autrement dit, P1 est une valeur légale, P2 et P3141 le sont aussi, mais pas la paire P1, P2.

Pour mémoire, la construction datienne est la suivante (Date donne l’exemple du domaine S# des numéros de fournisseur (cf. Databases, Types, and The Relational Model, page 32), mais cela vaut pour les numéros de type de pièce, toutes choses égales) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
TYPE P# POSSREP {C CHAR CONSTRAINT SUBSTR (C, 1, 1) = 'P'
                        AND CHAR_LENGTH (C) >= 2
                        AND CHAR_LENGTH (C) <= 5 
                        AND IS_NUMERIC (SUBSTR (C, 2, 4) } ;
POSSREP signifie « une représentation possible », car par exemple dans le cas coordonnés d’un point dans un espace à deux dimensions on peut préférer une représentation à une autre, à savoir coordonnées polaires vs. coordonnées cartésiennes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
TYPE POINT POSSREP CARTESIAN {X RATIONAL, Y RATIONAL)
           POSSREP POLAR {RHO RATIONAL, THETA RATIONAL) ;
P# est « possiblement représenté » par une chaîne de caractères C de deux à cinq caractères (CHAR chez Date est à interpréter comme VARCHAR en SQL), dont le premier est astreint à être le caractère "P" et les suivants à représenter un nombre (disons un entier >= 0 et <= 9999).

En passant, on observera qu'avec la structure retenue pour le type P#, il faudra se lever de bonne heure pour arriver à violer la 1NF...


Citation Envoyé par Oishiiii Voir le message
Définissions l'attribut P#_SET ou disons P#_LIST pour être clair, sur le domaine des chaines de caractères, disons varchar(100) pour être précis.
Une valeur 'P1, P2, P3' ne viole pas la 1NF. Exact ? Il s'agit bien d'une seule valeur au regard du domaine concerné.
Cet attribut étant du type VARCHAR(100), sa seule contrainte est de prendre des valeurs qui soient des chaînes de caractères limitées à 100 caractères. Comme la virgule (',') fait partie des caractères légaux au même titre que les caractères 'P', '1', '2', '3', la chaîne de caractères 'P1, P2, P3' est bien une valeur légale du type VARCHAR(100) et par contrecoup la 1NF est respectée.