数据库体系结构(帮助)



我这样做是否正确?我知道这非常简单,但我现在才获得一些DBA经验。

我有一个非静态的实体表,称为 Emps。Emps 表存储所有员工个人信息,如电话号码等。然后我有一个名为EmployeeOfflineTraining的表。此表存储通过课堂培训(如叉车(认证的所有员工。

我是否只需在 EmployeeOfflineTraining 表中放置一个外键即可将培训记录分配给该员工 ID?

恩普斯 (电话、代理机构、姓名(

员工离线培训 (GpcScore, Forklift Score, ForklifeCertified, EmpsId(

我会创建一个间接寻址表,将TrainingId映射到EmployeeOfflineTraining。这为您提供了灵活性,以防您需要引入多种培训类型 - 您只需向训练表添加一行,而不必更改 EmployeeOFflineTraining 表。

您也可以考虑以同样的方式创建AgencyEmployeeAgency表。

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)
);

是的.维基百科条目关于数据库诺米尔兹化 您正在寻找的称为Databse Normilzation

员工

员工 ID 主密钥

电话

员工姓名

机构编号

机构

机构 ID 主密钥

机构名称

员工离线培训

EMployeeOfflineTrainingId PrimaryKey

EmployeeId ForiegnKey to Employee Table

格普索克雷

叉车得分

叉车认证

编辑 正如肖恩·兰格所指出的那样,离线训练表存在本答案中未解决的主要问题。

最新更新