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

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

我正在重写一个注册应用程序,并开始考虑如何设计数据库结构。我需要该应用程序具有灵 active ,因为某些事件提供不同的内容。这是一个特定的:

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

我想我可以为事件模型做某种逗号分隔的列,该列与 Shirt_Sizes 的值 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

然后,当您查询数据以填充下拉列表时,您可以连接所有三个表。

关于mysql - 将定义选项的子集存储到另一个表列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20600723/

相关文章:

php - 通过托管在 Compute Engine 上的 PHP 连接到 Cloud SQL

ruby-on-rails - 创建定期付款配置文件时出现 Paypal 无效 token 错误

ruby-on-rails - Bundler:读取服务器证书 B:证书验证失败(OpenSSL::SSL::SSLError)

ruby-on-rails - 迁移到 Rails 3 后,未定义方法 `reverse_merge' for nil :NilClass

mysql - 在存储数组的列中搜索

ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试?

ruby-on-rails - 默认更新 nested_attributes

Mysql 1050 Error "Table already exists"其实不是

php - 有没有办法获得相同值的唯一行

php - 多文件上传,相册,mysql