首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何组织表来统计两个实体?

如何组织表来统计两个实体?
EN

Stack Overflow用户
提问于 2014-04-21 14:47:48
回答 1查看 24关注 0票数 1

现在我只有两张桌子

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS company (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250) NOT NULL
);

CREATE TABLE IF NOT EXISTS employee (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250),
    company_id INT,
    FOREIGN KEY (company_id) REFERENCES Company (id)
);

我需要创建一两个表来存储员工和公司的统计数据。对于员工统计数字,我需要记住该员工的所有以前的公司,当然也需要记住雇用日期和辞职日期。对于公司的统计数字,我需要记住所有辞职的员工。在我的情况下,组织DB结构的最佳方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-21 15:23:49

由于您有许多到多个关系,所以需要一个具有组合主键的聚合表company_employee,因此您需要:

代码语言:javascript
复制
CREATE TABLE IF NOT EXISTS company (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250) NOT NULL
);

CREATE TABLE IF NOT EXISTS employee (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250)
);

CREATE TABLE IF NOT EXISTS company_employee (
    company_id INT NOT NULL,
    employee_id INT NOT NULL,
    hire_date DATE,
    resign_date DATE,
    FOREIGN KEY (company_id) REFERENCES Company (id),
    FOREIGN KEY (employee_id) REFERENCES Employee (id)
);

因此,如果您需要聚合表中的任何内容,只需在适当表的键上使用JOIN即可。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23199732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档