我做得对吗?我知道这非常简单,但我刚刚获得了一些dba经验。我有一个名为emps的非静态实体表。emps表存储所有员工个人信息,如电话号码等。然后我有一个表叫做employeeofflinetraining。此表存储了在课堂培训(如叉车)中获得认证的所有员工。我是否只需在employeeofflinetraining表中放入一个外键就可以将培训记录分配给该员工id?emps(电话、机构、姓名)员工离线培训(gpcscore、叉车评分、forklifecertified、empsid)
eqqqjvef1#
是的。维基百科关于数据库规范化的条目你要找的是数据库规范化
雇员ID主键电话员工姓名代理ID
agencyid主键机构名称
员工离线培训ID主键employeeid foriegnkey到employee表GPC字符叉车核心叉车认证正如肖恩·兰格所指出的那样,编辑离线培训表有一些主要问题,这些问题在本回答中没有得到解决。
wribegjk2#
我会创建一个间接表,将trainingidMap到employeeofflinetraining。这为您在需要引入多种培训类型时提供了灵活性—您可以简单地向培训表中添加一行,而不必更改employeeofflinetraining表。您也可以考虑创建一个 Agency 以及 EmployeeAgency 同样的道理。
Agency
EmployeeAgency
CREATE TABLE Emps ( empId int unsigned not null auto_increment primary key, phone varchar(255), agency varchar(255), name varchar(255) ); CREATE TABLE Training ( trainingId int unsigned not null auto_increment primary key, name varchar(255) ); CREATE TABLE EmployeeOfflineTraining ( eotId int unsigned not null auto_increment primary key, empId int unsigned not null, trainingId int unsigned not null, score smallint unsigned, certifiedDate datetime, foreign key (empId) references Emps(empId), foreign key (trainingId) references Training(trainingId) );
2条答案
按热度按时间eqqqjvef1#
是的。维基百科关于数据库规范化的条目你要找的是数据库规范化
员工
雇员ID主键
电话
员工姓名
代理ID
机构
agencyid主键
机构名称
员工离线培训
员工离线培训ID主键
employeeid foriegnkey到employee表
GPC字符
叉车核心
叉车认证
正如肖恩·兰格所指出的那样,编辑离线培训表有一些主要问题,这些问题在本回答中没有得到解决。
wribegjk2#
我会创建一个间接表,将trainingidMap到employeeofflinetraining。这为您在需要引入多种培训类型时提供了灵活性—您可以简单地向培训表中添加一行,而不必更改employeeofflinetraining表。
您也可以考虑创建一个
Agency
以及EmployeeAgency
同样的道理。