Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Новый форум. Структура базы. Конвертор [2]
Форумы портала PHP.SU » Разное » Колонка администратора » Новый форум. Структура базы. Конвертор

Страниц (3): « 1 [2] 3 »
 

16. Мелкий - 24 Декабря, 2014 - 16:34:13 - перейти к сообщению
Не. text слишком много. Там же основное количество данных - несколько символов.

По самому вопросу - или в одну таблицу (или 1:1 связь делать, что лишено смысла, в общем-то) или такая вот таблица настроек. Не могу выделить превалирующих плюсов у обоих подходов.
В общем-то, если модель даёт только интерфейс "дай значение такой-то настройки" - то конкретная реализация не имеет значения, к ней привязан только код непосредственно модели.
17. DeepVarvar - 24 Декабря, 2014 - 16:53:02 - перейти к сообщению
Мелкий пишет:
лишено смысла, в общем-то
Не лишено - extended-data можно лениво дергать только когда оно понадобятся, а не тащить это в профиль каждый раз. А еще мне просто не нравятся таблицы в стопицот полей ))
18. DeepVarvar - 24 Декабря, 2014 - 19:40:28 - перейти к сообщению
Так как всетаки делать то? Редко используемых данных будет достаточно, и все они будут разных типов, в основном (пока вижу) интовые, может некоторые ENUM.
19. Bio man - 24 Декабря, 2014 - 20:07:18 - перейти к сообщению
может varchar? в отличии от char, varchar не резервирует память. и вполне вместителен.
(Добавление)
и на 1 байт меньше аналогичного text
20. DeepVarvar - 25 Декабря, 2014 - 14:45:29 - перейти к сообщению
Не пойму зачем писать числа в чаровые поля.
21. Panoptik - 25 Декабря, 2014 - 15:50:51 - перейти к сообщению
ок, не нравится текст или чар делаешь 3 поля
intValue, charValue, textValue вместо предложенного мною обычного универсального value

выиграешь от этого не много но волосы на ж.. рвать перетанешь
22. Bio man - 25 Декабря, 2014 - 17:29:20 - перейти к сообщению
Как насчёт MongoDB или другой альтернативной NoSQL БД?
(Добавление)
имеется ввиду для настроек а не для всего и вся
23. DeepVarvar - 25 Декабря, 2014 - 17:47:51 - перейти к сообщению
А смысл в монге? Все настройки одноуровневые вида ключ-значение, все совершенно спокойно вписывается в простую таблицу в БД.
24. Bio man - 25 Декабря, 2014 - 17:51:42 - перейти к сообщению
DeepVarvar, ну просто подумал, что может быть вполне не плохой вариант, но ты прав, слишком громоздкий для каких то настроек.

Так как ты решил хранить в таблице? Или не решил? Вариантов не много, наверно все уже озвучили.
25. DeepVarvar - 25 Декабря, 2014 - 17:59:29 - перейти к сообщению
Да, я решил хранить в таблице.
Но не решил в какой.

Вариант 1:

members_settings
member_id, field1, field2, field3 ... fieldN

Вариант 2:

members_settings
member_id, key, value

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

Второй вариант смущает меня тем, что неизвестно, данные какого типа нужно будет хранить.
А если учесть как Мелкий реагирует даже на отсутствие UNSIGNED у интовых, то тут и ему не понравится.
Хотя сам вариант как решение вполне не плох, доставит удобство не лазить в БД для добавления поля.
Но обвязку то для работы с такой таблицей всеравно придется писать.
26. Мелкий - 25 Декабря, 2014 - 19:21:01 - перейти к сообщению
DeepVarvar пишет:
то тут и ему не понравится.

Сюрприз: я сам на работе делал именно такую структуру user-key-value
Потом команда от неё отказалась и я так и не понял аргументацию, почему.
Если решение имеет обоснованную аргументацию - ничего не имею против. Как уже писал, важно, чтобы можно было это решение заменить без изменения всего остального кода.

Основные минусы - не выйдет внешние ключи вешать (кроме собственно юзера), необходимость использования неоптимального типа данных, значения по-умолчанию должна знать модель данных.
Плюсы: удобно хранить много необязательных опций, огромная куча неактивных учёток с настройками по-умолчанию не занимает никакого места.
27. DeepVarvar - 25 Декабря, 2014 - 19:28:24 - перейти к сообщению
Мелкий пишет:
огромная куча неактивных учёток с настройками по-умолчанию не занимает никакого места
Буквально недавно делал такую доп таблицу с первым вариантом, где данные в ней меняются по REPLACE INTO, т.е. так же не хранятся лишние неактивные пользаковские настройки.
(Добавление)
Мелкий, еще кстати. В новой структуре форума можно заметить что подфорумы отсутствуют.
Хотя в текущей версии подворумы "виртуальные" и просто имеют привязку к форумам, а ссылки в браузере, что на форум что на подфорум - одинаковые.
28. tuareg - 25 Декабря, 2014 - 20:07:29 - перейти к сообщению
То что описывается это "классический" EAV. Плюсы минусы понятны.
Можно как вариант, для каждого типа(int, varchar и т.д) завести свою табличку.
+ : Данные имеют свой тип
- : Сколько типов == столько таблиц, если мы не знаем какой тип имеет настройка, долбим все таблицы по очереди, пока не найдем нужную настройку
По идее индекс нужен только на id_user+key
Также возможно рассмотреть вариант с вьюхами mysql. Сразу говорю, я с ними не работал, и пока не понимаю механизм как они работают. Но если у MySQL с ними все хорошо, то это будет выход.
*не понимаю механизм как они работают-> В плане нагрузок и т.д Улыбка
29. DeepVarvar - 26 Декабря, 2014 - 02:41:42 - перейти к сообщению
Я таки EAV какраз не предлагаю, нафик эта помойка.
30. EuGen - 29 Декабря, 2014 - 18:22:50 - перейти к сообщению

 

Powered by ExBB FM 1.0 RC1