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

Mysql 将已定义选项的子集存储到另一个表列中,mysql,ruby-on-rails,ruby,database,database-design,Mysql,Ruby On Rails,Ruby,Database,Database Design,我正在为一个注册应用程序进行重写,并开始考虑如何设计DB结构。我需要的应用程序是灵活的,因为有些活动提供不同的东西。这里有一个特别的例子: 每个活动都提供衬衫,但并非每个活动都提供相同的尺码。我想我应该有一个衬衫尺码表,上面有所有可能的选项,然后在一个表格中创建一个新的活动,他们可以选中他们想要的衬衫。我将在哪里存储该特定事件的特定大小子集?我需要查询它来填充用于注册事件的表单的下拉列表 我想我可以为事件模型做一些逗号分隔的列,它的值ID与衬衫大小不同?但我一直在读到这样做是不好的,所以我不确定

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

每个活动都提供衬衫,但并非每个活动都提供相同的尺码。我想我应该有一个衬衫尺码表,上面有所有可能的选项,然后在一个表格中创建一个新的活动,他们可以选中他们想要的衬衫。我将在哪里存储该特定事件的特定大小子集?我需要查询它来填充用于注册事件的表单的下拉列表


我想我可以为事件模型做一些逗号分隔的列,它的值ID与衬衫大小不同?但我一直在读到这样做是不好的,所以我不确定这通常是如何处理的。谢谢

您可以创建第三个表,其中包含一列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
然后,当查询数据以填充下拉列表时,可以联接所有三个表