[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как лучше организовать таблицу
Эли4ка
Здравствуйте. Встала задача:
Есть ~15к элементов с множеством параметров. Если посчитать все уникальные-то их будет 172. В среднем у каждого элемента по 3-4 параметра. у 1% только от 10 и выше.
Так вот сама задача-нужно хранить в базе эти элементы и организовать поиск не только по названию элемента,но и по параметрам. Первая идея была использовать полнотекстовой поиск и все параметры хранить одним текстом примерно так:
Элемент1
Параметр1,Параметр2,..ПараметрN
Но некоторые параметры имеют диапазон и тогда полнотекстовой поиск может не справится,если мне нужно найти,например,вещь с параметромX > 45 и параметромY <60
Создавать таблицу с 172+-10 полями это верх глупости как по мне и я решила сделать так:в первой таблице будет хранится название элемента,ид и т.д,а во второй такая структура таблицы:
id
id_elem
name_parameter
value
То есть в "name_parameter" будет хранится название параметра,а в value значение этого параметра(или диапазон)
Но как тогда сделать поиск по этим самым параметрам и вообще умное ли это решение или верх глупости?
P.S. обычный вывод(без поиска) даже без вопросов-все легко,а вот с поиском по параметрам как быть.
Valick
Цитата (Эли4ка @ 5.10.2018 - 14:14)
вообще умное ли это решение или верх глупости?

Решение нормальное, только тут надо не 2 а 3 таблицы. 1 таблица элементы, вторая таблица параметры и третья таблица связи элемент-параметр, первичный ключ можно повесить на два поля id_elem и id_param. (от себя лично и учитывая недавний холивар, я бы всё таки именовал поля сначала именем таблицы, а потом именем поля, т.е elem_id и param_id)


_____________
Стимулятор ~yoomoney - 41001303250491
Эли4ка
Поняла,спасибо.
Valick
Эли4ка, с поиском гораздо сложнее, тут надо конкретно подходить к тому, что и как искать.


_____________
Стимулятор ~yoomoney - 41001303250491
Эли4ка
Нужно именно по параметрам
Valick
Эли4ка, так параметры разные, вот и поиск будет комбинированный


_____________
Стимулятор ~yoomoney - 41001303250491
Эли4ка
Не совсем поняла sad.gif
sergeiss
Цитата (Эли4ка @ 5.10.2018 - 15:14)
Но как тогда сделать поиск по этим самым параметрам и вообще умное ли это решение или верх глупости?

Нормальное решение smile.gif При поиске джойнишь первую таблицу со второй, связывая данные по айди элемента, одновременно накладывая нужные тебе ограничения на величину параметра. Получаешь для каждого элемента столько строк, сколько его параметров соответствуют условию. Либо можно сделать так, что на выходе эти параметры (соответствующие условию) будут объединены в одно поле. С любым разделителем, например с запятой.

Цитата (Valick @ 5.10.2018 - 15:46)
только тут надо не 2 а 3 таблицы

А зачем? У Элички всё правильно написано. Одна таблица - список элементов и их всякие уникальные причиндалы. А во второй - параметры с привязкой к айди элемента из первой таблицы. Как ты предлагаешь 3-ю таблицу использовать?



_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Valick
sergeiss, там всё предельно ясно написано. Отношение многие ко многим - это три таблицы.


_____________
Стимулятор ~yoomoney - 41001303250491
Эли4ка
Спасибо всем за советы
sergeiss
Цитата (Valick @ 7.10.2018 - 07:08)
Отношение многие ко многим - это три таблицы.

Если так, то да. Но из описания я так понял, что там "один (элемент) ко многим (параметрам)".
Эличка, поясни, что там на самом деле!

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Эли4ка
15к элементов у которых надо в БД хранить 172+-10 параметров,но ни у одного элемента нет сразу этих 172+-10 параметров,а в средней у каждого элемента по 3-4 параметра.
так попонятнее или нет? sad.gif huh.gif unsure.gif
FatCat
Цитата (Эли4ка @ 5.10.2018 - 14:14)
Создавать таблицу с 172+-10 полями это верх глупости как по мне

Некашерно? Соглашусь.
Но не глупо. Если в итоге скрипт будет проще, работать будет быстрее и ресурсов съест меньше — это никак не глупо.

_____________
Бесплатному сыру в дырки не заглядывают...
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.