gpt4 book ai didi

database-design - 时间表的数据库架构

转载 作者:行者123 更新时间:2023-12-04 06:11:54 24 4
gpt4 key购买 nike

有人可以帮我提供一个时间表应用程序的粗略数据库架构,我可以

  • 每天存储一段时间(2周)以用于不同的项目。前人A可以在同一天为projectA投入3个小时,为projectB投入4个小时
  • 使其易于获取项目总工时的报告,或由某人轻松获取所有项目的总工时。

  • 编辑:另一个要求是,每个人在特定时间段内的每个时间表都需要有一个字段,该字段指示该人已提交该时间表,而另一个说法是该时间表已获批准

    最佳答案

    从Eric Petroelje&mdma借来的:

    Employee 
    - EmployeeID (PK)
    - EmployeeName
    - Other_fields

    Project
    - ProjectID (PK)
    - ProjectName
    - Other_fields

    WorkSegment
    - WorkSegmentID (PK)
    - ProjectID (IX1)
    - EmployeeID (IX2)
    - Date (IX1, IX2)
    - StartTime
    - EndTime
    - PayrollCycleID (FK)

    WorkSegment的第一个索引是ProjectID,日期。 WorkSegment的第二个索引是EmployeeID,日期。这些索引不是唯一的。这样一来,一个人一天可以做一个以上的项目。索引允许报告项目或人员的工作时间。

    每个WorkSegment行持续一个时间段,一天,一个项目。每个员工都有描述他的工资周期所需的WorkSegment行。
    TimeSheetSegment
    - TimeSheetSegmentID (PK)
    - ProjectId (FK)
    - EmployeeId (FK)
    - PayrollCycleID (FK)

    在ProjectID,EmployeeID和PayrollCycleID上有唯一的索引。员工在工资核算周期中为其工作的每个项目都有一个TimeSheetSegment行。
    TimeSheet
    - TimeSheetID (PK)
    - EmployeeID (IX)
    - PayrollCycleID (IX)

    TimeSheet行将TimeSheetSegment和WorkSegment行组合在一起。 EmployeeID,PayrollCycleID索引是唯一的。
    Approval
    - TimeSheetID (PK)
    - PayrollCycleID (FK)
    - SubmittedTimestamp
    - ApproverID (FK)
    - ApprovedTimestamp

    提交时间表后,将创建“批准”行。这些字段可以是TimeSheet表的一部分。我使用四阶规范化对它们进行了分类,因为“批准”表可能具有与TimeSheet表不同的数据库访问权限。
    PayrollCycle
    - PayrollCycleID (PK)
    - PayrollCycleYear
    - PayrollCycleNumber
    - StartDate
    - EndDate
    - DirectDepositDate
    - CheckDate
    - Other_fields

    PayrollCycle表对某些日期字段进行了规范化处理,并提供了一个整数键,可以更轻松地将WorkSegment和TimeSheetSegment行组合在一起以创建一致的时间表。

    关于database-design - 时间表的数据库架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282403/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com