Estoy tratando de hacer una relación uno a uno en una base de datos MySQL. Estoy utilizando el motor InnoDB y la tabla básica se parece a esto:relación uno a uno en 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`)
)
Ahora, una vez que he establecido que éstos alteran la tabla foo para que el fooID también se convierte en una clave externa a la fooID en la barra. El único problema al que me enfrento con esto es que habrá un problema de integridad cuando intente insertarlo. Me gustaría un poco de ayuda, gracias.
@ chris-shaffer Desafortunadamente tiene que haber dos tablas separadas. ¿No habría alguna manera de hacerlo a través de las transacciones? Gracias – Botto
@Botto: Como escribí en otra respuesta, en otras bases de datos es posible diferir las restricciones. Sin embargo, MySQL "ligero" no lo menciona en la documentación. –
Si tiene que ser dos tablas, elija qué tabla representa la entidad real, luego escriba su código para manejar el caso donde no exista un registro en la otra tabla. Creo que es lo mejor que podrás hacer. –