Задать вопрос
@willlli

Как лучше организовать структуру базы данных и что будет, если значение null?

Проектирую базу данных, но параметров слишком много по нескольким десятков категорий, которые могут быть просто не заполнены.. Как с этим поступить? Вот к примеру возьму структуру магазина."больше всего подходит"
Хотел с начала все затолкать в одну таблицу, но понимаю что это ужасно...
30cb396e222745ce97ffaa4540fc83c7.png
Но в любом случаи будут пустые незаполненные поля... Может у кого-то есть решение?

+ первого варианта, не будут дублироваться столбики "param*"
- кучу пустых полей, по сравнению со вторым вариантом.
Хотя вы более опытные и сами понимаете.

Просто предугадать нельзя, будет там 10 параметров или 20, база будет динамически создаваться.

Вот к примеру, возьмем те же товары"проще объяснить"

у каждого товара будет id name count param1 param2 ... param8
у второго товара будет id name count param1 param2 ... param6
а у третьего товара будет id name count param1 param2 ... param13
и все они в одной категории, как хранить такие варианты?
Получается надо создавать таблицу с
id name count param1 - param13 и в итоге будет 13 столбиков с параметрами, которые будут заполнятся частично..
А еще есть товары для второй категории и таких категорий 100 может быть
Более подходит 2й вариант, но они ужасны, может есть решения подобных задач ?
Параметры нужны для поиска, так бы я просто все объедини и заталкивал в param.

Была идея дублирования.
Создается отдельные таблицы для поиска, таблица с основными данными, которые содержат в колонки параметры json или простой текст в виде параметр1:значение1;параметр2:значение2.. итд или 1:1;2:2.. итд а искать уже по таблицам.

Короче я не знаю, многоязычность по тому же принципу делается, только там нету что в 1м случаи 8 ячеек заполнено в другом 4 и 4 пустых...

Надеюсь вопрос понятен, спасибо за помощь, 21 день пытаюсь решить из всего понял, что значени null или пыстая ячейка в базе это ужасно, а сли %55-60... можно вешается
  • Вопрос задан
  • 2767 просмотров
Подписаться 2 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 3
yamaoto
@yamaoto
la programmeur
Обычно для добавления параметризации добавляют отдельную таблицу для параметров:
/* параметры */
CREATE TABLE Parameters (Id INT NOT NULL PRIMARY KEY, Name NVARCHAR(150) NOT NULL)
/* возможные значения параметров */
CREATE TABLE ParametersOptions (Id INT NOT NULL PRIMARY KEY, ParameterId INT NOT NULL, Value NULL NVARCHAR(150))
/* привязка конкретному товару определенного значения параметра */
CREATE TABLE ParametersValues(Id INT NOT NULL PRIMARY KEY,ProductId INT NOT NULL, ParameterId INT NOT NULL, Value INT NOT NULL)


Тут столбец Value таблицы ParametersValues указан как необязательный.

Также можно добавить таблицу навигации для категорий, чтобы можно было связать с определенной категорией серию параметров
Ответ написан
Комментировать
azrail_dev
@azrail_dev
Вертикальная структура тебе в помощь.
Ответ написан
Комментировать
eucalipt
@eucalipt
Самоделкин.
Я немного не понял вопроса, извиняюсь, если ответ не в бочку.
Речь идет о параметрах товаров, хранимых в таблице?
Если да, то я всегда пользуюсь методом наиболее простым, имхо. Параметры товара все можно хранить как одну строку, параметры перечислять через запятую. А потом вытаскивать из БД всю эту строку и просто разбивать на массив в местах присутствия запятых.

Еще раз извиняюсь, если ответ не по теме.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы