人们!我需要一些帮助组织应用程序的数据库,我不知道如何做到这一点。假设如下: 有一个学术科目列表。对于每个科目,我们需要有一个学术团体的名单,参加这个主题。然后,对于每个组,我们需要有一个日期列表。对于每个日期,我们需要有一份学生名单,以及该学生当天是否在场。 我心中有丑陋的数据结构,会感激任何帮助。
更新
我如何看待它:
表1(第一个col是日期,第二个是列表学生的id,谁在场)
10/10/11 | id1, id2, id3
10/11/11 | id1, 1d3, id5
表2:
subject1 | id1 id2 id3
subject2 | id3 id2
同样,ids是群组的ID。不知道如何连接这些表。
答案 0 :(得分:2)
在设计数据库时需要考虑许多因素,但根据您目前提供的信息,这样的事情可能是一个好的开始:
此ER模型使用大量识别关系(即将父母的主键“迁移”到孩子的PK中),并产生自然主键,而非识别需要使用代理键的关系。现在很多人都喜欢代理键,但事实是两种设计策略都有利有弊。特别是:
答案 1 :(得分:1)
您将为数据库中的每种“事物”(科目,小组,学生,会议)设计一个表格。每个表都有一列用于存储关于该事物的每个数据(信息)。此外,必须有一列或可预测的列组合,以便您唯一地标识存储在表中的每个事物(行)。
然后,您将决定事物(主题,群组,学生,会议)之间的相互关系,并确保每个表中都有正确的列来存储这些关系。您将发现在某些情况下,可以通过向已定义的表添加一个或多个列来完成此操作。在其他情况下,您需要添加一个全新的表,该表不存储“事物”,本身,而是两个事物之间的关系。
如果您有表格和列的列表,如果您认为无法正确表示问题的某些部分,请发布您已经完成的工作的另一个问题,我相信您会找人帮忙你完成任务。
对您的更新的回复:
你走错了路。在单个字段中存储两个值是一个坏主意(与正确的关系数据库设计相反)。因此,您编写的每个表应该有两列(如您所说),但第二列应该存储一个且只存储一个ID。而不是在10/10的table1中的一行,而是在表中有三个单独的行。
但是,在你开始担心“关系”之前,创建表来保存“事物”。
我还建议您选择关系数据库的基本指南。