我为糟糕的话题标题道歉,因为我有点迷失在这里应该做什么。
首先,这是我的数据库表设计,我希望在继续之前收到某种反馈:
我正在尝试制作一个注册网络应用程序。
受试者
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
,但我不确定是否会高效。
答案 0 :(得分:0)
你的桌子看起来很好(即第三范式)。 INNER联接将执行
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
P.S。这看起来像是学校的作业或书中的东西......?
答案 1 :(得分:0)
可能是:
var query = context.EnrolledSubjects
.Include("Subject")
.Where(i => i.StudentId == 1)
.Select(i => new {
i.Subject.Subj,
i.Subject.Professor,
i.Subject.CsStart,
i.Subject.Send,
i.Subject.Days,
i.Status
};