一对多MongoDB与SQL

马丁

我曾经在MongoDB中工作,如果要创建0-n或1-n关系,我可以创建一个数组,其中包含要引用的文档的所有ID,如下所示:

var Company = new Schema({
  name: String,
  Employee_IDs: [String]
});

现在,我试图弄清楚如何在SQL中执行此操作,对吗?我声称SQL中与MongoDB关系的等效项看起来像这样:

CREATE TABLE Company(
Company_ID INT NOT NULL,
name VARCHAR(20) NOT NULL,
PRIMARY KEY (Company_ID)
)

CREATE TABLE Employee(
Employee_ID INT NOT NULL,
Company_ID INT NOT NULL,
PRIMARY KEY (Employee_ID),
FOREIGN KEY (Company_ID) REFERENCES Company(Company_ID)
)

这样对吗?

熊猫

是的,这是关系数据库中的典型方法。

当然,在这种模式下,员工只能在一家公司工作。在现实世界中,有时可能有人在两个或两个以上的公司工作。然后,您将需要引用表并创建m:n关系,如下所示:

CREATE TABLE CompanyEmployee
(
    Company_ID INT NOT NULL,
    Employee_ID INT NOT NULL,
    PRIMARY KEY (Company_ID, Employee_ID),
    FOREIGN KEY (Company_ID) REFERENCES Company(Company_ID),
    FOREIGN KEY (Employee_ID) REFERENCES Employee(Employee_ID)
);

CREATE TABLE Employee
(
    Employee_ID INT NOT NULL,
    PRIMARY KEY (Employee_ID)
);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章