作者lovelycateye (我还想要更多力量)
看板AndroidDev
标题Re: [问题] SQL 资料表设计的效率问题
时间Wed Dec 25 23:39:13 2013
※ 引述《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)