我正在设计一个网络应用程序,允许用户参加活动并搜索特定类型的活动。 比如说,这些事件发生在霍格沃茨。学生有自己的学习ID作为主键,并且还包含他们所属的学校(其中有4所),他们学习的科目,以及他们在哪一学年(例如1或4或5等)。这些活动可以针对所有学生,特别是拉文克劳学院的四年级学生,或两者之间的任何地方。
事件保存在事件表中,该事件表包含一个eventID作为主键,但我不确定如何保存它所针对的房屋/年份/主题的数据。显然,如果一个事件只是针对服用魔药的第三年赫奇帕奇,或类似的东西,我可以把它放在同一张桌子里。但是,如果事件是任何一年的赫奇帕奇(而不是任何斯莱特林等)怎么办?或者,如果所有年份,房屋和科目的所有学生都有资格参加?我是否需要一张表格,其中包含每个活动的所有年份以及一个单独的表格,以及它所针对的房屋的另一个表格?
感谢任何建议或链接。
答案 0 :(得分:0)
我认为有两种方法,但你肯定需要至少一个表的关联。或者你想要非常具体,关于可能的组合或者你想要做的一般,例如:只有第三年,只有赫奇帕奇,那么这两个值的组合将只是第三年的赫奇帕奇。
我想说的是这两个选项。
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)每个属性一个表(这里的分辨率不是很清楚,但你只需要为每个属性创建一行等。
可以使用以下两个表来存储所有第二年或第三年的所有hufflepuff和所有slytherin可能参加
association_id event_id year_id
1 1 second
2 1 third
association_id event_id house_id
1 1 hufflepuff
2 1 slytherin
这是否可以回答您的问题,或者至少可以帮助您找到解决方案?
Mybe如果能够更准确地描述你所针对的目标,我们可以找到适合你的问题的解决方案。