J'ai une base de données Class_Books qui relie les ISBN (de la table Books) aux Class_ID (de la table Classes). Je suis en train de changer ma table Books, donc la clé primaire est un Book_ID (autoincrement INT) au lieu de l'ISBN. Existe-t-il un moyen de mettre à jour Class_Books afin qu'il utilise Book_ID maintenant?Création d'une nouvelle table plusieurs-à-plusieurs
1
A
Répondre
1
MySQL supporte une syntaxe UPDATE multi-tables qui facilite grandement ce type de travail.
ALTER TABLE Class_Books ADD COLUMNS Book_Id INT; -- nullable
UPDATE Books b JOIN Class_Books cb ON b.ISBN = cb.ISBN
SET cb.Book_Id = b.Book_Id;
Ensuite, vous pouvez utiliser ALTER TABLE pour modifier les contraintes, faire cb.Book_Id NOT NULL
, et déposer cb.ISBN.
PS: Je recommande d'appeler Class_Books une table beaucoup à plusieurs ou une intersection tableau. Le mot relation signifie quelque chose de différent dans la théorie relationnelle, et cela n'a rien à voir avec les relations entre les tables.
Est-ce la même chose qu'une table * association *? Ou est-ce que je pense à autre chose? – mlschechter
@mlschechter: Cela me semble être un synonyme –
Bien sûr, ne l'appelez pas une * table de relations *, car cela équivaudrait à dire que vous utilisez un * nombre entier *. Sorte de vrai d'une certaine façon, mais cela semble maladroit et redondant. –