Chiave composta come chiave esterna (sql)

ecco le mie due tabelle di preoccupazione:

CREATE TABLE IF NOT EXISTS `tutorial` ( `beggingTime` time NOT NULL, `day` varchar(8) NOT NULL, `tutorId` int(3) NOT NULL, `maxMembers` int(2) NOT NULL, `minMembers` int(1) NOT NULL, PRIMARY KEY (`beggingTime`,`day`,`tutorId`), KEY `tutorId` (`tutorId`) ) CREATE TABLE IF NOT EXISTS `group` ( `groupId` tinyint(3) NOT NULL AUTO_INCREMENT, `status` varchar(20) NOT NULL, `groupName` varchar(50) NOT NULL, PRIMARY KEY (`groupId`) ) 

Mi piacerebbe creare un campo in ‘gruppo’ che si collegasse alle chiavi univoche composte in ‘tutorial’. Quindi immagino che la mia domanda sia, come faccio a mettere in relazione questi tavoli? devo creare campi di chiavi esterne in “gruppo” per ogni chiave primaria in “tutorial”?

Per la documentazione mySQL dovresti essere in grado di impostare una mapping di chiavi estranee ai materiali compositi, che richiederà la creazione di più colonne.

Aggiungi le colonne e inseriscile nella tabella dei group

 FOREIGN KEY (`beggingTime`,`day`,`tutorId`) REFERENCES tutorial(`beggingTime`,`day`,`tutorId`) 

Come ha fatto riferimento Steven nei commenti seguenti, è necessario provare a re-architettare questo in modo che la tabella di esercitazione utilizzi una chiave primaria effettiva (anche se si tratta solo di una chiave surrogata dell’id quadro). Ciò consentirà prestazioni migliori in quanto SQL è stato creato per questo tipo di relazione, non composita.

1] riscrivi la prima tabella: mettendo prima tutorId , è automaticamente una chiave tutta da sola. In effetti, tutto tranne l’ultimo delle colonne composte diventa una chiave.

 CREATE TABLE IF NOT EXISTS `tutorial` ( `beggingTime` time NOT NULL, `day` varchar(8) NOT NULL, `tutorId` int(3) NOT NULL, `maxMembers` int(2) NOT NULL, `minMembers` int(1) NOT NULL, PRIMARY KEY mykey (`tutorId`,`beggingTime`,`day`) ) 

2] Avere così tanti indici è molto costoso per le tabelle di scrittura pesanti. Quindi considera un campo aggiuntivo nel tutorial da usare come chiave esterna; forse un record_id autoincremento. Dagli qualche idea.