※ 引述《xfighter (xfighter)》之銘言:
: 最近在做的東西遇到了一些瓶頸, 想請問大家資料庫的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
: 這樣會不會太暴力? 謝謝..^^
:
:
這其實已經不算是Android的範圍了
我不確定效率如何,請自己 explain 一下。
回頭看了一下我猜還有科目這個東西
學生students
student_id PK
name
...
科目subjects
subject_id PK
name
課程lessons
lesson_id PK
subject_id
time
...
學生選課schedules
student_id PK
lesson_id PK
...
訊息messages
message_id PK
lesson_id
student_id
content
created_time
...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 219.85.82.103
※ 編輯: lovelycateye 來自: 219.85.82.103 (12/25 23:44)