我需要了解以下情况的最佳做法:
1)学校可以有多个班级(成绩) 2)学校可以有多个活动 3)活动与最少一个班级有关,或者可以是所有学校活动(即适用于学校的所有班级)
我有典型的表格结构 事件表(用于存储事件),Class(用于存储类)和event_class(关联表)
1)当事件与类
相关联时,我在'event_class'表中插入一行
2)如果是学校活动那么,假设学校有20个班级,我在'event_class'表中插入20条记录
理论上我知道上面的内容是正确的并且可行。
我的问题是:如果没有课程从20增加到<&gt ;;什么应该是方法?如果是全校活动那么我应该只在标题级别存储一个标志并使用左/右连接来获取事件列表?我试图了解通常的做法。
提前致谢
MANISHA
答案 0 :(得分:0)
我不知道这是否算作“最佳”和“最佳”。练习,但我确实在野外看到了很多,因此至少可能是好的'实践。
事件表应该有'类型'列 - 由您定义,可以是数字或文字('类'或' school',0或1等)。然后,event_class表中只有类型为' class'的事件的条目。
检索class_id
的特定于类的数据时,您的连接逻辑将如下所示:
SELECT * FROM event, event_class
WHERE event_class.class_id = this_class.id
AND event.type = 'class'
AND event.id = event_class.event_id
如果您想要class_id
的所有课程和学校活动数据,它将如下所示:
SELECT * FROM event, event_class
WHERE (event_class.class_id = this_class.id
AND event.type = 'class'
AND event.id = event_class.event_id)
OR event.type = 'school'
注意第二个括号,以确保布尔逻辑正常工作。这些都没有经过考验我害怕 - 只是一个想法。有可能是优化连接的方法,但对于20个类,它可能不值得付出努力。