Sto cercando di creare una relazione uno a uno in un DB MySQL. Sto utilizzando il motore InnoDB e la tabella di base assomiglia a questo:Relazione One to One in MySQL
CREATE TABLE `foo` (
`fooID` INT(11) NOT NULL PRIMARY KEY AUTO_INCREMENT,
`name` TEXT NOT NULL
)
CREATE TABLE `bar` (
`barName` VARCHAR(100) NOT NULL,
`fooID` INT(11) NOT NULL PRIMARY KEY,
CONSTRAINT `contact` FOREIGN KEY (`fooID`) REFERENCES `foo`(`fooID`)
)
Ora, una volta ho installato questi ho modificare la tabella foo in modo che il fooID diventa anche una chiave esterna alla fooID in bar. L'unico problema che sto affrontando con questo è che ci sarà un problema di integrità quando cerco di inserire in entrambi. Vorrei un aiuto, grazie.
@ chris-shaffer Deve essere purtroppo due tabelle separate. Non ci sarebbe un modo di fare attraverso le transazioni? Grazie – Botto
@Botto: come ho scritto in un'altra risposta - in altri database è possibile rinviare i vincoli. Tuttavia MySQL 'leggero' non ne ha menzionato nella documentazione. –
Se devono essere due tabelle, scegliere quale tabella rappresenta l'entità effettiva, quindi scrivere il codice per gestire il caso in cui non esiste un record nell'altra tabella. Penso che sia il meglio che sarai in grado di fare. –