1

subjectサブジェクトが別のサブジェクトの前提条件になる可能性があるため、再帰的なテーブルがあります。

  • サブジェクトに前提条件はありません
  • サブジェクトは 1 つの前提条件を持つことができます
  • サブジェクトは 2 つの前提条件を持つことができます

2 つの前提条件を持つサブジェクトがあるため、列を指す FK と列を作成prerequisite_1prerequisite_2ました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 でコードを試しましたが、テーブルが作成されていません。

テーブル自身の PK を指す 1 つの PK 列と 2 つの FK 列を持つ再帰テーブルを作成するにはどうすればよいですか?

4

3 に答える 3

1

表に前提条件を入れる代わりにsubject、多対多の関係表を使用します。

CREATE TABLE prerequisite (
    subject_code CHAR(7),
    prerequisite CHAR(7),
    PRIMARY KEY (subject_code, prerequisite),
    FOREIGN KEY (subject_code) REFERENCES subject(subject_code),
    FOREIGN KEY (prerequisite) REFERENCES subject(subject_code)
)

これにより、任意の数の前提条件が許可されます。

于 2013-07-30T16:30:37.297 に答える