2011-07-15 103 views
-6

我在一個網站上工作,將標記所有學生的出席。 假設一個課程有8個學期,5個學習分支,每個分支/ sem有6個科目。 我正在尋找更好的數據庫設計。 我認爲每個科目的表格都有1到6個不等的列(一個學期爲6個月)。然後我可以在每月結束時更新出席情況。但這意味着將近8 * 6 * 5 = 240桌!更好的數據庫設計?

做了一些Google搜索,發現了一些相關的主題,包括枚舉和查找表。 是不是有什麼辦法像在C++中一樣,我可以創建一個30天的數組並將日期標記爲出席並將該數組鏈接到表中的列?

我正在使用MySQL和編碼正在PHP中完成。

+0

我只看到3個表:學期,樹枝和主題...也許你想閱讀一些有關數據庫設計(特別是對外國鍵和關係)? – KingCrunch

+2

聽起來像作業。 – Brian

+0

2experinced人:不要」只是減去了他 - 這是從新手一個很好的問題。即使這從我們這邊來看也是非常明顯的。如果這是一個[::::]重複,然後發佈回答。 – gaRex

回答

1

1. 忘記本學期,它與出席考試目的的數據庫設計無關。這是業務邏輯的一部分,將在您的PHP端完成。你可以爲它添加一個表格,但如果沒有的話,它也不會有什麼幫助。因此,如果我是你,我會完全忽略它出於出席的目的。雖然,你可能需要它來做其他事情。 像專業人士一樣,擁有學期表,你一定會將其用於其他目的。

2.對於每個類型創建一個表,即:

學期

id, start_date, end_date 

分行

id, name 

受試者

id, branch_id, name 

學生

id, name, surname, ... 

出席

id, semester_id, subject_id, student_id 

3.當您獲取考勤記錄, 通過計算來比較,看看哪出勤屬於哪個學期 計數那個學生在那個學科上的記錄,在那個特定的學期,看看有多少人蔘加特別的學生有。

+0

不知道有關的短語「忘掉學期,這是不相關的數據庫設計。」 :) – gaRex

+0

@gaRex:更新它澄清。 – Shef

+0

好吧,那現在它更多的邏輯。 – gaRex

0

240表 - 這裏是一個完整的不太好的詞。

所以,你應該從這裏開始: * http://en.wikipedia.org/wiki/Relational_database_management_system

然後去這裏: * http://en.wikipedia.org/wiki/Relational_model

也是谷歌星展銀行的歷史,什麼是: * http://en.wikipedia.org/wiki/Normalization_(database

這所有人都應該幫助你建立正常的DB模式。

也嘗試下載/安裝一些開源論壇,系統,博客等的數據填充它們,並檢查所有如何在DB的組織方式。

1

https://stackoverflow.com/questions/6544797/php-and-mysql-problem-please-help

如果你不喜歡下面的鏈接,下面是這個問題,這將有助於你的追求我的答案...和偉大的回覆之前......如果你真的這樣做一些研究,你想做的事,後一個模式,或者你想如何嘗試做一些工作,一些樣品什麼....:

google的方面的第一個搜索:php mysql form tutorial給我的以下內容:

+0

你知不知道,gooogle有點像一個祕密詞,只有真正的專業人士才知道?我認爲谷歌現在已經變得像unix命令行界面一樣,我們很快會看到另一個搜索引擎,它可以搜索一個thelepaty :) – gaRex