候选人和工作的薪水表

时间:2015-03-25 12:12:47

标签: sql sql-server

我有两个SQL表,候选人和工作:

create table dbo.Candidate ( 
  Id int not null constraint primary key clustered (Id),
  Name nvarchar (200) not null
)

create table dbo.Job ( 
  Id int not null constraint primary key clustered (Id),
  Name nvarchar (200) not null
)

我需要在两个表中包含SalaryValue,SalaryPeriod(Month,Year,...)和SalaryCurrency(EUR,USD等)......

我正在考虑使用以下三个表:

create table dbo.Salary ( 
  Id int not null constraint primary key clustered (Id),
  CurrencyId int not null,
  TimePeriodId int not null,
  Value decimal (10, 2) not null
)

create table dbo.Currency ( 
  Id int not null constraint primary key clustered (Id),
  Name nvarchar (20) not null,
  Code nvarchar (4) not null
)

create table dbo.TimePeriod ( 
  Id int not null constraint primary key clustered (Id),
  Name nvarchar (20) not null
)

您对此计划有何看法?

将薪资与候选人和工资与工作联系起来的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

Currency.Symbol - >重命名为Currency.CurrencyCode或只是代码,很可能是CHAR(3)。

候选人 - >通常最好将名称拆分为FirstName和LastName(也可能是MidName)。

我还要说工资可以改变。然后你需要把工资的StartDate和EndDate。

答案 1 :(得分:0)

<强>薪酬

根据公司的薪资结构,使用额外的工资表可能是有意义的,因为您现在就可以使用。特别是大公司使用工作级别和工资范围,因此如果这对您来说是个问题,请考虑在工资表中添加其他列,以便对其进行描述,例如JobLevel和/或Salary Range。请记住,这些信息可能仅供内部使用。

<强>候选

我不会直接与薪水表建立关系,因为候选人的薪资预期很可能会有很大变化。您应该考虑添加CurrencyIDTimePeriodIDSalary

<强>作业

如果您认为如上所述为薪资使用额外的表是有意义的,只需使用SalaryID创建与表的关系。