这是我的情况:
情况:
我有用户,每个用户在多个类别中有多个值。
在我看来,我有两个选择:
I。制作新表"值":
user_ID category value
... ... ...
5 1 aaa
5 1 bbb
5 2 ccc
5 2 ddd
5 2 eee
6 1 xxx
6 2 yyy
6 1 zzz
II。在我与用户的实际表格中——"用户":
user_ID (unique) values
5 aaa,bbb$$ccc,ddd,eee
6 xxx,zzz$$yyy
其中,我将值保存为文本,并使用","分隔值和"$$"分隔类别对其进行解析。
到目前为止,我一直在用第二种方式做一些小事情,但现在我希望这个数据库有很多值和类别,我想知道哪一种会减少服务器负载——有一个非常大的mySQL数据库表,并在每个页面上浏览它,以查看哪些值属于当前用户;或者只从一个相对较小的表中获取他的所有值,但每次都用PHP解析字符串以使其可用?
第一个方法-这就是构建关系数据库的目的。您还有索引的额外好处,即使使用相当大的数据集,索引也会使它保持快速运行。
此外,它还允许从另一个方向查询数据-为我获取类别2等于"eee"的所有用户
在字段中插入未知数量的数据是一个非常糟糕的主意,因为您一开始就不知道如何对其进行标注。此外,您的数据库将无法以任何有用的方式对其进行索引,并且性能将随着系统的增长而下降。
将类别和值放在一个单独的表中可以很好地扩展,就像adam已经说过的,这就是关系数据库的全部内容。
你可能想在谷歌上搜索"数据库规范化",并浏览一些结果以获取更多信息。