Clé primaire multicolonne ou contrainte d'unicité multicolonne ?
Bonjour,
J'ai une petite question concernant les associations plusieurs-à-plusieurs.
Lorsque l'on souhaite avoir une contrainte d'unicité entre deux clés étrangères d'une association plusieurs-à-plusieurs, faut-il privilégier une clé primaire multicolonne ou une contrainte d'unicité multicolonne ?
Par exemple, dans le cas de garnitures de pizzas :
[PIZZA] 1,n --- (posséder) --- 1,n [GARNITURE]
Je cherche à forcer l'unicité de l'association entre une garniture et une pizza. Une pizza ne peut pas avoir 2 éléments de garniture identiques (par exemple, 2 fois des anchois).
je pourrai faire ceci (pour Postgresql) :
Code:
1 2 3 4 5 6
|
CREATE TABLE garniture_pizza(
pizza_id BIGINT NOT NULL,
garniture_id BIGINT NOT NULL
CONSTRAINT pizza_garniture PRIMARY KEY (pizza_id, garniture_id)
); |
ou
Code:
1 2 3 4 5 6
|
CREATE TABLE garniture_pizza(
pizza_id BIGINT NOT NULL,
garniture_id BIGINT NOT NULL,
UNIQUE (pizza_id, garniture_id)
); |
Dans ce dernier cas, il n'y a pas de clé primaire. Je peux ajouter des index sur chaque colonne, si nécessaire.
Est-ce que ma réflexion est censée et quelle est la solution à privilégier ?
Vincent