首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何构造一个字段可以包含多个值(但可能不包含)的MySQL表?

如何构造一个字段可以包含多个值(但可能不包含)的MySQL表?
EN

Stack Overflow用户
提问于 2015-02-26 12:15:21
回答 1查看 49关注 0票数 0

我正在设计一个web应用程序,它允许用户参加活动并搜索特定类型的事件。比如说,这些事件发生在霍格沃茨。学生们有自己的桌子,把他们的studentID作为主要的钥匙,这也包括他们是哪个房子的一部分(其中有4个),他们的科目,以及他们在哪一年的学习(例如1或4或5,等等)。这些活动可以是为所有的学生,特别是四年级学生在拉文爪宫,或在两者之间的任何地方。

这些事件是在events表中举行的,其中包含一个eventID作为主键,但我不知道如何保存它所针对的房屋/年份/主题的数据。显然,如果一项活动只针对服用药剂的第三年赫弗莱普夫人,或者类似的特定事件,我可以把它放在同一张桌子上。然而,如果这个事件发生在赫芬顿的任何一年(而不是任何斯莱特林,等等)呢?或者,如果所有的学生从所有年份,房屋和科目是有资格参加?我是否需要一张能容纳每一项活动多年的桌子,一张独立的桌子,一张用来存放它的房子,另一张桌子,用于它所针对的主题?

如有任何建议或链接将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-26 15:27:34

我认为有两种方法,但您肯定需要至少多一张表格来进行关联。要么你想要非常具体,关于可能的组合,或者你想做一般的事情,比如:只有第三年,只有赫弗莱普夫,那么这两个值的组合将仅仅是第三年。

我想说的是这两种选择。

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

这将意味着,这一事件可以与第二年和第三年的赫弗莱帕夫斯,但只有第二年斯莱特林。

代码语言:javascript
复制
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)每个属性只有一个表(在这里,disctinction不是很清楚,但是您只需创建每个属性一行,等等)。

以下两个表可以用来存储所有在第二年或第三年的hufflepuffs和所有slytherins可能参加的

代码语言:javascript
复制
association_id event_id year_id
1              1        second
2              1        third

association_id event_id house_id
1              1        hufflepuff
2              1        slytherin

这能回答你的问题吗?或者至少能帮你找到一个解决办法?

如果你能更紧密地描述你所瞄准的目标,你就能找到一个适合你的问题的解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28742222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档