gpt4 book ai didi

mysql - 如何构造 MySQL 表,其中一个字段可以包含多个值(但也可能不包含)?

转载 作者:行者123 更新时间:2023-11-29 22:55:07 26 4
gpt4 key购买 nike

我正在设计一个网络应用程序,允许用户参加事件并搜索特定类型的事件。例如,假设这些事件发生在霍格沃茨。学生有自己的表,其中他们的 StudentID 作为主键,并且还包含他们属于哪个学院(其中有 4 个)、他们选修的科目以及他们所在的学习年份(例如, 1 或 4 或 5 等)。这些事件可以面向所有学生,特别是拉文克劳学院的四年级学生,或介于两者之间的任何地方。

事件保存在事件表中,其中包含 eventID 作为主键,但我不确定如何保存其针对的房屋/年份/主题的数据。显然,如果一项事件仅针对学习魔药的三年级赫奇帕奇学生,或类似的特定事件,我可以将其举办在同一张 table 上。但是,如果该事件是针对赫奇帕奇的任何一年(而不是任何斯莱特林等)怎么办?或者是否所有年级、学院和科目的所有学生都有资格参加?我是否需要一个包含每个事件所有年份的表格和一个单独的表格来存放它的用途,以及另一个单独的表格来存放它所针对的主题?

任何建议或链接表示赞赏。

最佳答案

我认为有两种方法,但您肯定至少还需要一张用于关联的表。您要么想要非常具体地了解可能的组合,要么想要一般性地执行此操作,例如:只有三年级,只有赫奇帕奇,那么这两个值的组合将只有三年级赫奇帕奇。

我想说的是这两个选项。

1) 一张表包含具有非常具体详细信息的行:事件 ID 和所有可能选项的显式组合(这里将有很多行)

这意味着该事件可以与二年级和三年级的赫奇帕奇相关,但只能与二年级的斯莱特林相关。

association_id event_id   year_id   house_id     subject_id
1 1 second hufflepuff potions
2 1 third hufflepuff potions
3 1 second slytherin potions

2)每个属性一个表(这里的区别不太清楚,但您只需为每个属性创建一行等。

以下两个表可用于存储所有赫奇帕奇和所有二年级或三年级的斯莱特林可能参加的事情

association_id event_id year_id
1 1 second
2 1 third

association_id event_id house_id
1 1 hufflepuff
2 1 slytherin

这是否回答了您的问题或至少可以帮助您找到解决方案?

也许,如果您能更仔细地描述您的目标,人们就可以一起找到适合您问题的解决方案。

关于mysql - 如何构造 MySQL 表,其中一个字段可以包含多个值(但也可能不包含)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28742222/

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