我有两个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
)
您对此计划有何看法?
将薪资与候选人和工资与工作联系起来的最佳方法是什么?
答案 0 :(得分:0)
Currency.Symbol - >重命名为Currency.CurrencyCode或只是代码,很可能是CHAR(3)。
候选人 - >通常最好将名称拆分为FirstName和LastName(也可能是MidName)。
我还要说工资可以改变。然后你需要把工资的StartDate和EndDate。
答案 1 :(得分:0)
<强>薪酬强>
根据公司的薪资结构,使用额外的工资表可能是有意义的,因为您现在就可以使用。特别是大公司使用工作级别和工资范围,因此如果这对您来说是个问题,请考虑在工资表中添加其他列,以便对其进行描述,例如JobLevel
和/或Salary Range
。请记住,这些信息可能仅供内部使用。
<强>候选强>
我不会直接与薪水表建立关系,因为候选人的薪资预期很可能会有很大变化。您应该考虑添加CurrencyID
,TimePeriodID
和Salary
。
<强>作业强>
如果您认为如上所述为薪资使用额外的表是有意义的,只需使用SalaryID
创建与表的关系。