Как определить отношения один-к-одному в MySQL

Как определить отношения один-к-одному в MySQL

Отношения один-к-одному возникают, когда в первой таблице ровно одна запись, которая соответствует ровно одной записи в связанной таблице.

MySQL не содержит никаких «готовых» параметров для определения взаимно-однозначного отношения, но, если вы хотите обеспечить его соблюдение, вы можетеadd a foreign key from one primary key to the other primary key, при этом обе таблицы будут иметь взаимно-однозначное соответствие отношения автоматически.

пример

Вот пример определения отношенияone-to-one в MySQL.

one-to-one-relationship

Таблица STOCK используется для хранения данных о частом использовании, таких как stock_code и stock_name, а в STOCK_DETAIL хранятся данные о компании. Обе таблицы содержат одинаковый Stock_Id в качестве первичного ключа. А в таблице STOCK_DETAIL Stock_Id является первичным ключом, а также внешним ключом таблицы STOCK.

Note
Еще один классический пример индивидуального подхода - дизайн пользователя и его профиля.

MySQL Script

Это оператор SQL для создания таблиц и обеспечения связи в 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;