Exemple de décomposition 0NF->1NF (attribut multivalué)

ExempleSituation initiale

CTRL+C pour copier, CTRL+V pour coller
1
Élève(#login, nom, prénom, uvs)
Élève(#login, nom, prénom, uvs)

Exemple d'enregistrement :

CTRL+C pour copier, CTRL+V pour coller
1
('tpassoir', 'Passoire', 'Toto', ('SY02','NF26','NF17'))
('tpassoir', 'Passoire', 'Toto', ('SY02','NF26','NF17'))

Méthode

L'attribut uvs est multivalué (donc non atomique). On va donc créer deux relations, la première sans l'attribut uvs, et la seconde qui va contenir autant d'enregistrements que de valeur par enregistrement dans l'enregistrement initial.

ExempleSituation finale

CTRL+C pour copier, CTRL+V pour coller
1
Élève(#login, nom, prénom)
2
UVÉlève(#login=>Élève, #uv)
Élève(#login, nom, prénom)
UVÉlève(#login=>Élève, #uv)

En reprenant le même exemple, on va avoir l'enregistrement suivant dans Élève :

CTRL+C pour copier, CTRL+V pour coller
1
('tpassoir', 'Passoire', 'Toto')
('tpassoir', 'Passoire', 'Toto')

et les enregistrements suivants dans UVÉlève :

CTRL+C pour copier, CTRL+V pour coller
1
('tpassoir', 'SY02')
2
('tpassoir', 'NF26')
3
('tpassoir', 'NF17')
('tpassoir', 'SY02')
('tpassoir', 'NF26')
('tpassoir', 'NF17')