数据库体系结构(帮助)

0mkxixxg  于 2021-06-25  发布在  Mysql
关注(0)|答案(2)|浏览(389)

我做得对吗?我知道这非常简单,但我刚刚获得了一些dba经验。
我有一个名为emps的非静态实体表。emps表存储所有员工个人信息,如电话号码等。然后我有一个表叫做employeeofflinetraining。此表存储了在课堂培训(如叉车)中获得认证的所有员工。
我是否只需在employeeofflinetraining表中放入一个外键就可以将培训记录分配给该员工id?
emps(电话、机构、姓名)
员工离线培训(gpcscore、叉车评分、forklifecertified、empsid)

eqqqjvef

eqqqjvef1#

是的。维基百科关于数据库规范化的条目你要找的是数据库规范化

员工

雇员ID主键
电话
员工姓名
代理ID

机构

agencyid主键
机构名称

员工离线培训

员工离线培训ID主键
employeeid foriegnkey到employee表
GPC字符
叉车核心
叉车认证
正如肖恩·兰格所指出的那样,编辑离线培训表有一些主要问题,这些问题在本回答中没有得到解决。

wribegjk

wribegjk2#

我会创建一个间接表,将trainingidMap到employeeofflinetraining。这为您在需要引入多种培训类型时提供了灵活性—您可以简单地向培训表中添加一行,而不必更改employeeofflinetraining表。
您也可以考虑创建一个 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)
);

相关问题