SQL 数据库:table 列与其自身有关系

SQL Database : table column has relationship to itself

你好伙计,我有一个问题。我想做一个简单的招生系统,所以我想出了一个"subjects"table。问题是这个主题 table 有一个先决条件列,该值是来自同一 table.

的另一个主题
E.g
| subID    | title         | prerequisite   |
|    345   | math54        | 555            |
|    555   | physi43       | null           |

我的问题是我做得对吗?在我看来,这并不是因为我根本无法制作外键。更糟糕的是,一门学科我有多个先决条件值

看来你的先决条件列不是强制性的,所以让一条记录指向另一条记录不是问题。但是如果你有 1:n 关系,最好使用辅助 table 和

MAIN_ID | PREREQUISITE_ID

这允许您拥有多个关系。如果可以有一个或 none 关系,则可以使用 MAIN_ID 作为键;如果每个 ID 可以有多个关系,则可以使用 MAIN_ID+PREREQUISITE_ID 作为键。

您正在尝试映射 1:n 关系。通常,您不会对单个列执行此操作。您可以使用 Prerequisites table:

来表达这一点
create table prerequisites (
    prerequisites_id int, -- auto-incremented, serial, identity
    subject_id int references subjects(subject_id),
    depends_on_subject_id int references subjects(subject_id)
);

因为课程会随着时间而改变,先决条件也可能会改变。反过来,这表明类型 2 table,这意味着依赖项有一个有效和结束日期。但是,这对于您现在所做的工作来说可能会很复杂。