Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 员工技能设计和将一个表的所有行添加到另一个表中_Database_Database Design - Fatal编程技术网

Database 员工技能设计和将一个表的所有行添加到另一个表中

Database 员工技能设计和将一个表的所有行添加到另一个表中,database,database-design,Database,Database Design,我正在努力弄清楚我的设计是否正确,以及您如何查询/插入它。员工拥有一套核心能力和特定于工作的能力。一个网站将要求对他们的核心能力进行评分,然后根据他们的工作类型要求一组特定的能力 到目前为止,我有一组表格,表示员工、部门(即工作类型)、能力(核心能力、软件能力等) 部门: Id Department 雇员: EmployeeId LoginName FK_DepartmentId 所以每个能力表都是这样的: CompetencyId Code Description CompetencyS

我正在努力弄清楚我的设计是否正确,以及您如何查询/插入它。员工拥有一套核心能力和特定于工作的能力。一个网站将要求对他们的核心能力进行评分,然后根据他们的工作类型要求一组特定的能力

到目前为止,我有一组表格,表示员工、部门(即工作类型)、能力(核心能力、软件能力等)

部门:

Id
Department
雇员:

EmployeeId
LoginName
FK_DepartmentId
所以每个能力表都是这样的:

CompetencyId
Code
Description
CompetencyScoreId 
EmployeeId_FK
CompetencyCode_FK
Score
计划是每个人都有核心能力和相应的工作类型和分数。我的第一个想法是,获得分数的最佳方式是拥有这样的能力来为表格打分:

CompetencyId
Code
Description
CompetencyScoreId 
EmployeeId_FK
CompetencyCode_FK
Score
然后,我可以使用该人员的id从表中筛选。通过拥有多个表分数,我想如果有人更改了部门,我只需要确保他们从旧表中删除并添加到新表中

当我添加一个新用户时,我需要以某种方式将核心表作为一组行粘贴到较大的表中。这是可能的还是合理的?是否可以设置一个约束,使用户名和代码组合在表中是唯一的


另一种方法是使用一个表格,其中能力代码为列,每个用户在表格中都有一行,列中有分数。我认为这样做会使添加列变得更加困难,我不知道如何将列名与我想要的描述相关联。

您的部门、员工和能力表都很好

核心竞争力

核心能力表应该如下所示

Core Competency
---------------
Core Competency ID
Employee ID
Competency ID
Competency Score
Competency Time Stamp
如果分数可以随时间变化,则需要一个时间戳,以便可以保持分数的变化

主要(集群)关键是核心能力ID

员工ID、能力ID和能力时间戳的唯一索引将允许您检索员工的行

关于能力ID和能力时间戳的另一个唯一索引将允许您检索能力的行,并查看分数随时间的变化

能力ID和能力得分下降的另一个非唯一索引将允许您检索给定能力中能力得分最高的员工

职位能力

添加新员工时,必须同时添加核心能力。如果你有一组工作职位的核心能力,你需要另一个类似这样的表格

Position Competency
-------------------
Position Competency ID
Position ID
Competency ID
主要(群集)关键是职位能力ID

位置ID是指向位置表的外键

职位ID、能力ID上的非唯一索引将为您提供某个职位的所有能力

位置变化

当员工更换职位时,应用程序应确定是否需要添加任何核心能力。我定义的数据库表将为应用程序提供进行确定所需的信息


核心能力不应从员工身上移除

一个人的能力得分是基于他们的能力,而不管他们的工作、他们的技能与某个职位的关系,还是两者都有?@ChrisSaxon所有员工都有一份核心能力列表。软件工程师应具备软件能力,系统工程师应具备系统能力等