gpt4 book ai didi

mysql - 需要所有组合时主从关系的最佳实践

转载 作者:行者123 更新时间:2023-11-29 23:27:24 26 4
gpt4 key购买 nike

我需要了解以下场景的最佳实践:

1)一所学校可以有多个类(class)(年级)
2) 一个学校可以举办多个事件
3) 事件至少与一个类(class)相关,也可以是所有学校事件(即适用于学校的所有类(class))

我有典型的表结构事件表(存储事件)、类(存储类)和event_class(关联表)

1) 当事件与类关联时,我在“event_class”表中插入一行
2) 如果是学校事件,假设学校有 20 个类(class),我在 'event_class' 表中插入 20 条记录

理论上我知道上面是正确的并且可行。

我的问题是:如果类(class)数量从 20 增加到 <>;应该采取什么方法?如果这是一个全学校事件,那么我是否应该在标题级别存储一个标志并使用左/右连接来获取事件列表?我试图了解通常的做法。

提前致谢
玛尼沙

最佳答案

我不知道这是否算作“最佳”实践,但我确实在野外见过很多次,因此可能至少是“良好”实践。

事件表可能应该有一个“类型”列 - 由您定义,可以是数字或文本(“类(class)”或“学校”、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 的所有类(class)和学校事件数据,则如下所示:

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'

注意第二个括号上的括号,以确保 bool 逻辑正确工作。恐怕这些都没有经过测试——只是一个想法。可能有多种方法可以优化连接,但对于 20 个类,这可能不值得付出努力。

关于mysql - 需要所有组合时主从关系的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851199/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com