我想創建一個在MySQL中的類的時間表。列是一週的日子,行是時間間隔(即7:00 - 8:00)。我也試圖有30分鐘的時間間隔,當某個特定主題是2小時時,它將跨越4行。每個單元格包含課程和房間的名稱。這是我試圖發展的一個小程序的一部分。到目前爲止,我知道要插入哪些數據,但我堅持創建正確的數據庫模式。真的需要關於如何讓這個開始的邏輯(即我應該使用哪些數據類型)。謝謝!這個數據庫模式和邏輯
回答
請問這個聲音:
CREATE TABLE TimeTable (
ID int(8) NOT NULL AUTO_INCREMENT,
Subject varchar(32) NOT NULL,
Room varchar(8) NOT NULL,
StartTime datetime NOT NULL,
EndTime datetime NOT NULL,
Day enum('Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday') NOT NULL,
PRIMARY KEY (ID)
);
你只存儲有關數據這個科目。
您提到的其他內容實際上取決於您用來輸出數據的任何語言。你不能真的把時間間隔放在數據庫中間。正如Damien_The_Unbeliever所說,數據庫並不完全是電子表格。
希望這是有道理的。
你可以有一個複合主鍵而不是'ID'字段:'(StartTime,Day)'。 –
是的,你說得對。我試圖用HTML輸出時間表,我認爲它足夠靈活來處理這種表格。謝謝! – JKTA
@Cobra_Fast很好的+1,但作爲一個側面說明這個PRIMARY KEY是每個記錄12或13個字節大。如果您使用存儲引擎InnoDB,它會將固定索引(本例中爲PRIMARY KEY)數據添加到每個二級索引。這也是爲什麼InnoDB查找二級索引和MyISAM更快的原因,但它需要更多的磁盤空間和更大的緩衝池。 –
您可以爲一天設置一列(您可以設置從1到7的天數),一列用於開始時間,一列用於結束時間。這樣你的查詢將變得更加簡單。
例子:
Day | Start | Finish
-----------------------------
1 8:30 12:00
1 13:00 15:00
這也會派上用場,當你不想堅持了30分鐘。
列是星期幾,並且各行時間間隔(即7:00 - 8:00)
這是一個糟糕的開局。您的專欄應該是單個課程的屬性,並且您的行應該在整個星期內成爲所有不同的課程。
你列可能是Day of Week
,Lesson of Day
,Duration
,Subject
,Room
,Teacher
,等等。在這個例子中,你的主鍵是(Day of Week, Lesson of Day)
。
這樣,如果您想要某個特定日子的日程安排,您只需選擇一切與Day of Week = 2
以獲得週二的日程安排。
每個單元格包含課程和房間的名稱。
這也違反了規範化的規律。每個「單元格」應始終具有不超過一個值。
真的需要如何得到這個開始(即我應該用什麼數據類型)
用最直觀的類型的邏輯。當存儲了一些選擇integer
,當存儲幾個字符選擇varchar(n)
,使用大量文字時使用text
等等...
感謝您的想法。 '我的意思是'列是一週的日子......'是可以使用HTML完成的顯示。這不一定是MySQL表格的格式。對不起,如果問題很混亂。 – JKTA
我會以這種方式創建它,並在此處進行規範化處理,併爲進一步擴展此應用程序提供更多機會。 表(屬性):
timeslots(id, start_time, end_time)
subjects(id, name)
timetable(timeslot_id, subject_id)
鏈接表是不必要的。時間段中沒有足夠的變化來證明這些使用的合理性。 – ninty9notout
但是,在這種使用情況下,可能沒有必要使用更復雜的用例,但1表數據庫(電子表格樣式)可能不夠用。這只是爲了迎合未來的擴張,它現在可能不是最好的。 – Jianhong
- 1. 多頁形式和數據庫邏輯?
- 2. 如何在數據庫中建模數據和邏輯?
- 3. 需要驗證數據庫邏輯模式,以第三範式
- 4. BLL邏輯 - 數據訪問模式
- 5. 實體框架和數據庫邏輯
- 6. 數據庫表結構和邏輯
- 7. 標題,邏輯和數據庫
- 8. 邏輯在數據庫
- 9. mysql數據庫邏輯
- 10. 數據庫邏輯建議
- 11. NOARCHIVELOG模式下的邏輯備用數據庫(Oracle 12C數據庫)
- 12. 在邏輯數據模型
- 13. 用戶數據庫邏輯個成就
- 14. Flashcard語言項目的數據庫模式/邏輯
- 15. 如何到這個數據庫模式?
- 16. 模型邏輯和服務層邏輯
- 17. 關係數據庫模式的PHP/MySQL搜索代碼和邏輯
- 18. 數據庫(邏輯數據模型)的繼承示例
- 19. 多個數據庫與具有邏輯分區數據的單個數據庫
- 20. 我想知道在這段代碼的模式和邏輯
- 21. 開源模糊邏輯庫
- 22. 解決一個JavaScript和數據庫表邏輯的情況
- 23. Android SQLite和遊戲模式邏輯
- 24. 訪客模式和邏輯操作
- 25. Django - 後端邏輯vs數據庫邏輯
- 26. 程序邏輯是否應該強化數據庫邏輯?
- 27. 數據庫邏輯進出數據庫的最佳做法。在數據庫中保存邏輯?
- 28. 將邏輯數據模型轉換爲XML模式
- 29. Node.js模式匹配邏輯
- 30. 邏輯'或'在Lua模式?
數據庫表不是電子表格。星期一7:00-8:00之間可存儲的內容與星期五7:00-8:00存儲的內容之間沒有任何區別。兩個項目都應該存儲在同一列中。這將指向一列存儲日期和另一存儲時間跨度,並且最後一列存儲「在該時間段內當天發生的事情」。 –
@Damien_The_Unbeliever我已經完成了用上面提到的那個數據庫設計插入所有的數據。然後我試圖用HTML顯示時間表格式的數據。 – JKTA