我面临的这个问题对您来说可能听起来微不足道,但我想知道,除了 ENUM 类型之外,还可以使用什么来在单列中存储类别、子类别和多个标签的数值?
场景:
ENUM 真的适合并推荐的存储方式吗?
但是,我正在考虑完全省略这样的列并应用类似于 Wordpress 的解决方案 - 创建分类法(cat、subcat、标签),然后在另一个名为“关系”的表中将我的条目的 ID 与它配对正确的分类法。此解决方案的问题是 50,000 个条目会产生如此多的关系行(1 个用于 cat,1 个用于 subcat,但最多 20 个用于标签)。
您能否详细说明建议的方法和/或建议新的方法?
编辑
下面是不惜一切代价避免在单个列中存储多个值的建议。认可并赞赏!
我正在考虑为 cat、subcat、标签创建 3 个单独的表。 此外,通过这种方式,我可以使用 Martin Fowler 的模式“数据映射器”和“表继承”来处理我的应用程序的这方面(条目分类)。
最佳答案
如果您想单独访问多个值,切勿在单个列中存储多个值 - 这是一个等待发生的事故!
只需忘记 multi-id 列,但它可能会被实现:想想需要什么来查找具有某些标记的所有行:您需要以文本方式解析所有行的 multi-vlue 字段,丢弃大部分其中:每个查询都变成带有计算的全表扫描 - 最坏的情况。
执行此操作的规范方法是使用具有关系的连接表,可能会生成大量记录,但可以以非常快的方式访问这些记录,因为它们实际上只是索引。
将其分解为类别联接表和标签联接表可能会也可能不会进一步加快速度,具体取决于您的业务逻辑仅需要其中之一的频率。
关于PHP/Mysql : A db entry needs to store multiple values for categorization (cat, 子目录、标签),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22114426/