【发布时间】:2015-06-10 13:06:57
【问题描述】:
我正在建立一个画廊。每个图像都是一行,包含名称、src 和 order 等。
我希望每张图片多 3 个选项:精选、可见、禁用。
我应该将它们作为列吗?
或者只有 1 列设置并存储 3 个二进制数?
例如:
111 = 精选、可见、禁用
110 = 精选、可见
010 = 可见
001 = 禁用
或者我什至可以将其转换为 DEC 并简单地存储 0 到 7(如 CHMOD 样式)
最好的方法是什么?
谢谢!
【问题讨论】:
-
定义“最佳”。除非您有相当大(并且可衡量)的性能问题,否则我建议您使用最简单 方法。这将是良好命名和定义的列。如果需求发生变化,请从那里更新。但是没有必要做一些过于聪明的事情。
-
肯定要分开列;简单。我推荐
CHAR(1)的值为Y或N。每个人都会明白这一点。如果您有 1000 万行,您将使用比位方法多 10 Mb 的微不足道的磁盘空间。这根本不是真正的权衡。 -
谢谢你们。这正是我需要知道的。我只是不知道多行是否比单行中的字符更昂贵。我会很简单。
-
我感到困惑的原因是因为我正在阅读Reddit's database which only has 2 tables(事物和数据)和“声称”比使用行表现更好。我虽然()
-
坚持尝试、测试和形式化的方法,除非您 a) 真的知道自己在做什么,并且 b) 真的需要打破规则或转换范式。有一句格言说过早优化是万恶之源——即担心你实际上没有的性能问题可能会让你误入歧途。了解规范化,并在使用事务性关系数据库时尽可能遵守这些规则。
标签: mysql database-design database-schema