21
Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie Hugues [email protected] 7 Le langage de Définition de Données SQL (sql plus oracle) Création de table Type des données contraintes

Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

Embed Size (px)

Citation preview

Page 1: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

1

Bases de données relationnelles

Harmonisation ESSI -MS ISI - MS IMAFA

Anne-Marie [email protected]

7 Le langage de Définition de Données SQL (sql plus oracle)

Création de tableType des données

contraintes

Page 2: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

2

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 3BD Relationnelles

7.1 Le langage SQLPLUS D ’ORACLE Langage de définition de données

CREATE DATABASE Etudiants

Créer une base de données

CREATE DATABASE database_name

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 4BD Relationnelles

7.2 Le langage SQL, SQLPLUS D ’ORACLE Langage de définition de données

Types des donnéesCHAR, VARCHAR,LONG

NUMBER, NUMBER (N), NUMBER (N,M)

DATE

Langage de définition de données (DDL) :

création de tablesmodification de tablesdestruction de tables

Langage de modification de données (DML):

insertion de tuplesmodification de tuplessuppression de tuples

vu ds chapitre suivant

Page 3: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

3

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 5BD Relationnelles

7.2 Types des données SQL (norme ISO)

CHAR :chaînes de longueur fixe < à 255 caractères<char_type> ::=CHAR(<length>)Ces chaînes occupent une taille fixe dans la base.

VARCHAR : chaînes longueur variable < 2000 caractères<varchar_type>::=VARCHAR(<maxlength>)

Ces chaînes occupent une taille variable dans la baseLONG :textes de longueur variable < 2G <long_type> ::=LONG

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 6BD Relationnelles

7.2Types des données SQL (suite)

Nombres (entiers,flottants, décimaux) sql ISO

<number_type> ::=NUMBER [(<precision>[,<scale>] ) ]

sql plusinteger(size); int(size); smallint(size); tinyint(size)

decimal(size,d) ; numeric(size,d)

Dates: yyyymmdd <date_type> ::=DATE En externe ces dates doivent être traduites (soit explicitement soit par coertion) en chaînes, et inversement. Elles sont stockées dans la base sous forme d'une information codée contenant :Siècle, Année, Mois, Jour, Heure, Minute, Seconde.

Page 4: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

4

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 7BD Relationnelles

7.3 Création de table, relation

L'objet table est constitué :

du schéma définissant la relation (noms et types des attributs + contraintes)des lignes

(tuples) présentes dans la table.

CREATE TABLE Etudiant (IdEtudiant NUMBER(5) PRIMARY KEY ,Nom VARCHAR(20) NOT NULL,Prenom VARCHAR(20) NOT NULL,DateNaiss NUMBER(4) default 1980);

SyntaxeCREATE TABLE { <schema>.} <table_name>( <column_name> <data_type> [default<exp>]<column_constraint> [<column_constraint>]* [, <table_constraint>]*

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 8BD Relationnelles

7.4 Gestion des tables

Le modèle relationnel sous-jacent utilise une valeur NULL qui est ajoutée à chacun des domaines de base. -> attribut obligatoire NOT NULLL'ensemble des lignes d'une table n'est pas

ordonné. Il constitue en ce sens un ensemble. Par contre il peut exister des lignes dupliquées. Le modèle est donc de type "bag". L'ensemble des attributs (colonnes) d'une table

est ordonné. Cet ordre est utilisé dans les commandes de mise à jour de tuples.

Page 5: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

5

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 9BD Relationnelles

7.5 Contraintes d ’intégrité

Contraintes d ’intégrité : constraint

CREATE TABLE Etudiant (IdEtudiant NUMBER(5) PRIMARY KEY ,Nom VARCHAR(20) NOT NULL,Prenom VARCHAR(20) NOT NULL,DateNaiss NUMBER(4) NOT NULL

constraint C1 unique (Nom, Prenom, DateNaiss));

Une violation de ces contraintes entraîne uneerreur/exception et retour en arrière de la commande SQLde modification l'ayant provoquée.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 10BD Relationnelles

Exemple :

CREATE TABLE ENREG( NumE NUMBER(6)NOT NULL,NomM VARCHAR(20) NOT NULL,Classe NUMBER(2) NOT NULL,Pays CHAR(20) NOT NULL,IdDepos NUMBER(5) NOT NULL,

CONSTRAINT clep_enr PRIMARY KEY(NumE,Pays),CONSTRAINT cles_enr UNIQUE (NomM,Classe,Pays))

Page 6: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

6

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 11BD Relationnelles

7.6 création d'index

Utile pour accélérer la recherche sur les colonnes souvent utiliséesOn peut créer plusieurs indexIls sont utilisés par le SGBD de manière transparente

CREATE INDEX index_nameON table_name (column_name)

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 12BD Relationnelles

Create table JURY(IdEtudiant NUMBER(5) NOT NULL REFERENCES Etudiant,NomMatière VARCHAR(20) NOT NULL,Note NUMBER(2),PRIMARY KEY (IdEtudiant , NomMatiere ));Create table JURY(IdEtudiant NUMBER(5) NOT NULL,NomMatière VARCHAR(20) NOT NULL,Note NUMBER(2),PRIMARY KEY (IdEtudiant , NomMatiere )FOREIGN KEY IdEtudiant REFERENCES Etudiant);

7.7 Clés étrangères

Équivalent àDoit être connue du système, pas de circularité

Page 7: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

7

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 13BD Relationnelles

7.7 Clés étrangères sous SQL (suite)

CREATE TABLE Enreg( NumE NUMBER(6) NOT NULL,NomM VARCHAR(20) NOT NULL,Classe NUMBER(2) NOT NULL REFERENCES Classes,Pays CHAR(20) NOT NULL,

CONSTRAINT clep_enr PRIMARY KEY(NumE,Pays),CONSTRAINT cles_enr UNIQUE (NomM,Classe,Pays))

CREATE TABLE Classes( NumC NUMBER(6) NOT NULL PRIMARY KEY;

Libellé CHAR(20) NOT NULL,)

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 14BD Relationnelles

7.8 Modification de la structure de la base

ajout d ’un attribut: ALTER TABLE Etudiant ADD(Adresse CHAR(20));

modification du type d ’un attribut : ALTER TABLE Etudiant MODIFY(Adresse CHAR(25));

suppression d ’un attribut : ALTER TABLE Etudiant; DROP COLUMN Adresse;

Page 8: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

8

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 15BD Relationnelles

7.9 Destruction

de la base :DROP DATABASE Etudiants

d'une tableDROP TABLE Etudiant;

d'un indexDROP INDEX table_name.index_name

des données d'une tableDELETE TABLE table_name

8 Langage SQLModification des données

Insertion ; suppression ; modificationséquences

Page 9: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

9

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 17BD Relationnelles

8.1 Modification des données

Insérer de nouvelles lignesINSERT INTO Etudiant VALUES(3 ,'Martin' ,'Pierre' ,1979);

Modifier les colonnes d ’une tableUPDATE EtudiantSET Adresse=‘Nice’ WHERE Nom=‘Dupont’;

Supprimer des lignesDELETE FROM Etudiant WHERE Adresse=‘ Nice ’;

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 18BD Relationnelles

8.2 Séquences : définition

compteurs entiers, persistants à travers les sessions, dont la durée de vie n'est donc pas limitée.

Pour engendrer automatiquementdesidentificateurs numériques, peuvent être utilisés, après conversion, pour créer des identificateurs de type "chaîne".génération par SQL de clés primaires.

éviter au programmeur la mise en place de verrous de blocage dur des tables entières.

Page 10: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

10

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 19BD Relationnelles

Séquences : syntaxe

<create_sequence_statement> ::= CREATE SEQUENCE <sequence_name>[<sequence_param>[,<sequence_param >]*]

<sequence_param> ::= increment by <integer> |start with <integer> |maxvalue <integer>|nomaxvalue |minvalue <integer>|nominvalue |

<drop_sequence_statement> ::=

drop sequence <sequence_name>

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 20BD Relationnelles

Séquences : utilisation

Les deux fonctions SQL, nextval et currvalretournent respectivement, une nouvelle valeur du compteur, et la valeur courante.<sequence_name>.nextval

augmente le compteur de son incrément et retourne la nouvelle valeur; sauf la première fois, où il retourne la valeur initiale.

l'évaluation de <sequence_name>.currvalretourne la valeur courante du compteur,sauf si <sequence_name>.nextval n'a jamais été appelée,

auquel cas il donne une erreur.

Page 11: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

11

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 21BD Relationnelles

Séquences : remarques

Ces deux types d'expressions peuvent figurer dans

la partie select d'une requête de type select from …

la partie values d'une requête de type insert ..la partie set d'une requête de type update ...

<sequence_name>.nextval ne doit figurer qu'une seule fois, dans une même requêtesi les deux expression figurent ensemble dans une même requête (et pour la même séquence), nextval sera toujours évalué avant currval.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 22BD Relationnelles

Séquences : exemplecreate sequence SeqIdEtud

start with 1increment by 1nocyclemaxvalue 10 000;

create table Etudiant (IdEtud varchar(30) primary key,....);

insert into Etudiant values ('98'|| to_char(SeqIdEtud.nextval ),.....);

insert into année-et('ESSI1',

SeqIdEtud.currval,

Page 12: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

12

9 Construction d ’une base de donnéesrelationnelle

ClésDépendances Fonctionnelles

Formes Normales

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 24BD Relationnelles

9 IntroductionDépendances Fonctionnelles.

Plusieurs types de contraintes (ou propriétés) peuvent exister sur une base de données.Parmi elles, les dépendance fonctionnelles permettent

d'améliorer la robustesse de la base, d'atténuer les redondances, de permettre à SQL certaines opérations automatiques de mises à jour.

tenir compte de ces contraintes permet d ’ arriver à une conception optimale de la base.

Page 13: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

13

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 25BD Relationnelles

9.2 Dépendances Fonctionnelles

contraintesclé = cas particulier de contrainte dépendance fonctionnelle plus général

dans une relation, certains attributs en "déterminent" d'autres, ou plus précisément, il n'y a pas deux tuples ayant les mêmes valeurs pour le premier ensemble d'attributs sans avoir également les mêmes valeurs pour le deuxième ensemble.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 26BD Relationnelles

Dépendance fonctionnelle : Définition formelle

Soient r une instance de la relation R, X et Y deux sous-ensembles d'attributs de R.

On dit que r satisfait la dépendance fonctionnelleX→Y et l'on note r |= X→Y

ssi. ∀t1∈r ∀t2∈r (t1.X = t2.X → t1.Y = t2.Y ).Si r satisfait plusieurs plusieurs dépendances fonctionnelles, df1, df2, ..., on note alors : r |= df1, df2, …

La contrainte X→ ∅ est toujours satisfaite.

La contrainte ∅→X signifie que la projection de la relation r sur le sous ensemble d ’attributs X est constante

Page 14: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

14

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 27BD Relationnelles

Exemple :

ENREG={NumE, Pays, NomM, Classe, Date, IdDep}

Dépendances vérifiées par chaque instance (en supposant un seul déposant par enregistrement) : df1 = NumE,Pays → NomM, Date

df2 = NumE,Pays → Classe, IdDep

df3 = NomM,Pays, Classe → NumE

autres dépendances "déduites" de ces trois.Par exemple : df4 = NomM,Pays, Classe → Date

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 28BD Relationnelles

Calculs sur les Dépendances Fonctionnelles

déterminer si un ensemble de dépendances ne sont pas redondantes.

représenter ces dépendances sous une forme minimale.

ExempleSoit R= {A, B, C, D} un schéma de

relation et l'ensemble des dépendances fonctionnelles :DF = { A→B, B→C, AC→D}.si r satisfait toutes les contraintes de DF, alors rsatisfait également les dépendances suivantes:A→C A→AC A→D A→ABCD

CD→D, ......Il faut donc se doter d'un outil de "déduction" de

dépendances.

Page 15: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

15

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 29BD Relationnelles

Calculs sur les Dépendances Fonctionnelles (suite)

Implication de dépendances Soient DF et DF' deux ensembles de dépendances fonctionnelles définies sur un schéma de relation R. On dit que DF implique DF', et l'on note DF |= DF'

ssi. pour toute instance r de la relation R, on a

r |= DF ⇒ r |= DF'.

ExempleA→B, A→C |= A→BC Les axiomes suivants permettent de démontrer toute implication entre dépendances fonctionnelles.Ce système inférentiel est noté |−, par opposition à |=qui dénote l'implication sémantique.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 30BD Relationnelles

Inférences de dépendances fonctionnelles

[InfDF1] Réflexivité |− X→X[InfDF2] Augmentation X→Y |− XZ→Y[InfDF3] Additivité X→Y, X→Z |− X→YZ[InfDF4] Projectivité X→YZ |− X→Y[InfDF5] Transitivité X→Y, Y→Z |− X→Z[InfDF6] Pseudo-transitivité

X→Y, YZ→W |− XZ→W

Page 16: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

16

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 31BD Relationnelles

Couvertures

Problèmeminimiser le nombre de dépendances et d'attributs

grâce au système inférentiel vu précédemment

établir une couverture minimale de dépendances fonctionnelles.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 32BD Relationnelles

9.3 Formes Normales.

décomposer les relations d'un schéma en des relations plus simples et plus "indépendantes".

faciliter la compréhension, :-)éliminer les redondances, améliorer les aspects incrémentaux faciliter la distributivité

en des sites répartis.

Page 17: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

17

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 33BD Relationnelles

9.3.1 Première Forme Normale

DéfinitionOn dit qu'un schéma relationnel R est en

première forme normale (1NF)ssi. les valeurs des attributs sont

atomiques

(ni set_of, ni list_of).

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 34BD Relationnelles

9.3.2 Deuxième Forme Normale

DéfinitionOn dit qu'un attribut A est nonclé dans R ssi. A n'est élément d'aucune clé de R.

2èmeForme Normale: définition On dit que R est en deuxième forme normale (2NF) ssi.

Elle est en 1NFAucun attribut noncléne dépend fonctionnellement d'une sous-clé.

Page 18: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

18

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 35BD Relationnelles

9.3.2 Exemple 2eme forme normale

Schéma 1joueur( Personne, Sport, Taille) Personne →Taille

la table joueur contiendra des redondances, puisque le même couple (personne_x, taille_y) va apparaître autant de fois que personne_x pratique de sports.On peut créer alors le schéma équivalent, constitué de deux tables

Schéma2pratique( Personne, Sport) hauteur( Personne, Taille)oùpratique= πPersonne, Sport(joueur)hauteur= πPersonne, Taille(joueur)

La table originale joueur peut alors être retrouvée par la formulejoueur= pratique >< hauteur

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 36BD Relationnelles

9.3.3 Troisième Forme Normale

Affirmer qu'une relation est en troisième forme normale consiste à dire

qu'elle est en 2NF et que les attributs non clés sont mutuellement indépendants.

Troisième Forme Normale, Définition

On dit qu'un schéma relationnel Rest en troisième forme normale (3NF) ssi. il n'existe aucun attribut nonclé A de R qui dépende transitivement d'une clé K,

il n'existe pas d'attribut nonclé A, ni de clé K, ni d'ensemble L vérifiant :DF |= K →L, DF |= L →A, DF |≠ L →K, A∉KL

Page 19: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

19

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 37BD Relationnelles

9.3.4 Processus de décomposition d'une table

Problème"éclater" ces tables pour

éviter des redondances minimiser les risques d'erreurs lors des mises à jour.

attributs clés présents dans plusieurs tables et en quelque sorte "redondants".autres attributs susceptibles de nombreuses mises à jour. C'est donc sur ceux ci que portera l'analyse.

Remplacer une table par deux (ou plus) projections selon certains attributs.

Pour ne pas perdre d'informations il faut :

pouvoir reconstruire la table initiale par jointurepouvoir reconstituer les contraintes initialesportant sur cette table.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 38BD Relationnelles

Algorithme denormalisation par décomposition

Décomposer, toute table qui n'est pas en 3NF, en deux sous-tables obtenues par projection.Repérer dans R une dépendance du type:

DF |= L →A, A∉L, A nonclé.

où L n'est pas une clé.

On projette alors R en deux tables, une sur les attributs R -{A} et l'autre sur les attributs AL. La deuxième table possède L comme clé. On réitère alors le processus, en sachant qu'une table binaire est toujours en 3NF.

REMARQUESalgorithme de décomposition NP-complet.La décomposition peut produire plus de tables que nécessaire pour l'obtention de 3NF.

Page 20: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

20

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 39BD Relationnelles

Algorithme de normalisation par synthèse

mettre l'ensemble des dépendances fonctionnelles sous forme d'une couverture canonique.Pour chaque dépendance X →A ainsi obtenue,on crée une table par projection sur les attributs XA.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 40BD Relationnelles

Exemple

local(Prof, Dept, Immeuble)avec

Prof → DeptProf → ImmeubleDept → Immeuble

n'est pas en 3NF, puisque Prof est la seule clé et que (3) est une dépendance concernant des attributs nonclés.

Pour normaliser, il suffit de remplacer local par les deux relations obtenues par projection :local_prof(Prof, Dept)local_dept(Dept, Immeuble).

La table originale localest la jointure de ces deux tables.

Page 21: Bases de données relationnelles - …users.polytech.unice.fr/~hugues/BDR/Harmo/coursharmo/BDR3.pdf · 1 Bases de données relationnelles Harmonisation ESSI - MS ISI - MS IMAFA Anne-Marie

21

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 41BD Relationnelles

9.5.5 Forme Normale de Boyce-Codd(BCNF)

définition une relation R est sous forme normale de Boyce-Codd ssi. chacun des attributs ne dépend fonctionellement que des clés (en dehors des superclés ou de lui-même).

Autrement dit, quelque soit X et A, (DF |− X →A ) ⇒(A ∉X ou X superclé)

Toute relation sous forme normale de Boyce-Codd, est sous la 3NF.Il n'est pas toujours possible de décomposer une relation en un schéma équivalent composés de relations en BCNF.

V 1.0 -- 9/13/2004 © 2002 Anne-Marie Hugues -- 42BD Relationnelles

Résumé du chapitre 9dépendances fonctionnelles

non redondances, inférences

cléssuperclé, clé primaire (PRIMARY KEY), clé secondaire (UNIQUE)clé étrangère

formes normalesobjectifspremière forme normale : valeurs des attributs atomiques2ème forme normale: aucun attribut non clé ne dépend fonctionnellement d ’une sous clé3ème FN: aucun attribut ne dépend fonctionnellement d ’un attribut non cléautres

normalisationpar décompositionpar synthèse