我有一个正在构建的应用程序,我必须保存一些页面的设置。我决定以二进制数据格式将其保存在mysql中。我有很多支票箱。假设我有这种形式的
<form>
<input type="text" value="some text" id="text">
<input type="checkbox" name="checkboxes1">
<input type="checkbox" name="checkboxes2">
<input type="checkbox" name="checkboxes3">
</form>
我有10个页面的设置页面与此类似。我认为我可以将这些数据以二进制数据的形式写入mysql数据库。假设选择了第一个和最后一个,所以我用mysql 101
编写。选择哪种数据类型的BLOB
、VARCHAR
或其他类型?
存储位数据的最有效方法是使用整数数据类型。在您的情况下,每个复选框都表示一个整数的1位。例如,如果设置了复选框:
checkbox 1 checked
checkbox 2 unchecked
checkbox 3 checked
这将表示5(1*2^2+0*2^1+1*2^0)。根据需要存储的位数,使用以下类型的整数:
tiny int: 8 bits
small int: 16 bits
medium int: 24 bits
int: 32 bits
big int: 64 bits
请参阅http://dev.mysql.com/doc/refman/5.6/en/integer-types.html有关更多信息,
您可以创建一个默认设置表,然后创建一个相应的表来存储各个用户设置。可以使用bit
或tinyint
数据类型来指示某个选项是关闭还是打开。
设置默认settingId设置默认值1加载图像12个加载广告0设置用户userId settingId值1 1 0
这里的优点是,只有当用户设置与默认设置不同时,才需要存储用户设置。