Mysql

每天每小時學生出勤表設計

  • May 15, 2019

我創建了一個表 ( attendance_details) 用於在 MySQL 中儲存學生每天的出勤情況。需要attendance每天擷取每小時(1-8 小時)。我在單獨的表 ( student_details) 中有學生詳細資訊。

截至目前,我在其中創建的欄位attendance_details是:(在attendance_no表中)、、、、、、、、、。Foreign Key``Primary Key``student_details``date``hour1``hour2``hour3``hour4``hour5``hour6``hour7``hour8

AUser只會標記absentees,其餘的students應標記為present

這是一個好的設計嗎,因為我希望每天的報告基於attendance每個月的全部小時數?前端正在開發中。students``class``C#

另外,我需要跟踪每個小時attendance

您能幫我SELECT查詢應該生成如下報告的查詢嗎?

在此處輸入圖像描述

MySQL 數據庫欄位如下圖所示:

在此處輸入圖像描述

看來 OP 正在將數據應如何儲存在數據庫中與數據在課堂出勤時如何顯示和/或輸入混為一談。

這些不一定是同一件事。顯示器不應驅動儲存。

UI 可以按照 OP 在課堂出勤表中顯示的方式顯示數據,並有一個中間層將這些值映射到數據庫中更多規範化的表中。

中間層的工作量更大,但在以下情況下更可擴展和可配置

(1) the attendance day is longer or shorter
(2) students are added or removed from the class

CLASS_ATTENDANCE 表中的條目將包含每天更改的所有數據,其中包含班級、學生和狀態的外鍵。

(0) CLASS_ATTENDANCE ID
(1) CLASS ID
(2) STUDENT ID
(3) DATE
(4) STATUS CODE
(5) and perhaps TEACHER ID of the person who took attendance

CLASS 表中的條目將具有

(0) CLASS ID
(1) COURSE ID
(2) PERIOD ID
(3) and perhaps TEACHER ID of the person who normally teaches the class

PERIOD 表中的條目將具有

(0) PERIOD ID
(1) START TIME (for example 08:00)
(2) END TIME (for example 08:55)

期間通常不會在一個學期內改變

希望有一個 CLASS_STUDENT 表來跟踪哪些學生被分配到哪個班級,並每天填寫 CLASS_ATTENDANCE 表。

(0) CLASS_STUDENT ID
(1) CLASS ID
(2) STUDENT ID

這只是標準化數據的一種方法。而且 CLASS_STUDENT 表和 CLASS_ATTENDANCE 表之間還有一些冗餘。

是的,這個設計很糟糕,想像一下再增加一個小時。

這是一個更好的方法:

Students(**StudentID**, LastName, ...[other Student Details])

Courses(**CouseID**, Description, ...[any other Course Specific Stuff])或他們參加的任何活動。如果您可以確定存在並且永遠只有一個,您可以跳過此

如果可能的話,有一個像每週應用的時間表之類的東西。您還可以有一個表來匹配課程和課程,這樣如果課程在每週一的第 5 節課上進行。

這是棘手的部分,因為您沒有提供任何有關它的資訊,但總的來說,僅在某些時間戳上匹配學生和課程會很糟糕。因為你無法驗證這一點。在您的情況下,您每天有 8 節課(只有工作日?)但是通過這種設計,如果需要,您可以添加第 9 節課。

Lessons(**LessonID**, StartTime, EndTime, Weekday)

現在核心部分:

Attendances(Stunden[FK], Course[FK], Lesson[FK], Date)

日期很重要,您不想列出未來 10 年所有可能的課程。

也不要儲存任何出席或未出席的資訊。有一個“預設”狀態(未參加),如果在出勤表中沒有學生、一些課程和課程的映射,那麼他沒有參加。

如果您想添加一些資訊,例如

  • 確實參加了
  • 因故沒有出席
  • 沒有參加 沒有原諒

在出勤表中添加一些整數/字節。

引用自:https://dba.stackexchange.com/questions/94489