我有一个subject
递归表,因为一个主题可以是另一个主题的先决条件:
- 主题可以没有先决条件
- 一个主题可以有 1 个先决条件
- 一个主题可以有2个先决条件
由于有 2 个先决条件的科目,我将prerequisite_1
和prerequisite_2
列 FKs 指向该subject_code
列:
CREATE TABLE subject(
subject_code CHAR(7),
subject_desc VARCHAR(255) NOT NULL,
no_of_units TINYINT UNSIGNED NOT NULL CHECK(no_of_units >= 0 AND no_of_units < 13),
prerequisite_1 CHAR(7),
prerequisite_2 CHAR(7),
PRIMARY KEY(subject_code),
FOREIGN KEY(prerequisite_1, prerequisite_2) REFERENCES subject(subject_code)
)ENGINE=INNODB;
我在 SQL Fiddle 上尝试了代码,但没有创建表。
如何创建一个包含 1 个 PK 列和 2 个 FK 列指向表自己的 PK 的递归表?