CREATE TABLE IF NOT EXISTS `default_schema`.`Employee` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`first_name` VARCHAR(200) NOT NULL,
`_last_name` VARCHAR(200) NOT NULL,
`employee_id` INT(11) NULL,
`employer_id` INT(11) NOT NULL,
PRIMARY KEY (`id`),
CREATE TABLE IF NOT EXISTS `default_schema`.`contractor` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`contractor_name` VARCHAR(200) NOT NULL,
`contract_number` VARCHAR(20) NOT NULL,
`contract_term` VARCHAR(50) NOT NULL,
PRIMARY KEY (`id`),
“雇员”可以有许多不同的雇主(“承包商”)。那么,在数据库中显示这一点的最佳方式是什么呢?在“employee”中创建几个字段,如“employer1”、“employer2”等,或者创建第三个表来描述雇员和雇主之间的关系
2条答案
按热度按时间omvjsjqw1#
我们通常通过引入第三个表来解决多对多关系,该表由不同的名称调用。。。关系表、连接表、连接表等。
例如:
为了表示“雇员”和“承包商”之间的关系,我们在此表中插入一行。
有时候,这种关系本身可能有一些属性。在本例中,可能有一些日期需要跟踪(合同、开始、终止)。可能存在状态(“已协商”、“正在进行”、“已完成”…)
mftmpeh82#
新领域
employee
table无法缩放。你必须事先知道一个雇员能拥有的雇主的最大数量(这是肯定会改变的)。最好将其建模为一个雇员的多个行,每个行代表不同的雇主。这最好在第三个表中完成,该表用于将雇员和雇主合并,因为雇主也可以有多个雇员。