【问题标题】:Design of table structure in oracle databaseoracle数据库中表结构的设计
【发布时间】:2016-09-10 12:53:20
【问题描述】:

我有个需求,就是要保存2000名员工的考勤数据。

那么考勤表应该有设计吗?

一年中每天365列,预插入2000条记录

我会每天通过java程序更新它

5 列 2000 条记录每天插入 365 天?

或者有没有更好的方法?

【问题讨论】:

    标签: sql database oracle database-design


    【解决方案1】:

    我觉得你想多了。假设您已经有一个包含员工详细信息的员工表,那么您真正需要的只是另一个包含员工 ID 和日期(如果您关心的话,可能还有进出时间)的表,其中一行的存在表示该日期的出勤率,如果没有,则表示没有出勤率。然后,您可以通过在员工表上左加入来查找此缺勤天数。

    CREATE TABLE employee (
        id NUMBER PRIMARY KEY,
        -- other details...
    );
    
    CREATE TABLE attendance (
        employee_id NOT NULL REFERENCES employee(id),
        attendance_date DATE NOT NULL,
        PRIMARY_KEY(employee_id, attendance_date)
    );
    

    【讨论】:

    • 谢谢,这是个好主意,虽然我只保留缺席记录,但数据会更少。这样好吗?
    • @GopalArora 如果您真的可以假设大多数员工大部分时间都参加,并且您不需要跟踪进出时间,那么是的,这将是一个巧妙的技巧。唯一的问题是什么时候在那里插入记录?
    • 是的,我不需要计时,我会插入@EOD。
    猜你喜欢
    • 2013-02-17
    • 2021-08-10
    • 1970-01-01
    • 2012-10-20
    • 2021-04-05
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    • 2017-04-10
    相关资源
    最近更新 更多