aca*_*vid 3 database database-design
我有一个表,表示一个具有多个"状态"(已批准,已过期,趋势,真实)的对象.所有这些状态都是独立的,所以我不能只有一个状态字段,因为可以进行查询,因此您可以询问:
select * from Objects WHERE approved is true, trending is true, expired is false;
Run Code Online (Sandbox Code Playgroud)
我不确定是否有规范化这样的表格.另外,据我所知,使用这些字段的索引基本上是无用的.这个案子也适合吗?
谢谢!
针对大量布尔状态列的参数不是由于空间甚至归一化本身.如果每列完全与键相关并且不包含值的汞合金,则将其标准化(第3次正常).相反,问题在于列的布尔性质和它们缺乏扩展.例如,您向我们展示了一个名为的列approved.它的批准日期和由谁批准的是什么?如果审批管道扩展到包括不仅仅是认可/拒绝,如更多的国家会发生什么initiated,pending,approved和rejected?批准状态的描述如何?今天它可能Y/N但明天你的客户可能想要Approved/Rejected或者也许Qui/Non.
我不是建议你改变你的设计; 布尔列有它们的位置.但是,在仔细考虑扩展和可扩展性之后,应该使用它们.