我刚刚在这里注册,这是我的第一个问题。我希望我能清楚地解释自己,因为作为一个自学成才的开发人员,我不太会说专业术语。

我的问题:我的项目数据库保存员工信息,并具有firstName,lastName,jobTitle等内容。(静态内容)。

当我也想开始收集每个员工的所有clockIn和clockOut事件时,我的问题就开始了。我想不出一种将它们添加到当前数据库中的优雅方法。

我对数据库不是很了解,但是我认为这类事情应该放在完全不同的数据库中,或者应该放在同一数据库的不同表中。
不知道哪个是正确的答案。

另一件事是这两个数据库或两个表需要以某种方式相互关联。当我从列表中选择一个员工时[数据来自第一个数据库或Tbl],并选择查看该特定员工的时钟事件历史记录[数据来自第二个数据库或Tbl],我应该看到该员工的进/出时钟,而不是一些其他员工的时钟事件历史记录。

分步教程不是必需的,但值得赞赏。你能给我一个简短的解释/概述如何做到这一点吗?如果需要,我可以添加有关的更多详细信息
该项目。

谢谢。

最佳答案

像这样:

CREATE TABLE Employees (
    EmployeeId bigint IDENTITY(1,1) PRIMARY KEY,
    FirstName nvarchar(50),
    LastName nvarchar(50),
    etc
)

CREATE TABLE EmployeeClocks ( -- rename as appropriate
    EmployeeId bigint, -- foreign key
    DateTime datetimeoffset(7),
    ClockInType tinyint, -- values defined by an enum inside your program code

    CONSTRAINT FK_EmployeeClocks_Employees FOREIGN KEY (EmployeeId) REFERENCES Employees (EmployeeId) ON DELETE CASCADE ON UPDATE CASCADE
)


现在进行一些查询:

获取员工的所有签到信息(假设签入ClockInType = 1并签出2):

 SELECT
     DateTime
 FROM
     EmployeeClocks
     INNER JOIN Employees ON EmployeeClocks.EmployeeId = Employees.EmployeeId
 WHERE
     Employees.FirstName = "Dick" AND
     Employees.LastName = "Butt"

10-08 08:51
查看更多