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,这意味着依赖项有一个有效和结束日期。但是,这对于您现在所做的工作来说可能会很复杂。
你好伙计,我有一个问题。我想做一个简单的招生系统,所以我想出了一个"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,这意味着依赖项有一个有效和结束日期。但是,这对于您现在所做的工作来说可能会很复杂。