【发布时间】:2011-05-14 15:57:33
【问题描述】:
以下是我的数据库,其中包含 4 个表(学生、课程、模块、讲师)。我想知道这个数据库是否正确,如果我做得对,我如何使用学生 ID 从表中检索数据,如下所示。
- 学生有哪些模块 10122342 拥有? >>预期答案:cn103、cn201
(pk) = primary key and (fk)=foreign key
接下来我想从上面的表中导入一些值到一个新创建的表中吗?情况是我想从名为“Everyone”的新创建表的“id”属性中的上面的表中导入“s_id”和“i_id”;同时,我还想为“Everyone”表的“type”属性生成“0”/“1”值,其中从“s_id”导入的 id 为 0 值,从“s_id”导入的其余 id 为 1 i_id'。以下是我预期的新数据库表。
Everyone
id |type |
-----------------
10122345 | 0 |
10122342 | 0 |
10222346 | 0 |
20432343 | 1 |
20432311 | 1 |
20532334 | 1 |
请问有人可以帮我吗?可以用mysql和php吗?谢谢。
【问题讨论】:
-
为什么要做上面的事情?如果学生和教师 ID 重叠怎么办?似乎使用这种表结构,每个学生只能注册一门课程。
-
另外,外键中的逗号分隔值不是好的做法。您将如何在查询中使用联接来调用它?如果您曾经在表中使用逗号分隔值,则表明需要单独的表是一个好兆头。
-
考虑将表格连接在一起的单独表格。例如,有一个表,其中只包含一个学生 ID 和一个课程 ID,代表哪些学生正在学习哪些课程。这样您就可以让每个学生选修多门课程,并且每门课程可以由多个学生选修。
-
是的,我知道这是错误的。一名学生只修一门课程,而一门课程有多个模块 - 这里有些模块不止一门课程。这就是我遇到麻烦的原因,我期待某种解决方案,如字符串比较或检索所有数据的东西。现在,如果我使用答案 1 下面的@jeroen-offerijns 的解决方案,它只显示一个模块,该模块只分配给一门课程(cn103)。
标签: php mysql database database-design relational-database