mysql - 两个表上的许多 boolean 值

标签 mysql ruby-on-rails boolean

使用 Rails 2.1 和 Mysql。

我有一个公司模型,其中有_很多公司

当然还有公司模型,它属于公司

我需要在这两个表中添加相当多的 boolean 列,但这感觉真的不对。每个表都有相同的 boolean 值,我们将首先检查公司以查看其是否为真,然后是公司。所以,我可以看到这些选项:

  • 将 boolean 值添加到每个表中。我想这是最简单的,但感觉真的很多余。

  • 创建一个额外的表,名称类似于“boolean_options”,属于公司和企业。每个 boolean 值都添加到该表中,然后连接到适当的模型。

  • 使用类似于 has_many_booleans gem 的东西,这意味着我向每个表添加一列( boolean 值)并在我的代码中处理数据。这似乎是最不明显的解决方案,但对我来说感觉更优雅,尤其是在需要向这些表添加更多 boolean 值时。

处理将出现在多个表中的 boolean 值的最佳方法是什么?

最佳答案

答案可能更多地取决于您的整体概念。对于每一个真/假数据,问问自己它与模型本质的联系有多紧密。每个位在模型实例中被引用或在搜索中使用的频率。那些紧密相连的可能属于模型;那些较少的可能更好地分组在其他表中。

示例:在现实世界中,公司是公司的一种类型,并且共享许多Company属性;这些属性可以存储在 Company 表中,可能带有 is_a_corporation 标志。

如果公司具有独特的属性,例如拥有公司的能力,这些功能和属性应该在 Corporation 模型中。

作为位的 boolean 值:我不认为在一个模型中有很多 boolean 值属性有什么问题,但我同意在表中包含所有这些 boolean 值列似乎不雅。我查看了 has_many_booleans gem,它确实为模拟位运算和掩码提供了一些有趣的机会,这些来自嵌入式软件的世界,对我来说很有意义.

四处查看,我发现 Postgresql(我选择的数据库)提供了 bitstring 数据类型,并提供了过多的实际按位运算你想要多少位,只使用一列来表示你的所有 boolean 值,这对我来说似乎非常酷。缺点是您必须配置列并在 native SQL 中执行操作。

关于mysql - 两个表上的许多 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7630475/

相关文章:

ruby-on-rails - 上帝无法启动redis服务器。收到此错误 : `/var/run/redis/redis-server.pid' : Permission denied

C 测验有 2 个问题不起作用?

php - 从 Vagrant 中的 Chef Recipe 运行 PHP 脚本时 MySQL 不工作

mysql - 如何在mysql中一次更改多个表

ruby-on-rails - 你会如何用 Ruby 设计这样的 DSL?

PostgreSQL:为 boolean 列创建索引

iPhone - 核心数据 boolean 值?

javascript - 使用php将ajax数据发送到mysql

c# - 在 MySQL 和 Entity Framework 6 的 Where 中使用 TimeSpan 时的错误结果

ruby-on-rails - 按生产商名称对产品排序,否则按 "Rails way"中的其他内容排序