SQL : Création d'une table relationnelle avec deux incréments automatiques distincts
Problème :
Vous souhaitez créer une table relationnelle avec deux colonnes auto-incrémentées, mais vous rencontrez un erreur.
Explication :
Votre tentative d'établir une table relationnelle avec plusieurs colonnes auto-incrémentées est basée sur une mauvaise compréhension du concept de clé primaire.
Clé Concepts :
-
Clé primaire : Un identifiant unique qui identifie chaque ligne d'un tableau.
-
Incrémentation automatique : Une fonctionnalité qui génère automatiquement une valeur unique pour le spécifié colonne.
Erreur :
- Attribution de la colonne ID comme clé primaire.
- En supposant que la colonne ID fournit une ligne unicité, ce qu'il fait non.
Résolution :
-
Supprimer les champs ID superflus : Supprimer les colonnes ID des deux tables car elles sont inutiles pour l'identification des lignes.
-
Déclarer l'unicité des lignes : Appliquer l'unicité des lignes en créant des contraintes uniques sur les clés dérivées des données, telles qu'une combinaison de champs de nom. Par exemple :
CREATE TABLE relational_table (
name_first CHAR(30),
name_last CHAR(30),
CONSTRAINT PK
PRIMARY KEY ( name_last, name_first )
)
Copier après la connexion
-
Créer une table associative : Pour établir une relation entre les deux tables, créez une table associative qui utilise les clés primaires des deux tables comme la clé primaire. Par exemple :
CREATE TABLE user_sport (
user_name CHAR(16) NOT NULL, -- FK
sport_code CHAR(4) NOT NULL, -- FK
start_date DATE NOT NULL,
CONSTRAINT PK
PRIMARY KEY ( user_name, sport_code )
)
Copier après la connexion
-
Supprimer les instructions d'incrémentation automatique : L'incrémentation automatique n'est pas nécessaire pour les tables relationnelles et peut prêter à confusion.
Avantages de la suppression :
- Applique unicité des lignes.
- Améliore l'intégrité des données.
- Élimine les enregistrements en double.
- Simplifie les relations de clé étrangère.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!