一对多MongoDB vs SQL

时间:2016-02-25 10:20:52

标签: mysql mongodb

我习惯在MongoDB中工作,如果我在那里创建0-n或1-n关系,我可以创建一个包含我正在引用的文档的所有ID的数组,如下所示: / p>

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)
)

这是对的吗?

1 个答案:

答案 0 :(得分:0)

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

当然,员工只能在这个模型中为一家公司工作。在现实世界中,有可能有人为两家或更多公司工作。然后你需要参考表并创建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)
);