Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
15.12.2021, 20:42
|
|||
---|---|---|---|
|
|||
Таблица с неопределенными столбцами |
|||
#18+
Подскажите как правильно делать структуру базы данных. Раньше было TABLE `CLIENT` (`client_id`, `login`, `pass`, `name`,`tel`) TABLE `MONEY` (`client_id`, `time`, `action`, `sum`) но у клиента стали появляться другие параметры (адрес, второй телефон, скидка, несколько договоров, ИНН, а в будущем еще не определенные параметры... также и в списаниях требуется расшифровка(количество, качество, название, периодичность и т.д.) Поэтому количество столбцов выросло до 30 и продолжает расти, что не ведет к удобству. Как вижу решение создать таблицу TABLE `CLIENT` (`client_id`, `param`, `value`) например (1,'name','Pavel'),(1,'tel_1','7911'),(1,'tel_2','7921'); (2,'name','Sergei'),(2,'tel_1','7911'),(2,'skidka','VIP'); Но тогда на клиента будут сотни строк, да и 'tel_xxx' тоже трудно обрабатываемый параметр Второе решение это таблицу TABLE `CLIENT` (`client_id`, `JSON`) где в JSON засунуть все параметры, но тогда сложнее искать клиента (например с определенным телефоном) как правильнее сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
15.12.2021, 23:11
|
|||
---|---|---|---|
Таблица с неопределенными столбцами |
|||
#18+
pppp27 Как вижу решение создать таблицу TABLE `CLIENT` (`client_id`, `param`, `value`) Поздравляю, вы изобрели EAV. pppp27 Второе решение это таблицу TABLE `CLIENT` (`client_id`, `JSON`) Не вариант - JSON и прочие CSV пригодны для хранения, но не для поиска/отбора/агрегирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.12.2021, 14:14
|
|||
---|---|---|---|
|
|||
Таблица с неопределенными столбцами |
|||
#18+
Akina, Спасибо за ответ. Не успел найти хорошую статью про EAV. Почитаю. 1)А как делать под параметры. Например адрес состоит из улицы, номера дома, квартиры. А может содержать еще корпус и т.д. 2) Как найти пользователя у которого адрес=Москва и имя=Павел. JOIN таблицы себя на себя? А если в ней млн строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.12.2021, 15:04
|
|||
---|---|---|---|
|
|||
Таблица с неопределенными столбцами |
|||
#18+
pppp27 2) Как найти пользователя у которого адрес=Москва и имя=Павел. JOIN таблицы себя на себя? Нет, условия в IN и GROUP BY + HAVING для отсечения по степени релевантности. EAV сильна тем, что для таких задач позволяет легко делать "совпадение хотя бы двух условий из трёх". ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=47&tablet=1&tid=1827841]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
167ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 274ms |
0 / 0 |