我有一個工作數據庫,我只使用非識別關係,除了多對多連接。無論如何,我必須改變它,所以我想我會在路上改進它;我剛剛讀到了非識別關係與識別關係之間的區別,我已經瞭解到後者應該用在沒有父母的情況下孩子不能存在的地方。舉例來說,我有一個'會議'表,基本上是一組具有一些共同價值的'Votings' - 孤獨'Meeting'沒有權利,所以我只是在非識別關係上使用級聯刪除,但現在我已經加入了他們用於識別一個。所以我做了一些其他的表格。顯然不是所有的人,但不是我結束了這張「結果」表,它有... 11個主鍵和一個外鍵!變更前只有三個外鍵。如果我不必一路一路回去找到根源,那麼它確實只對管理有所幫助,但是會有成千上萬的記錄,我想知道它是否會產生一些真正的影響。性能或數據庫的大小。這是否要走?對我來說,它只是看起來奇怪,當簡單的連接表中有如此多的數據... 識別關係會產生太多密鑰?
「結果」表:
CREATE TABLE IF NOT EXISTS `deputydb`.`Result` (
`Options_id` INT UNSIGNED NOT NULL,
`Options_Votings_id` INT UNSIGNED NOT NULL,
`Options_Votings_legalNumberSets_id` INT NOT NULL,
`Options_Votings_HeadingsForVotings_id` INT UNSIGNED NOT NULL,
`Options_Votings_Meetings_id` INT UNSIGNED NOT NULL,
`Options_Votings_Meetings_Venues_id` INT UNSIGNED NOT NULL,
`Options_Votings_Meetings_Venues_Settings_id` INT UNSIGNED NOT NULL,
`Options_Votings_Meetings_HeadingsForMeetings_id` INT UNSIGNED NOT NULL,
`Microphones_id` INT UNSIGNED NOT NULL,
`Microphones_Venues_id` INT UNSIGNED NOT NULL,
`Microphones_Venues_Settings_id` INT UNSIGNED NOT NULL,
`People_id` INT UNSIGNED NOT NULL,
PRIMARY KEY (`Options_id`, `Options_Votings_id`, `Options_Votings_legalNumberSets_id`, `Options_Votings_HeadingsForVotings_id`, `Options_Votings_Meetings_id`, `Options_Votings_Meetings_Venues_id`, `Options_Votings_Meetings_Venues_Settings_id`, `Options_Votings_Meetings_HeadingsForMeetings_id`, `Microphones_id`, `Microphones_Venues_id`, `Microphones_Venues_Settings_id`),
INDEX `fk_Result_Microphones1_idx` (`Microphones_id` ASC, `Microphones_Venues_id` ASC, `Microphones_Venues_Settings_id` ASC),
INDEX `fk_Result_People1_idx` (`People_id` ASC),
CONSTRAINT `fk_Result_Options1`
FOREIGN KEY (`Options_id` , `Options_Votings_id` , `Options_Votings_legalNumberSets_id` , `Options_Votings_HeadingsForVotings_id` , `Options_Votings_Meetings_id` , `Options_Votings_Meetings_Venues_id` , `Options_Votings_Meetings_Venues_Settings_id` , `Options_Votings_Meetings_HeadingsForMeetings_id`)
REFERENCES `deputydb`.`Options` (`id` , `Votings_id` , `Votings_legalNumberSets_id` , `Votings_HeadingsForVotings_id` , `Votings_Meetings_id` , `Votings_Meetings_Venues_id` , `Votings_Meetings_Venues_Settings_id` , `Votings_Meetings_HeadingsForMeetings_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Result_Microphones1`
FOREIGN KEY (`Microphones_id` , `Microphones_Venues_id` , `Microphones_Venues_Settings_id`)
REFERENCES `deputydb`.`Microphones` (`id` , `Venues_id` , `Venues_Settings_id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_Result_People1`
FOREIGN KEY (`People_id`)
REFERENCES `deputydb`.`People` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
「其中有... 11個主鍵」我明白你在說什麼,但聽起來很不對。更好地使用「帶11個字段的複合主鍵」。 – jynus