Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Добрый день. Совет нужен, уважаемые коллеги. Суть в следующем: у сайта, в базе данных, есть таблица Product. В этой таблице около 60 полей. Реально, по товарам, в комбинациях задействовано около 40 полей. И из этой таблицы продукты выводятся на страницы сайта. Теперь возникла задача. Нужно добавить на сайт еще один вид продуктов. Но дело в том, что для этого вида продуктов будет нужно всего 3 поля из 60, остальные поля будут заполняться значениями по умолчанию (null, true, false)и в общем то, эти значения по умолчанию никогда не будут влиять на вывод нового продукта на страницу (в смысле функции). Т.е, просто чтобы запросы корректно обрабатывались и все. Вопрос: на ваш новый продукт помещать в имеющуюся таблицу или лучше создать новую таблицу с 3-я полями? Вопрос возник в связи с тем, что: а имеет ли смысл при каждом запросе обрабатывать 60 полей, если точно понятно, что выведет только 3.. Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 08:53 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
vladka63, а завтра появится продукт с пятью полями - ещё таблицу делать будете? а послезавтра нужно будет семь полей, затем десять. на каждый такой чих будете по таблице делать? Если уж и городить новые таблицы и есть возможность менять структуру базы и работающий с ней код, то лучше заняться нормализацией и перепроектировать всю базу по новой... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 08:58 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Щукина Аннаvladka63, а завтра появится продукт с пятью полями - ещё таблицу делать будете? а послезавтра нужно будет семь полей, затем десять. на каждый такой чих будете по таблице делать? Если уж и городить новые таблицы и есть возможность менять структуру базы и работающий с ней код, то лучше заняться нормализацией и перепроектировать всю базу по новой... Есть логика в вашем ответе, Анна. Бесспорно есть.. А завтра их будет 15.. Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было. Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:02 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
vladka63, ещё раз, если в первый раз эта мысль была озвучена не достаточно ясно: заняться нормализацией базы. хотя бы до третьей нормальной формы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:11 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
vladka63Есть логика в вашем ответе, Анна. Бесспорно есть.. А завтра их будет 15.. Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было. Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях.Не надо делать разные таблицы для одной бизнес-сущности, потом будет неудобно с этим работать. Если не стоит остро вопрос оптимизации хранения (например, там миллиарды записей), то лучше оставить всё в одной таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:15 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
alexeyvgvladka63Есть логика в вашем ответе, Анна. Бесспорно есть.. А завтра их будет 15.. Хорошо, а что бы вы посоветовали, если бы этого "завтра" не было. Т.е, точно известно - что единожды будет добавлено наименование с описанием в трех полях.Не надо делать разные таблицы для одной бизнес-сущности, потом будет неудобно с этим работать. Если не стоит остро вопрос оптимизации хранения (например, там миллиарды записей), то лучше оставить всё в одной таблице. Спасибо, понял :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:17 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Щукина Аннаvladka63, ещё раз, если в первый раз эта мысль была озвучена не достаточно ясно: заняться нормализацией базы. хотя бы до третьей нормальной формыМне вот непонятно, как это сделать на практике? Вот у нас есть продукция, там есть записи Экскаваторы и Бульдозеры У экскаваторов есть атрибут "объём ковша", у бульдозеров нет Вполне типичная ситуация для любой торговой фирмы, например. Только там 100500 типов товаров, а не два. Как следует поступить? Делать 2 таблицы? Делать EAV? Делать связанные сущности свойства экскаватора/бульдозера? ИМХО вполне нормальным является вариант, когда в таблицу запихивают все атрибуты, а заполняют подходящие, хотя, конечно, тут есть недостатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:21 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
alexeyvgВот у нас есть продукция, там есть записи Экскаваторы и Бульдозеры У экскаваторов есть атрибут "объём ковша", у бульдозеров нет Вполне типичная ситуация для любой торговой фирмы, например. Только там 100500 типов товаров, а не два. Как следует поступить? Делать 2 таблицы? Делать EAV? Делать связанные сущности свойства экскаватора/бульдозера? ИМХО вполне нормальным является вариант, когда в таблицу запихивают все атрибуты, а заполняют подходящие, хотя, конечно, тут есть недостатки.Вообще, такое квалифицированно обсуждают в Проектировании БД, но выскажу такую мысль - нужно исходить из бизнес-смысла этих таблиц. Если для бизнеса это только "Продукция", то нужно делать одну таблицу. Или одну таблицу, + EAV для свойств. Если для бизнеса это разные по смыслу сущности, то не надо объединять их в одной таблице. Тогда стандартный подход - делать таблицу Продукция, и 2 подчинённых таблицы со связью 1-1, с специфическим набором атрибутов. Ну и отдельные решения для особых случаев - большая нагрузка, либо большой объём. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 09:30 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Полностью согласен с alexeyvg. Лучше сделать в одной таблице иначе будет просто неудобно работать с этим данными. А хранение данных всегда можно оптимизировать. data-compression column-sets sparse-columns ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:18 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
авторА хранение данных всегда можно оптимизировать. data-compression column-sets sparse-columns форум всё хуже и хуже.... EAV если нет понимания конечного масштабирования, или на 2 таблицы объект с основными для всех параметрами + таблица EAV к ней ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:23 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
alexeyvg, это делается путем создания таблицы, в которой хранятся пары типа "ключ-значение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 11:57 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Владислав Колосовalexeyvg, это делается путем создания таблицы, в которой хранятся пары типа "ключ-значение". он так и сказал EAV ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 12:01 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
Владимир ЗатуливетерПолностью согласен с alexeyvg. Лучше сделать в одной таблице иначе будет просто неудобно работать с этим данными. А хранение данных всегда можно оптимизировать . data-compression column-sets sparse-columns всегда или нет, еще вопрос, юзер не указал версию сервера ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 13:05 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
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 полям у ТС, посидеть, собрать и структурировать как то все (в том числе и возможные в будущем) атрибуты, вполне реальная задача. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 21:19 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
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 поля, этого достаточно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 21:58 |
|
||
|
Структура базы данных.
|
|||
|---|---|---|---|
|
#18+
alexeyvg И даже EAV - зачем это? Какой нибудь парикмахерской? 10 лет у фирмы были продукты с 60 параметрами, потом появились продукты с 3мя, и ещё 10 лет ничего не поменяется. А потом фирма исчезнет, или все перейдут на нейронные компьютеры. Ох скорее бы нейронные и все такое уже :) Думается мне, что реляционные бд ещё поживут, пока структурированные данные существуют, а вот бизнес столько не протянет. В целом я бы отталкивался от количества сущностей. Если это до миллионов строк продуктов, и никакой статистики и выборки условно раз в минуту, то жить и так можно и даже проще, тем более, что хранить, судя по всему, собираются почти битовые значения. Немного смущает, что возможно много дублирующих сущностей с, например, разницей в один атрибут. Но тут без специфики данных не понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.10.2018, 22:13 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=46&tid=1689008]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
25ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
| others: | 263ms |
| total: | 401ms |

| 0 / 0 |
