2013-07-23 3 views
1

У меня есть приложение, которое я создаю, и мне нужно сохранить настройки для некоторых страниц. Я решил сохранить его в mysql в двоичном формате данных. У меня много флажков. Итак, допустим, у меня такой видНастройки магазина в 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 или что-то еще?

+0

Я хотел бы предложить различные столбцы для каждого значения флажка. Если значение заслуживает сохранения, оно, вероятно, имеет определенную цель и заслуживает более описательного имени, чем 'SUBSTR (OptionString, 3, 1)'. –

+0

Значение, которое необходимо сохранить, проверяется или не проверяется, поэтому, если есть немного для этого, это будет хорошо. – melanholly

+0

Звучит неплохо @melanholly - я просто играл в Адвоката Дьявола, на всякий случай :) –

ответ

3

Наиболее эффективным способом хранения битовых данных является использование целочисленных типов данных. В вашем случае каждый флажок будет представлять 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 для получения дополнительной информации

+0

Поэтому я могу преобразовать данные в integer 'bindec' и сохранить их таким образом, чтобы я мог декодировать его с помощью' decbin', а затем работать с ним – melanholly

0

Вы можете создать таблицу настроек по умолчанию, а затем соответствующую таблицу, в которой будут храниться отдельные пользовательские настройки. Вы можете использовать тип данных bit или tinyint, чтобы указать, отключена ли опция.

settingDefault 
settingId setting default 
1   loadImages 1 
2   loadAds 0 

settingUser 
userId settingId value 
1  1   0

Преимущество здесь в том, что у вас есть только для хранения пользовательских настроек, если они другое от значения по умолчанию.

+0

Это не вариант, потому что у меня одинаковые настройки для всех моих пользователей. Спасибо за ваш ответ. – melanholly

Смежные вопросы