我真的不知道如何设置这个DB。
我有一个10k用户的列表。
每个人都需要拥有+4000个布尔数据。
我很困惑我应该如何存储这些因为我需要在php中拆分它们并经常在页面中使用它们。
感谢。
答案 0 :(得分:1)
您可以serialize
数据并将其存储在SQL中的TEXT
中,然后unserialize
数据并将其存储在$_SESSION
答案 1 :(得分:0)
最简单的解决方案(但不是最好的解决方案)是将它们存储为长字符串(varchar / text类型),其中每个符号对应一些布尔值,所以你会有类似'010101010101010'
的东西,注意 - 你应该使用带有ascii编码的二进制字符
因此您可以使用$string[$someIndex]
另一种方法:将其存储为长位掩码 - 这将减少8倍的内存量(blob类型)
第3种变体:将它们存储在id_user, id_preference, bitvalue
这样的表中,每行 - 一个用户的首选项
第4种变体:重新考虑您的应用程序 - 每个用户的4000多个偏好中没有任何意义:)
答案 2 :(得分:0)
create table user_prefs( user_id int, prefs varchar(4000));
每个字符都是一个首选项。
在php(或类似的东西,使用MDB2):
$res = $db->query("select * from user_prefs where user_id=$user_id");
$row = $res->fetchRow();
$user_prefs = $row[1];
//now your $user_prefs[i] is the ith preference.