假设有一个表,有这些行:
-personID,
-personName,
-personInterests
还有一个表,里面存放的是兴趣:
-interestID
-interestName
一个人可以有多个兴趣,所以我把interest数组
的serialize()
-d或者JSON
表示放到了兴趣
字段。这不是 String
,如“reading”,而是 interests
表的索引,该表存储了可能的兴趣。类似于一个字段中的多个外键。
最好的方法是使用外键,但不可能实现一个字段中的多个引用...
如何运行这样的查询,没有 REGEX
或通过软件拆分字段的内容?如果将索引放在一个字段上不是可行的方法,那么如何实现这样的结构呢?
最佳答案
绝对不建议在一个字段中存储多个索引或任何引用。 您必须创建一个我称之为“会合”表的东西。
在你的情况下它有:
- ID
- UserID (foreign key)
- InterestID (foreign key)
每个人都可以有多种兴趣,所以当一个人为自己添加新的兴趣时,您只需在该表中添加一个新行,该行将通过外键引用该人和所需的兴趣 不为空
。
在有太多可用变体的大型项目中,建议不要为该表提供 ID
行,而是设置两个 外键
也是 primary keys
,所以不可能重复,table-index
会更小,而且在查找的情况下,它会消耗更少的代价计算能力。
所以最好的解决方案是这样的:
- UserID (foreign key AND primary key)
- InterestID (foreign key AND primary key)
关于mysql - 如何通过字段的子值之一查询 MySQL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18093485/