所以我做了一个需要我们使用桥实体的项目。我做了一个简单的设计(虽然我无法向你展示)。
tblStudent - (PK)Student_ID - 姓 - 名字 - 中间名字 - YearLevel - 部分 - 顾问 - 手机号码
tblGets [bridge] - (PK)Student_ID - (PK)OffenseCode
tblOffense - (PK)OffenseCode - OffenseDescription - OffenseCategory
我已经设法INNER JOIN我的桌子除了tblGets,我不知道我将在我的项目中加入哪些内容。因为我的项目记录了学生在学校犯下的罪行。
任何人都可以帮助我在我的项目中加入tblGets吗?因为事实上它似乎并不合适。
答案 0 :(得分:1)
Bridge实体可用于管理多对多关系。
如果多个学生可以犯下一个特定的罪行,那么保留这个表是有意义的。
CASE 1 :在您的申请中,您可以按学校列出所有违法行为:
SELECT
OffenseDescription,
OffenseCategory,
Student_ID,
LastName,
FirstName
FROM tblOffense O
LEFT JOIN tblGets G ON G.OffenseCode = O.OffenseCode
LEFT JOIN tblStudent S ON S.Student_ID = G.Student_ID
WHERE O.School_ID = 23
结果可能如下:
学校23的结果:
- 2017-01-02一伙抢劫案
- Bob Sand
- Tim Mitch
- 2017-03-12在草坪上散步
- Antony Brown
CASE 2 :当您显示特定进攻的信息时,您可以提供每个相关学生的参考。
CASE 3 :为大多数情况下是他/她的同谋的学生展示一些统计数据,以识别破坏性的友谊:
SELECT
AccS.Student_ID,
AccS.FirstName,
AccS.LastName,
COUNT(*) AS Amount
FROM tblOffense O
JOIN tblGets G ON G.OffenseCode = O.OffenseCode
JOIN tblStudent S ON S.Student_ID = G.Student_ID
JOIN tblGets AccG
ON AccG.OffenseCode = O.OffenseCode
AND AccG.Student_ID <> S.Student_ID -- looking for accomplices
JOIN tblStudent AccS
ON AccS.Student_ID = AccG.Student_ID
WHERE
S.Student_ID = @ParticularStudentId
GROUP BY AccS.Student_ID, AccS.FirstName, AccS.LastName
ORDER BY Amount DESC