|
|
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
БД содержит в основном однотипный справочник товаров (лекарства, изделия медицинского назначения и т.д.). Выделю, важные сейчас для меня три таблицы относящиеся к справочнику товаров: Вид_товара (id, name), Аналоги (Id, Name), Товары (id, name, id_вид_товара, id_аналога, id_производителя и т.д.), Аналоги - это те же товары, только без уточнения производителя - это было введено для удобства аналитики.А так же две таблицы с атрибутами, всё немного в упрощенной форме, суть от этого не меняется: Атрибуты(id, name, id_тип_атрибута и т.д.), Значения_Атрибутов(id_товара, id_атрибута, значение). В базе порядка 100 тыщ товаров, порядка 20 атрибутов у каждого товара, и все атрибуты привязаны к товару. Соответственно в таблице Значения_Атрибутов ~2 млн записей, со всеми вытекающими отсюда последствиями, включая то, что если нужно вытащить все атрибуты для товара, приходиться делать 20 join к одной таблице. Я хочу всё это дело как-то по возможности оптимизировать, а именно, первое что пришло в голову - это разделить атрибуты по видам. То есть будет 3 вида атрибутов: 1 - наиболее общий, относиться к таблице Вид_товара, 2 - менее общий, относиться к уровню Аналоги, и наконец 3 - наиболее частный вид атрибутов относится к конкретным товарам. Ещё раз повторюсь наборы атрибутов однотипные, т.е. нет такого , что например, в группе Вид_товара будут разный набор атрибутов для разных видов товара, набор будет один для всех видов товара, то же самое для аналогов и для товаров. Далее, как мне кажется нужно вводить разные типы данных для хранения атрибутов, т.е. целое, строка, дата и т.д. Набросал в erwin схему. Уважаемые эксперты,пожалуйста, взгляните и укажите где и какие недостатки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 13:50 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Мне кажется, самое важное решить, как увязывать аналоги с товарами. Если бы для каждой группы аналогов был бы один "образцовый" товар, то таблица аналогов не нужна, достаточно иметь в таблице товаров ссылку на образец, аналогом которого он является. Свойства товара тоже относились бы к одной таблице товаров. Может ли товар быть аналогом двух разнотипных товаров ? Т.е. товар АБ аналог товара А (соответсвенно А - аналог АБ) и одновременно АБ аналог товара Б (соответсвенно Б - аналог АБ), но при этом А аналогом Б не является. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:19 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezесли нужно вытащить все атрибуты для товара, приходиться делать 20 join к одной таблице Чья пустая голова породила такой идиотский бред? Все атрибуты одного товара вытаскиваются одним запросом, вообще без джоинов, с полной оптимизацией индексами. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:30 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Программист-ЛюбительМне кажется, самое важное решить, как увязывать аналоги с товарами. Если бы для каждой группы аналогов был бы один "образцовый" товар, то таблица аналогов не нужна, достаточно иметь в таблице товаров ссылку на образец, аналогом которого он является. Свойства товара тоже относились бы к одной таблице товаров. Может ли товар быть аналогом двух разнотипных товаров ? Т.е. товар АБ аналог товара А (соответсвенно А - аналог АБ) и одновременно АБ аналог товара Б (соответсвенно Б - аналог АБ), но при этом А аналогом Б не является. У "Товар" и "Аналог" связь один ко многим. Т.е. Например есть аналог Аспирин №10_Россия , к нему относятся товары Аспирин №10_Акрихин(г.Москва), Аспирин №10_БытХимПром(г.Перьм) и т.д. Далее есть аналог Аспирин №10_Импорт, к нему относятся товары Аспирин №10_БерлинХеми(г.Мюнхен), Аспирин №10_Упса(г.Париж) и т.д. К сожалению понятие Аналог выкинуть из схемы очень нежелательно, т.к. очень много аналитических отчетов готовых на нём завязано. Меня больше сейчас волнует, правильную ли я выбрал схему соединяющую таблицу Параметры и Значения (это Параметр_String, Параметр_Int ит.д.). Может нужно что-то более нормализовать и т.д. ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:33 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovrodrigezесли нужно вытащить все атрибуты для товара, приходиться делать 20 join к одной таблице Чья пустая голова породила такой идиотский бред? Все атрибуты одного товара вытаскиваются одним запросом, вообще без джоинов, с полной оптимизацией индексами. может быть в первом посте не совсем ясно выразился. Привожу структуру таблиц Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. и если например мне необходимо вытащить хотябы 3 атрибута, мне придется делать: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:43 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezНапример есть аналог Аспирин №10_Россия , к нему относятся товары Аспирин №10_Акрихин(г.Москва), Аспирин №10_БытХимПром(г.Перьм) и т.д. У вас в схеме перепутаны местами понятия "товар" и "аналог". "Аспирин номер 10" это как раз товар, а остальное - его аналоги от различных производителей, в том числе - заграничных. И вообще это всё по уму-то укладывается в одно дерево классификации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:49 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovrodrigezНапример есть аналог Аспирин №10_Россия , к нему относятся товары Аспирин №10_Акрихин(г.Москва), Аспирин №10_БытХимПром(г.Перьм) и т.д. У вас в схеме перепутаны местами понятия "товар" и "аналог". "Аспирин номер 10" это как раз товар, а остальное - его аналоги от различных производителей, в том числе - заграничных. И вообще это всё по уму-то укладывается в одно дерево классификации: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Может быть вы и правы. Но в первом посте я написал, что в имеющейся работающей системе Аналог - это товар без указания производителя. К сожалению, а может и к счастью сделано именно так, т.е. общий аналог для всех российских аспиринов № 10 является Аспирин№10_Россия. Может быть тому виной специфика товаров относящихся к фармацевтике и люди которые с этим работают посчитали что им так будет удобнее и правильнее. Но вопрос то мой касается не аналогов, а атрибутов. Т.е. имеет ли право на жизнь приведенная мной схема, или её сразу нужно в помойку? Простите за назойливость ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:57 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezесли например мне необходимо вытащить хотябы 3 атрибута, мне придется делать: И именно это я назвал идиотским бредом. Атрибуты в любом количестве вытаскиваются так: Код: sql 1. 2. 3. 4. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:58 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Это у кого ж такая БД, rodrigez? Фармацевты - состоятельные ребята, что, у них нет денег на то, чтобы нанять нормального архитектора? Здесь оптимизировать нечего, нужно выбрасывать все целиком. Не читайте тенцеров. Особенно на ночь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 14:59 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigez, а речь идёт об аналогах, синонимах ( дженериках ) или о том и о другом вместе? Если об аналогах, то должны указываться, как мне представляется, болезни, для которых эти лекарства аналоги. При чём, для одной болезни - аналоги, а для другой - не аналоги. Если синонимы - тогда проще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:15 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
guest_20040621Это у кого ж такая БД, rodrigez? Фармацевты - состоятельные ребята, что, у них нет денег на то, чтобы нанять нормального архитектора? Здесь оптимизировать нечего, нужно выбрасывать все целиком. Не читайте тенцеров. Особенно на ночь. Т.е. , на сколько я понял вы против EAV. Тогда помогите дельным советом, или хотя бы намекните в какую сторону копать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:31 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezТогда помогите дельным советом, или хотя бы намекните в какую сторону копать? Ты всерьёз хочешь слушать советов серых личностей, неспособных даже зарегистрироваться на форуме?.. В морг. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:33 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Изгоевrodrigez, а речь идёт об аналогах, синонимах ( дженериках ) или о том и о другом вместе? Если об аналогах, то должны указываться, как мне представляется, болезни, для которых эти лекарства аналоги. При чём, для одной болезни - аналоги, а для другой - не аналоги. Если синонимы - тогда проще. В данной системе понятие аналог было введено и названо искуственно. Это больше можно назвать синомимом. Здесь аналог - это товар без указания производителя, кому то так показалось правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:34 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovrodrigezТогда помогите дельным советом, или хотя бы намекните в какую сторону копать? Ты всерьёз хочешь слушать советов серых личностей, неспособных даже зарегистрироваться на форуме?.. В морг. Димитрий, ты советуешь оставить так как есть и ничего не менять? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:39 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakovrodrigezесли например мне необходимо вытащить хотябы 3 атрибута, мне придется делать: И именно это я назвал идиотским бредом. Атрибуты в любом количестве вытаскиваются так: Код: sql 1. 2. 3. 4. ..что интересно, сейчас в коде посмотрел, в некоторых местах у меня так и сделано, а в некоторых с джоинами, просто я не думал что вы так на 20 джинах внимание заострите. Но, по моему, как бы то ни было, 2 млн. записей - не хорошо, особенно если учесть, что большая часть параметров дублируется для каждого товара, т.е. часть этих атрибутов можно привязать к Видам_товара, тогда никакого дублирования не будет. И вопрос мой, собственно говоря именно с этим и связан, а ещё вопрос про представленную схему, что в ней не так по вашему мнению. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:53 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezНо, по моему, как бы то ни было, 2 млн. записей - не хорошо, особенно если учесть, что большая часть параметров дублируется для каждого товара, т.е. часть этих атрибутов можно привязать к Видам_товара, тогда никакого дублирования не будет. Два миллиона записей - мелочь, которой не озадачить ни одну приличную СУБД. Хотите привязывать атрибуты к видам товара - привязывайте, дело благое, но учтите, что операторы, которые будут вносить эти атрибуты, вашу работу будут саботировать, плодя всё те же дубли для каждого товара по отдельности. Потому что им так проще. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 15:57 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
> вы против EAV В такой форме - категорически да. > Тогда помогите дельным советом Тема истоптана вдоль и поперек, наверное, четверть сообщений форума об этом. Главное, что вы должны понимать, - зачем вам такая структура и как она должна эволюционировать. Роль такой структуры - накопление данных для набора значений характеристик. Как только вы получили такой набор, характеристика описывается традиционным образом. Ни о каких миллионах значений речь идти не может по определению. Но в данном случае это не основная проблема вашей базы данных. У вас не решена основная задача: идентификация продукта, нет системы альтернативного именования и не описаны критерии сравнения (просто аналогов не бывает, как вы понимаете, есть близость по некоторому критерию или их набору). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:03 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovrodrigezНо, по моему, как бы то ни было, 2 млн. записей - не хорошо, особенно если учесть, что большая часть параметров дублируется для каждого товара, т.е. часть этих атрибутов можно привязать к Видам_товара, тогда никакого дублирования не будет. Два миллиона записей - мелочь, которой не озадачить ни одну приличную СУБД. Хотите привязывать атрибуты к видам товара - привязывайте, дело благое, но учтите, что операторы, которые будут вносить эти атрибуты, вашу работу будут саботировать, плодя всё те же дубли для каждого товара по отдельности. Потому что им так проще. Это означает что приведенную выше схему вы "одобрям" или всё таки "не одобрям"? Вы правы. Но есть в конце концов административные рычаги. Операторы эти параметры вводить не будут, будет вводить один манагер-провизор, который будет контролироваться администратором БД и будет обосновывать необходимость введения того или иного параметра, если что не так, будет получать по репе (в переносном смысле). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:07 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
> В морг Дружище, мнение дегенератов - зарегистрированных где угодно какое угодно количество раз - меня не интересует. Хотите, чтобы к вам относились серьезно, научитесь хорошо делать свою работу. Регистрироваться и трепать языком умеет любая блондинка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:08 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
guest_20040621> вы против EAV В такой форме - категорически да. > Тогда помогите дельным советом Тема истоптана вдоль и поперек, наверное, четверть сообщений форума об этом. Главное, что вы должны понимать, - зачем вам такая структура и как она должна эволюционировать. Роль такой структуры - накопление данных для набора значений характеристик. Как только вы получили такой набор, характеристика описывается традиционным образом. Ни о каких миллионах значений речь идти не может по определению. Но в данном случае это не основная проблема вашей базы данных. У вас не решена основная задача: идентификация продукта, нет системы альтернативного именования и не описаны критерии сравнения (просто аналогов не бывает, как вы понимаете, есть близость по некоторому критерию или их набору). Это всё понятно, но справочник уже создан, и работает лет 5, заново его делать никто не будет. Я , просто, хочу получить дельный совет относительно атрибутов , а именно оставить всё как есть или , всё таки, поменять структуру. Можно вообще абстрагироваться от аналогов, принять что их нет. Есть только группы товара, товар, атрибуты, значения разных типов. А ещё есть предложенная схема, на картинке в первом посте. Желательно получить ответ, что в ней не так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:16 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigez, забавная позиция, ничего менять не будем, но скажите что не так )))) зачем? Уже вроде объяснили, что тут надо нормальные человеческие атрибуты сделать, а не EAV. И что с аналогами никуда не годно. Что ещё указать-то надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:20 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
> Это всё понятно Вот как? Ну, тогда вам должно быть понятно и то, что вы задали глупый вопрос: способ идентификации и способ описания - это связанные задачи и решаются последовательно. Сначала - идентификация. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:26 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
Сергей Васкецовrodrigez, забавная позиция, ничего менять не будем, но скажите что не так )))) зачем? Уже вроде объяснили, что тут надо нормальные человеческие атрибуты сделать, а не EAV. И что с аналогами никуда не годно. Что ещё указать-то надо? А что есть в вашем понимании "НЕ EAV нормальные человеческие атрибуты", объясните пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:29 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezЭто означает что приведенную выше схему вы "одобрям" или всё таки "не одобрям"? Это значит, что приведённую выше схему не смотрел и мне пох. Используйте мозг вместо форума и будет вам счастье. Практика - критерий истины. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:35 |
|
||
|
Схема справочника товаров и атрибутов.
|
|||
|---|---|---|---|
|
#18+
rodrigezобъясните пожалуйста Зачем? 1. Это есть в ЛЮБОЙ книжке по проектированию структуры БД. 2. Это уже тут объяснялось. 3. Потому что "справочник уже создан, и работает лет 5, заново его делать никто не будет". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2012, 16:38 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37875014&tid=1541607]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
55ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
77ms |
get tp. blocked users: |
2ms |
| others: | 262ms |
| total: | 441ms |

| 0 / 0 |
