我已经得到了我确定的一个非常简单的数据库问题,但我甚至不知道谷歌是什么,所以希望有人可以帮助我。
我正在尝试创建两个互连的表。例如,假设我有一个员工表,其中包含员工姓名和员工ID,然后我创建另一个表employee_bonus,其中包含员工ID和奖金金额。我想要的是employee_bonus表每次插入一行时都会自动检查employee表,以确保employee表中存在employee id,如果不存在则拒绝insert。问题是,单个员工可能有多个奖金,所以我只想让它检查它是否存在,而不是一对一。那有意义吗?那可能吗?我该怎么做?那叫什么?
另外,我在MySql中这样做。
答案 0 :(得分:1)
答案 1 :(得分:0)
由于它不是一对一关系,因此为employee_bonus表提供了自己的主键,并在employee表的id列和employee_bonus表中的employee_id之间建立了外键关系。
答案 2 :(得分:0)
如果您想在尝试添加缺少的员工时避免插入错误,请尝试以下操作:
insert into employee_bonus
select ?, ?, ? -- put your insert values in here
from employee
where employee_id = ?; -- put the employee_id in here
如果员工存在,这将插入一行,如果不存在则不会执行任何操作。
答案 3 :(得分:0)
以下是您正在寻找的基本示例:
CREATE TABLE employees (
employee_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
family_name VARCHAR(100) NOT NULL,
first_name VARCHAR(100) NOT NULL,
birth_date DATETIME NULL DEFAULT NULL,
PRIMARY KEY(employee_id)
) ENGINE=INNODB;
CREATE TABLE employee_bonus (
bonus_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
employee_id INT UNSIGNED NOT NULL,
bonus_value DECIMAL(10,2) DEFAULT 0.00,
PRIMARY KEY(bonus_id),
KEY fk_employee_id (employee_id),
CONSTRAINT fk_employee_constraint FOREIGN KEY fk_employee_id(employee_id)
REFERENCES employees(employee_id) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=INNODB;