我为不好的主题标题表示歉意,因为我有点不知该怎么办。

首先,这是我的数据库表设计,在继续之前,我也希望获得某种反馈:

我正在尝试制作一个注册Web应用程序。

科目

subject
[id] [subj]   [professor]  [cstart]  [cend]  [days]  [count] [units]
1   comalgo    carl        10:00am  12:30pm  M-W      40      3.0
2   compasm    carl        01:00pm  02:30pm  T-TH     40      3.0
3   compro     miguel      04:30pm  06:30pm  M-W      35      3.0
4   pro5       fua         03:30pm  05:30pm  T-TH     30      3.0
5   pro5       fua         06:30pm  08:30pm  F        10      3.0


学生们

students
[id] [fname]   [lname]   [bday]       [unitsleft]  [unitstaken] [major]
 1    carlos    doe      11/20/1990      100           0         BS-COMPUTER SCIENCE
 2    miguel    doe      08/15/1992      100           0         BS-ECONOMY
 3    carl      doe      12/12/1991      100           0         BS-PSYCHOLOGY
 4    test      doe      02/12/1992      100           0         BS-LITERATURE


我打算做的是,这些科目将通过一系列列表显示,而学生将选择多个科目并报名。总注册单元数不应大于20且小于11。我已经实现了该部分,并且我现在正在存储选定的主题。

这是我建议的解决方案,我想收到一些有关它以及应该使用哪种操作的反馈。

我将为所有已注册科目提供一个集中表

报名科目

selected subject
[id] [subjid] [studentid] [status]
1       1        1           P     //comalgo enrolled by carlos, P is for pending grade
2       1        2           P     //comalgo enrolled by miguel  P is for pending grade
3       2        1           P     //compasm enrolled by carlos  P is for pending grade


我计划发生的事情是:我有一个针对学生的个人资料页面,他们将能够查看/编辑当前为自己专门注册的主题(基于ID)

我希望为他们提供以下表格标题,这些标题基于已注册的主题:

[subj] [professor] [cstart] [cend] [days]

以下是我的问题的简短摘要:

1.)我的桌子好吗?还是设计不好?
  2.)我应该使用哪种方法?我正在尝试研究(加入),但是我有点困惑,需要澄清。我想向用户展示他们选择的主题。

编辑:我认为我可以做类似的事情..从enrolled subjects中选择id = x,然后得到subject id,但是我不确定这是否有效。

最佳答案

您的表格看起来不错(即第三种标准形式)。进行内部联接

SELECT
    B.subj, B.professor, B.cstart, B.cend, B.days
FROM
    selectedsubjects A
    INNER JOIN subjects B ON A.subjid = B.id
WHERE
    A.studentid = 1




ps。这看起来像是学校的作业还是书本之外的东西?

关于mysql - 我应该使用哪种联接? [EF4.0代码优先],我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32406101/

10-13 06:27