0

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

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

部门:

Id
Department

员工:

EmployeeId
LoginName
FK_DepartmentId

所以每个能力表应该是这样的:

CompetencyId
Code
Description

该计划是每个人都有核心能力和相应的工作类型和分数。我的第一个想法是,获得分数的最佳方法是拥有这样的能力来评分表格:

CompetencyScoreId 
EmployeeId_FK
CompetencyCode_FK
Score

然后我可以使用此人的 ID 从表中过滤。通过拥有多个表格分数,我猜如果有人更换部门,我只需要确保将他们从旧表格中删除并添加到新表格中

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

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

4

1 回答 1

1

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

核心竞争力

核心能力表应如下所示

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 将为您提供职位的所有能力。

职位变动

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

绝不应剥夺员工的核心能力。

于 2013-02-27T18:46:13.313 回答