次のデータベースシナリオを設定したいと思います。
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;
次に、3番目のテーブルを設定します。これは、ポイントまたはラインを作成または変更した人などのメタデータを傷つけます。
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
、2つのタイプ(点と線)でを設定することでした。しかし、問題は、テーブルの1つへの外部キーを適切に参照できないことです。MySQLでこのような問題に対して推奨される解決策はありますか?
ところで:とのフィールドはme_created_by
、me_last_modified_by
いくつかのユーザーデータを格納するテーブルを参照する必要があります。