作者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
1F:→ vvrr:case1,我会做成「每个课id只放一门课」,然後A生选多门课就有 12/25 17:15
2F:→ vvrr:多笔资料。 12/25 17:15
3F:→ vvrr:case2.我会把lesson_name的日期和课名拆开成两栏,课名改成id 12/25 17:17