2011-07-15 63 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