One-to-one relationships occur when there is exactly one record in the
first table that corresponds to exactly one record in the related table.

MySQLには、一対一の関係を定義するための「準備完了」オプションは含まれていませんが、強制する場合は、あるプライマリキーから別のプライマリキーに外部キーを追加することができます** 両方のテーブルが自動的に1対1の関係になります。


ここでは、MySQLで** 1対1の関係を定義する例を示します。


one-to-one-relationship、title = "one-to-one-relationship"

STOCKテーブルは、stock

codeやstock

nameのような頻繁な使用データを格納するために使用され、STOCK

DETAILは会社の詳細が格納されます。両方のテーブルには、主キーと同じStock

Idが含まれています。また、STOCK

DETAIL表では、Stock

Idが主キーであり、STOCK表に対する外部キーです。

MySQLスクリプト

これはテーブルを作成し、MySQLで関係を強制するためのSQL文です。

DROP TABLE IF EXISTS `mkyong`.`stock`;
CREATE TABLE  `mkyong`.`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 `mkyong`.`stock__detail`;
CREATE TABLE  `mkyong`.`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;