我想建立如下的數據庫場景:MySQL的 - 引用一個外鍵的多種可能的主鍵
CREATE TABLE IF NOT EXISTS `points` (
`po_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`po_north` INT,
`po_east` INT,
PRIMARY KEY (`po_id`),
) ENGINE=InnoDB;
CREATE TABLE IF NOT EXISTS `lines`(
`li_id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`li_from` INT NOT NULL,
`li_to` INT NOT NULL,
PRIMARY KEY (`li_id`),
FOREIGN KEY (`li_from`) REFERENCES points(`po_id`),
FOREIGN KEY (`li_to`) REFERENCES points(`po_id`),
) ENGINE=InnoDB;
現在我想建立第三個表,那瘡喜歡誰創造了一些元數據或改變的一個點或線:
CREATE TABLE IF NOT EXISTS `metadata` (
`me_type` ENUM('point','line') NOT NULL,
`me_type_id` INT UNSIGNED NOT NULL,
`me_permissions` VARCHAR(255) NOT NULL,
`me_created_by` INT UNSIGNED NOT NULL,
`me_created_on` DATETIME NOT NULL,
`me_last_modified_by` INT UNSIGNED NOT NULL,
`me_last_modified_by` DATETIME NOT NULL,
) ENGINE=InnoDB;
我的第一種方法是設置一個ENUM
與兩種類型(點線)。但問題仍然是,我無法正確地將外鍵引用到其中一個表。 MySQL中有沒有推薦的解決方案?
BTW: me_created_by
和me_last_modified_by
的字段應引用存儲一些用戶數據的表。
您的表中的點和線可以引用元數據嗎,即將外鍵'metadata_id'放在這兩個表中? – 2012-07-16 11:06:10