Comment définir une relation un-à-un dans MySQL
Les relations un à un se produisent lorsqu'il y a exactement un enregistrement dans la première table qui correspond exactement à un enregistrement dans la table associée.
MySQL ne contient aucune option «prête» pour définir la relation un-à-un, mais, si vous voulez l'appliquer, vous pouvezadd a foreign key from one primary key to the other primary key, en faisant cela, les deux tables auront la relation un-à-un relation automatiquement.
Exemple
Voici un exemple pour définir une relationone-to-one dans MySQL.
La table STOCK est utilisée pour stocker les données d'utilisation fréquentes comme stock_code et stock_name, tandis que STOCK_DETAIL est stocké les détails de l'entreprise. Les deux tables contiennent le même Stock_Id que la clé primaire. Et, dans la table STOCK_DETAIL, Stock_Id est la clé primaire et également une clé étrangère vers la table STOCK.
Note
Un autre exemple classique de un-à-un est la conception des profils utilisateur et utilisateur.
Script MySQL
Il s'agit de l'instruction SQL pour créer des tables et appliquer la relation dans MySQL.
DROP TABLE IF EXISTS `example`.`stock`; CREATE TABLE `example`.`stock` ( `STOCK_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `STOCK_CODE` varchar(10) NOT NULL, `STOCK_NAME` varchar(20) NOT NULL, PRIMARY KEY (`STOCK_ID`) USING BTREE, UNIQUE KEY `UNI_STOCK_NAME` (`STOCK_NAME`), UNIQUE KEY `UNI_STOCK_CODE` (`STOCK_CODE`) USING BTREE ) ENGINE=InnoDB AUTO_INCREMENT=50 DEFAULT CHARSET=utf8; DROP TABLE IF EXISTS `example`.`stock_detail`; CREATE TABLE `example`.`stock_detail` ( `STOCK_ID` int(10) unsigned NOT NULL AUTO_INCREMENT, `COMP_NAME` varchar(100) NOT NULL, `COMP_DESC` varchar(255) NOT NULL, `REMARK` varchar(255) NOT NULL, `LISTED_DATE` date NOT NULL, PRIMARY KEY (`STOCK_ID`) USING BTREE, CONSTRAINT `FK_STOCK_ID` FOREIGN KEY (`STOCK_ID`) REFERENCES `stock` (`STOCK_ID`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8;