powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Структура базы данных.
16 сообщений из 16, страница 1 из 1
Структура базы данных.
    #39713328
vladka63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.

Совет нужен, уважаемые коллеги.

Суть в следующем:
у сайта, в базе данных, есть таблица Product.
В этой таблице около 60 полей.
Реально, по товарам, в комбинациях задействовано около 40 полей.

И из этой таблицы продукты выводятся на страницы сайта.

Теперь возникла задача.
Нужно добавить на сайт еще один вид продуктов.
Но дело в том, что для этого вида продуктов будет нужно всего 3 поля из 60, остальные поля будут заполняться значениями по умолчанию (null, true, false)и в общем то, эти значения по умолчанию никогда не будут влиять на вывод нового продукта на страницу (в смысле функции). Т.е, просто чтобы запросы корректно обрабатывались и все.

Вопрос: на ваш новый продукт помещать в имеющуюся таблицу или лучше создать новую таблицу с 3-я полями?

Вопрос возник в связи с тем, что: а имеет ли смысл при каждом запросе обрабатывать 60 полей, если точно понятно, что выведет только 3..

Спасибо.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713331
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladka63,

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

Если уж и городить новые таблицы и есть возможность менять структуру базы и работающий с ней код, то лучше заняться нормализацией и перепроектировать всю базу по новой...
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713333
vladka63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаvladka63,

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

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

Есть логика в вашем ответе, Анна. Бесспорно есть..
А завтра их будет 15..


Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было.
Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713338
Фотография Щукина Анна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladka63,

ещё раз, если в первый раз эта мысль была озвучена не достаточно ясно:
заняться нормализацией базы. хотя бы до третьей нормальной формы
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713339
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vladka63Есть логика в вашем ответе, Анна. Бесспорно есть..
А завтра их будет 15..

Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было.
Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях.Не надо делать разные таблицы для одной бизнес-сущности, потом будет неудобно с этим работать.

Если не стоит остро вопрос оптимизации хранения (например, там миллиарды записей), то лучше оставить всё в одной таблице.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713342
vladka63
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgvladka63Есть логика в вашем ответе, Анна. Бесспорно есть..
А завтра их будет 15..

Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было.
Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях.Не надо делать разные таблицы для одной бизнес-сущности, потом будет неудобно с этим работать.

Если не стоит остро вопрос оптимизации хранения (например, там миллиарды записей), то лучше оставить всё в одной таблице.

Спасибо, понял :-)
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713345
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Щукина Аннаvladka63,

ещё раз, если в первый раз эта мысль была озвучена не достаточно ясно:
заняться нормализацией базы. хотя бы до третьей нормальной формыМне вот непонятно, как это сделать на практике?

Вот у нас есть продукция, там есть записи Экскаваторы и Бульдозеры
У экскаваторов есть атрибут "объём ковша", у бульдозеров нет
Вполне типичная ситуация для любой торговой фирмы, например. Только там 100500 типов товаров, а не два.

Как следует поступить? Делать 2 таблицы? Делать EAV? Делать связанные сущности свойства экскаватора/бульдозера?

ИМХО вполне нормальным является вариант, когда в таблицу запихивают все атрибуты, а заполняют подходящие, хотя, конечно, тут есть недостатки.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713353
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgВот у нас есть продукция, там есть записи Экскаваторы и Бульдозеры
У экскаваторов есть атрибут "объём ковша", у бульдозеров нет
Вполне типичная ситуация для любой торговой фирмы, например. Только там 100500 типов товаров, а не два.

Как следует поступить? Делать 2 таблицы? Делать EAV? Делать связанные сущности свойства экскаватора/бульдозера?

ИМХО вполне нормальным является вариант, когда в таблицу запихивают все атрибуты, а заполняют подходящие, хотя, конечно, тут есть недостатки.Вообще, такое квалифицированно обсуждают в Проектировании БД, но выскажу такую мысль - нужно исходить из бизнес-смысла этих таблиц.

Если для бизнеса это только "Продукция", то нужно делать одну таблицу. Или одну таблицу, + EAV для свойств.

Если для бизнеса это разные по смыслу сущности, то не надо объединять их в одной таблице. Тогда стандартный подход - делать таблицу Продукция, и 2 подчинённых таблицы со связью 1-1, с специфическим набором атрибутов.

Ну и отдельные решения для особых случаев - большая нагрузка, либо большой объём.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713423
Владимир Затуливетер
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Полностью согласен с alexeyvg.
Лучше сделать в одной таблице иначе будет просто неудобно работать с этим данными.

А хранение данных всегда можно оптимизировать.
data-compression

column-sets

sparse-columns
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713424
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторА хранение данных всегда можно оптимизировать.
data-compression
column-sets
sparse-columns
форум всё хуже и хуже....

EAV если нет понимания конечного масштабирования, или на 2 таблицы объект с основными для всех параметрами + таблица EAV к ней
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713457
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg,

это делается путем создания таблицы, в которой хранятся пары типа "ключ-значение".
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713462
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав Колосовalexeyvg,

это делается путем создания таблицы, в которой хранятся пары типа "ключ-значение".
он так и сказал EAV
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713546
256k
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владимир ЗатуливетерПолностью согласен с alexeyvg.
Лучше сделать в одной таблице иначе будет просто неудобно работать с этим данными.

А хранение данных всегда можно оптимизировать .
data-compression

column-sets

sparse-columns


всегда или нет, еще вопрос, юзер не указал версию сервера
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713812
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvgЩукина Аннаvladka63,

ещё раз, если в первый раз эта мысль была озвучена не достаточно ясно:
заняться нормализацией базы. хотя бы до третьей нормальной формыМне вот непонятно, как это сделать на практике?

Вот у нас есть продукция, там есть записи Экскаваторы и Бульдозеры
У экскаваторов есть атрибут "объём ковша", у бульдозеров нет
Вполне типичная ситуация для любой торговой фирмы, например. Только там 100500 типов товаров, а не два.

Как следует поступить? Делать 2 таблицы? Делать EAV? Делать связанные сущности свойства экскаватора/бульдозера?

ИМХО вполне нормальным является вариант, когда в таблицу запихивают все атрибуты, а заполняют подходящие, хотя, конечно, тут есть недостатки.

ИМХО зависит от количества продуктов...

У меня есть несколько источников данных (продукция), с каждого приходят разные наборы параметров (атрибуты) которые надо хранить. единственное ограничение, атрибуты все одного типа. У меня все int.

Я храню
продукты с описанием (id_product, name, etc) (1, экскаватор Э1, дорогой, красивый), (2, бульдозер БМ, дешевый, молодежный)
все параметры продуктов в одной таблице (id_product, id_param_name, value) (1,100,60)
наименования параметров в библиотеке (id_param_name, param_name)(100, скорость)

то есть для любого продукта тут может быть любое количество атрибутов и никаких null

Дальше удобно делать пивотом отчет по известному мне сету параметров или же делать группы параметров в библиотеке (id_param_name, param_name, id_group) и собирать запрос по ним. Опять же в библиотеку можно вынести особенности атрибутов (id_param_name, param_name, type, group) (100, скорость, км/ч, group). С группами можно конечно уйти в спираль нормализации и бесконечности справочников, но это уже зависит от задачи и рвения разработчика.

Вроде бы это довольно классическая схема минимизирующая дублирование строковых атрибутов. Не знаю как амазоны справляются с такими задачами, но, судя по 60 полям у ТС, посидеть, собрать и структурировать как то все (в том числе и возможные в будущем) атрибуты, вполне реальная задача.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713822
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PizzaPizzaИМХО зависит от количества продуктов...

У меня есть несколько источников данных (продукция), с каждого приходят разные наборы параметров (атрибуты) которые надо хранить. единственное ограничение, атрибуты все одного типа. У меня все int.

Я храню
продукты с описанием (id_product, name, etc) (1, экскаватор Э1, дорогой, красивый), (2, бульдозер БМ, дешевый, молодежный)
все параметры продуктов в одной таблице (id_product, id_param_name, value) (1,100,60)
наименования параметров в библиотеке (id_param_name, param_name)(100, скорость)

то есть для любого продукта тут может быть любое количество атрибутов и никаких null

Дальше удобно делать пивотом отчет по известному мне сету параметров или же делать группы параметров в библиотеке (id_param_name, param_name, id_group) и собирать запрос по ним. Опять же в библиотеку можно вынести особенности атрибутов (id_param_name, param_name, type, group) (100, скорость, км/ч, group). С группами можно конечно уйти в спираль нормализации и бесконечности справочников, но это уже зависит от задачи и рвения разработчика.

Вроде бы это довольно классическая схема минимизирующая дублирование строковых атрибутов. Не знаю как амазоны справляются с такими задачами, но, судя по 60 полям у ТС, посидеть, собрать и структурировать как то все (в том числе и возможные в будущем) атрибуты, вполне реальная задача.У меня был такой вариант - сделать EAV для параметров, а потом для товаров, обладающих одинаковым набором параметров, автоматически создаются таблицы с значениями этих параметров, и далее всё хранится там.
Выглядит громоздко, но зато обеспечивает высокую производительность.

Но для ТС я такого не посоветую, не зная, нужно ли такое усложнение.

И даже EAV - зачем это? Какой нибудь парикмахерской?
10 лет у фирмы были продукты с 60 параметрами, потом появились продукты с 3мя, и ещё 10 лет ничего не поменяется. А потом фирма исчезнет, или все перейдут на нейронные компьютеры.

И зачем бизнесу вкладывать бабло в изменение модели данных и приложений, что это им даст, какой навар? Удовлетворение программиста от "нормализации"?
Или возможность добавить через 10 лет новый параметр одним нажатием кнопки? А эта возможность позволит сэкономить, уволив их единственного программиста? Если нет, то какой смысл делать одной кнопкой? Начальник распорядится - программист добавит параметр, без всяких EAV

Я попытался дать рецепт, исходя из формулировок ТС, ИМХО не нужно ему никаких изменений модели данных, для их бизнес-процессов, нагрузок, объёмов, частоты изменений, сложности данных и т.п. Просто ждя некоторых типов использовать 3 поля, этого достаточно.
...
Рейтинг: 0 / 0
Структура базы данных.
    #39713823
PizzaPizza
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexeyvg
И даже EAV - зачем это? Какой нибудь парикмахерской?
10 лет у фирмы были продукты с 60 параметрами, потом появились продукты с 3мя, и ещё 10 лет ничего не поменяется. А потом фирма исчезнет, или все перейдут на нейронные компьютеры.

Ох скорее бы нейронные и все такое уже :)

Думается мне, что реляционные бд ещё поживут, пока структурированные данные существуют, а вот бизнес столько не протянет.

В целом я бы отталкивался от количества сущностей. Если это до миллионов строк продуктов, и никакой статистики и выборки условно раз в минуту, то жить и так можно и даже проще, тем более, что хранить, судя по всему, собираются почти битовые значения. Немного смущает, что возможно много дублирующих сущностей с, например, разницей в один атрибут. Но тут без специфики данных не понять.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Структура базы данных.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]