【发布时间】:2016-04-24 04:00:46
【问题描述】:
我正在创建一个 Access 数据库来保存学生实习信息。我遇到的问题是我有三个表与实习表(作业、主管评估和学生评估)只有一个关系。
由于 Access 不允许一个表有多个自动生成的编号,我不能让实习表为三个表中的每一个创建 ID 号。所以,我不知道怎么做,所以当我们在这些表格中输入数据时,我可以把它专门分配给实习。有什么建议吗?
【问题讨论】:
标签: database ms-access database-design
我正在创建一个 Access 数据库来保存学生实习信息。我遇到的问题是我有三个表与实习表(作业、主管评估和学生评估)只有一个关系。
由于 Access 不允许一个表有多个自动生成的编号,我不能让实习表为三个表中的每一个创建 ID 号。所以,我不知道怎么做,所以当我们在这些表格中输入数据时,我可以把它专门分配给实习。有什么建议吗?
【问题讨论】:
标签: database ms-access database-design
1-1 关系总感觉应该合并到一张表中。如果它们实际上是 1-1 并且不应该是 1-0,1,则尤其如此。在后一种情况下,如果依赖信息可能会丢失并且在大多数情况下会丢失,那么将其分离到自己的表中可能会有所帮助。但即便如此,也可以通过为某些属性赋予 null 值来表达。
现在,如果出于某种原因,您坚持使用这 4 个表,则有两种方法可以获取主键。一种是,对于从属表,不将主键声明为自动生成的,而是将其声明为数字,并将实习记录的自动生成值分配给它。另一种方法是为每个从属表自动生成一个主键,并在 Intership 表中为每个表创建一个外键。由于我认为这些依赖表的整个构造不必要地复杂,因此我无法就这些方法中的哪一种给出建议。
我对您的数据模型还有另一个顾虑。您的表具有诸如 answer1、answer2 之类的属性......现在,如果您有少量固定数量的这些属性,这可能没问题。但是你能不能有一组更大的固定问题,也许对于每种类型的实习,这些问题可能会动态变化并且不能仅仅通过固定的列结构来表达?在这种情况下,您将需要类似
Question(id, text)
Internship(id, ...)
Answer(id, internship_id, question_id, student_answer, supervisor_evaluation)
所以你的基数是
Internship 1-----0,n Answer 0,n------1 Question
实习的其他细节也是如此。
【讨论】: