作者xfighter (xfighter)
看板Database
標題[SQL ] 有兩個資料表設計的問題
時間Wed Dec 25 16:31:15 2013
最近在做的東西愈到了一些瓶頸, 想請問大家資料庫的table該怎麼設計會比較有效率:
case1:
有n個學生, 有m種課程
學生 課程
1 1(數學)
2 2(國文)
3 .
4 .
. .
. m
.
n
應用是要知道每個學生選了哪些課程
table要怎麼設計, 效率會比較好呢?
我目前的做法是:
學生table:
-----student-----
|
ID |
name |
my_lessons |
| 1 | John | 1;3;6 |
| 2 | Jack | 4;5;6 |
| . | . | . |
| . | . | . |
| n | . | . |
課程table:
----lession------
|
lesson_ID |
lesson_name |
| 1 | 國文 |
| 2 | 數學 |
| . | . |
| . | . |
| m | . |
要拿到每個學生在上的課程, SQL語法:
$list = student's my_lessons
$result = mysql_query("SELECT * FROM `lesson` WHERE `lesson_ID` IN ($list)");
這種多對多的table一但資料庫太大, 效率就會很差...
不知道版上大大們可否給小的一些建議
case2.
每一堂課的留言版要怎麼設計會比較有效率呢
課程table:
----lession------
|
lesson_ID |
lesson_name |
| 1 | 10/25 國文 |
| 2 | 10/27 數學 |
| . | 10/30 國文 |
| . | . |
| . | . |
留言內容table:
----message------
|
message_ID |
lesson_ID |
message |
| 1 | 1 | 今天國文好難 |
| 2 | 1 | 國文真是我的罩門 |
| 3 | 2 | 我喜歡數學 |
| . | . | . |
| . | . | . |
要拿到每堂課程的留言, SQL語法:
$lession_ID = lession's lesson_ID
mysql_query("SELECT * FROM `message` WHERE `lesson_ID` = '$lession_ID'");
然後每堂課都要執行一次..去撈所有的message table
這樣會不會太暴力? 謝謝..^^
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.116.65.104
→ vvrr:case1,我會做成「每個課id只放一門課」,然後A生選多門課就有 12/25 17:15
→ vvrr:多筆資料。 12/25 17:15
→ vvrr:case2.我會把lesson_name的日期和課名拆開成兩欄,課名改成id 12/25 17:17