Как определить отношения один-к-одному в MySQL
Отношения один-к-одному возникают, когда в первой таблице ровно одна запись, которая соответствует ровно одной записи в связанной таблице.
MySQL не содержит никаких «готовых» параметров для определения взаимно-однозначного отношения, но, если вы хотите обеспечить его соблюдение, вы можетеadd a foreign key from one primary key to the other primary key, при этом обе таблицы будут иметь взаимно-однозначное соответствие отношения автоматически.
пример
Вот пример определения отношенияone-to-one в MySQL.
Таблица 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;