Comment définir une relation un à un dans MySQL

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.

one-to-one-relationship

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;