将已定义选项的子集存储到另一个表列中

时间:2013-12-15 22:33:54

标签: mysql ruby-on-rails ruby database database-design

我正在为注册应用程序进行重写,并开始考虑如何设计数据库结构。我需要应用程序灵活,因为有些事件提供不同的东西。这是一个特别的:

每个活动都提供衬衫,但不是每个活动都提供相同的尺寸。我想我有一个带有所有可能选项的Shirt_Size表,然后在表单中创建一个新的事件,他们只能复选他们想要的衬衫。我将在哪里存储特定事件的特定大小子集?我将需要查询那个以填充下拉表格,以便注册事件。

我想我可以为事件模型做一些逗号分隔的列,它是来自Shirt_Sizes的不同值ID?但是我一直在读这样做很糟糕,所以我不确定这是如何正常处理的。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以创建第三个表,其中包含event_id和shirt_size_id的列,并根据需要填充它。假设event1只有中小型衬衫,你可以在表格中添加两行。

id  event_id      shirt_size_id
1   1             1
2   1             2

如果第二项赛事有大中小型衬衫,请在新桌上添加3行。

id  event_id      shirt_size_id
3   2             1
4   2             2
5   2             3

然后,当您查询要填充下拉列表的数据时,您可以加入所有三个表。