|
Таблица с неопределенными столбцами
|
|||
---|---|---|---|
#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, 20:42 |
|
Таблица с неопределенными столбцами
|
|||
---|---|---|---|
#18+
pppp27 Как вижу решение создать таблицу TABLE `CLIENT` (`client_id`, `param`, `value`) Поздравляю, вы изобрели EAV. pppp27 Второе решение это таблицу TABLE `CLIENT` (`client_id`, `JSON`) Не вариант - JSON и прочие CSV пригодны для хранения, но не для поиска/отбора/агрегирования. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.12.2021, 23:11 |
|
Таблица с неопределенными столбцами
|
|||
---|---|---|---|
#18+
Akina, Спасибо за ответ. Не успел найти хорошую статью про EAV. Почитаю. 1)А как делать под параметры. Например адрес состоит из улицы, номера дома, квартиры. А может содержать еще корпус и т.д. 2) Как найти пользователя у которого адрес=Москва и имя=Павел. JOIN таблицы себя на себя? А если в ней млн строк? ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 14:14 |
|
Таблица с неопределенными столбцами
|
|||
---|---|---|---|
#18+
pppp27 2) Как найти пользователя у которого адрес=Москва и имя=Павел. JOIN таблицы себя на себя? Нет, условия в IN и GROUP BY + HAVING для отсечения по степени релевантности. EAV сильна тем, что для таких задач позволяет легко делать "совпадение хотя бы двух условий из трёх". ... |
|||
:
Нравится:
Не нравится:
|
|||
16.12.2021, 15:04 |
|
|
start [/forum/topic.php?fid=47&fpage=3&tid=1827841]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 249ms |
total: | 373ms |
0 / 0 |