top of page

CONTRAINTES

Les contraintes sont des mécanismes qui empêche l'utilisateur de faire ce qu'il veut en restreignant les valeurs possibles dans une base de données. Le système va vérifier les contraintes et un message d'erreur va être envoyer si l’utilisateur tente une manipulation ne vérifiant pas une contrainte.

 

 

Il existe 5 principales contraintes :

- Clé primaire : valeur unique et non manquante.

- Clé étrangère : même valeur pour une variable commune à deux tables.

- Non nulité : interdit les valeurs manquantes.

- Unicité : valeur unique. Cependant, à la différence d'une clé primaire, l'unicité autorise les valeurs manquantes.

- Critère à vérifier : valeurs répondant à une condition.

 

 

Il y a deux manières de définir des contraintes :

- In-line : lorsque l'on crée la table.

 

CREATE TABLE sondage ( 

    id INT PRIMARY KEY,

    id_client INT

    CONSTRAINT id_client_fk FOREIGN KEY (id_client)

    REFERENCES clients(id_client),

    adresse VARCHAR(100) UNIQUE,

    date_de_naissance DATE NOT NULL,

    sexe CHAR(1) CHECK (sexe IN ('H', 'F'))

);

 

La clé étrangère nommée id_client_fk est appliquée à la variable id_client de la table sondage. Elle fait référence à la variable id_client de la table clients.

 

À savoir : pour définir une clé primaire qui est composée de plusieurs variables, on le fait sur la même ligne.

 

CREATE TABLE sondage (

    PRIMARY KEY(id_salle, id_batiment),

    ...

);

 

- Out-of-line : on crée la table puis on ajoute les contraintes.

 

CREATE TABLE sondage (

    id INT,

    id_client INT,

    adresse VARCHAR(100),

    date_de_naissance DATE,

    sexe CHAR(1)

);

 

Pour créer une contrainte, on utilise la commande ADD CONSTRAINT.

ALTER TABLE sondage

ADD CONSTRAINT id_pk PRIMARY KEY (id) ;

 

ALTER TABLE sondage
ADD CONSTRAINT id_client_pk FOREIGN KEY (id_client)
REFERENCES clients(id_client);

 

ALTER TABLE sondage

ADD CONSTRAINT adresse_u UNIQUE (adresse);

 

ALTER TABLE sondage

MODIFY (date_de_naissance CONSTRAINT date_nn NOT NULL);

 

ALTER TABLE sondage

ADD CONSTRAINT sexe_chk CHECK (sexe IN ('H', 'F'));

 

Avec la méthode Out-of-line, on doit nommer la contrainte que l'on crée. La plupart du temps, pour nommer une contrainte, on indique le nom de la variable à laquelle on applique la contrainte puis un diminutif de la contrainte.

 

Diminutifs couramment utilisés pour les contraintes :

- pk : clé primaire (primary key)

- fk : clé étrangère (foreign key)

- u : unicité

- nn : non nulité

- ck ou chk : critère à vérifier (check)

 

 

Un attribut référençant est l'attribut pour lequel on définie une clé étrangère.

Un attribut référencé est l'attribut pour lequel la clé étrangère fait référence.

 

Enfin, il existe deux options utiles pour les clés étrangères.

- ON DELETE SET NULL : si on supprime l’attribut référencé, l’attribut référençant sera NULL.

 

Exemple :

 

ALTER TABLE sondage
ADD CONSTRAINT id_client_pk FOREIGN KEY (id_client)
REFERENCES clients(id_client)

ON DELETE SET NULL;

 

- ON DELETE CASCADE : si on supprime l’attribut référencé, l’attribut référençant sera supprimé.

 

Exemple :

 

ALTER TABLE sondage
ADD CONSTRAINT id_client_pk FOREIGN KEY (id_client)
REFERENCES clients(id_client)

ON DELETE CASCADE;

bottom of page