0
のMySQL Workbenchを使用して、私はone_to_oneテーブルとONE_TO_MANYテーブルのSQLが似ていることがわかりました。両方とも、独自の外部キーを使用してその関係を実装します。
CREATE TABLE IF NOT EXISTS `mydb`.`one_to_one` (
`id` INT NOT NULL,
`parent_id` INT NOT NULL,
PRIMARY KEY (`id`, `parent_id`),
INDEX `fk_one_to_one_parent1_idx` (`parent_id` ASC),
CONSTRAINT `fk_one_to_one_parent1`
FOREIGN KEY (`parent_id`)
REFERENCES `mydb`.`parent` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB
したがって、私はちょうどONE_TO_MANYテーブルのように、親テーブルの同じ行を参照one_to_oneテーブルに行を挿入することができます。
これは1対1の関係に違反していませんか?あるいは、固有の外部キーを使用して1対1の関係を定義する必要がありますか?
あなたの意図は、PARENT_IDがone_to_oneテーブルに1つの以上の時間を入力することを許可したことがないのであればはい、それはまた、ちょうどPKのようなユニーク制約でなければなりません。なぜ私は複合PKを作るのか分かりません。あなたはそれを多くから多くに必要とするだけです。 – topshot