我刚刚在这里注册,这是我的第一个问题。我希望我能清楚地解释自己,因为作为一个自学成才的开发人员,我不太会说专业术语。
我的问题:我的项目数据库保存员工信息,并具有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"