|
|
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
добрый день. есть стандартная задача организации товаров в магазине. категория подкатегория продукт условия: 1. продукт может находится в одной или нескольких категориях 2. продукт может иметь либо не иметь подкатегорию сделал четыре таблицы с такой связью: 1 продукты --> productID categoryID subcategoryID 2 подкатегории --> subcategoryID categoryID 3 категории --> categoryID 4 продукты_категории --> productID categoryID // для связи многие комногим вопрос есть ли более правильные варианты спроектировать эту схему ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:09 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Почему один и тот же товар попадает в две подкатегории? С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:18 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Оба условия, имхо, вредные, постарайтесь избавиться от них. От второго избавиться легко - просто завести категорию "разное". PS. Вроде для курсовиков не сезон, но очень на таковой похоже... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:18 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
NafПочему один и тот же товар попадает в две подкатегории? С уважением, Naf странний вопрос к примеру фильм может быть и комедия и боевик ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:28 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoftОба условия, имхо, вредные, постарайтесь избавиться от них. От второго избавиться легко - просто завести категорию "разное". PS. Вроде для курсовиков не сезон, но очень на таковой похоже... клиент так хотел ps: я больше серверный програмер ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:33 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Потап_mmm miksoftОба условия, имхо, вредные, постарайтесь избавиться от них. От второго избавиться легко - просто завести категорию "разное". PS. Вроде для курсовиков не сезон, но очень на таковой похоже...клиент так хотелТогда сначала разберитесь, как будут действовать в таких условиях бизнес-правила, привязанные к категории товара. Например, как быть, если клиент захочет, чтобы одной категорией товаров занимался один менеджер, а другой категорией - другой менеджер? Как раскладывать разные категории по разным витринам? Как быть с тем, что сумма продаж по категориям не сходится с общей суммой продаж? Кстати, клиент уверен, что иерархии всего из двух уровней будет достаточно на много лет вперед? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:46 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
вот потому что я над этим задумался тут и написал а не от скуки miksoft Например, как быть, если клиент захочет, чтобы одной категорией товаров занимался один менеджер, а другой категорией - другой менеджер? в этом проблемы невижу, таблица менеджер_категория miksoft Как раскладывать разные категории по разным витринам? тоже самое ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 12:59 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Так как же их распределить, если он входит в две категории? оба менеджера его обслуживают? лежит в разных отделах? Конфликт получаем.. С уважением, Naf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 13:03 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Потап_mmmвот потому что я над этим задумался тут и написал а не от скукиТак это у клиента надо выяснять, а не у нас. Откуда мы знаем что у него и как? Потап_mmm miksoft Например, как быть, если клиент захочет, чтобы одной категорией товаров занимался один менеджер, а другой категорией - другой менеджер? в этом проблемы невижу, таблица менеджер_категорияЕсли один товар принадлежит сразу двум категориям, то кто должен им заниматься - менеджер первой категории или менеджер второй? или сразу оба? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 13:04 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoft Потап_mmmвот потому что я над этим задумался тут и написал а не от скукиТак это у клиента надо выяснять, а не у нас. Откуда мы знаем что у него и как? Потап_mmm miksoft Например, как быть, если клиент захочет, чтобы одной категорией товаров занимался один менеджер, а другой категорией - другой менеджер? в этом проблемы невижу, таблица менеджер_категорияЕсли один товар принадлежит сразу двум категориям, то кто должен им заниматься - менеджер первой категории или менеджер второй? или сразу оба? думаю сделать в продуктах одну категорию основной и связку через left join с таблицей продукты_категории ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 13:26 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
пример : разбиваем овощи на категории 1. капуста 2. свекла 3. огурцы 4. помидоры 5. картофель и т.д. и какая тут категория основная ??? не бывает основных категорий в базах данных (имхо) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 14:17 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
nosovне бывает основных категорий в базах данных (имхо)Категория основная вполне может быть. Например, руководство по ремонту автомобиля может иметь основной категорией "Литература", а дополнительной категорией "Товары для автолюбителей". Признак отношения категория-товар может храниться,например, в таблице-связке между категориями и товаром. Но в конкретном обсуждаемом случае, если уж возникло понятие "основная категория", возникает вопрос, а нужны ли неосновные категории? Какие бизнес-правила будут их учитывать и как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 14:23 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
1 категории --> Categories - categoryID, leftKey, rightKey (гуглим Nested Sets) 2 продукты --> Products - productID 3 продукты_категории --> productID categoryID Самая оптимальная нормализованная схема ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 14:51 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что требования сформулированны неточно. Подозреваю, что имелось в виду: "Продукт должен принадлежать одной или более категории, и, для каждой категории, которой он принадлежит , принадлежать нулю или одной её подкатегории". Во избежание костыльных переделок в будущем, советовал бы уточнить у заказчика требования :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2008, 22:33 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
nosovпример : разбиваем овощи на категории 1. капуста 2. свекла 3. огурцы 4. помидоры 5. картофель и т.д. и какая тут категория основная ??? не бывает основных категорий в базах данных (имхо) нельзя же косить все базы под одну схему ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:42 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
VinKS1 категории --> Categories - categoryID, leftKey, rightKey (гуглим Nested Sets) 2 продукты --> Products - productID 3 продукты_категории --> productID categoryID Самая оптимальная нормализованная схема деревья помоему несовсем то ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:43 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный БадаМне кажется, что требования сформулированны неточно. Подозреваю, что имелось в виду: "Продукт должен принадлежать одной или более категории, и, для каждой категории, которой он принадлежит , принадлежать нулю или одной её подкатегории". Во избежание костыльных переделок в будущем, советовал бы уточнить у заказчика требования :-) скажм так точнее, ещё схему предложите ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 10:44 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
автордеревья помоему несовсем то Да храните категории по какому угодно принципу, можно и в Adjacency List, суть от этого совершенно не поменяется ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 14:29 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Потап_mmmскажм так точнее, ещё схему предложите ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 18:50 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный Бада Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Это же потенциальное место возникновения противоречий, например, после переноса подкатегории в другую категорию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 18:56 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoftА зачем в таблице ProductCategory поле CategoryId? Это же потенциальное место возникновения противоречий, например, после переноса подкатегории в другую категорию. Потому что по задаче продукты и категории связаны как M-2-M. Противоречия не возникнет, т.к. внешний ключ FK_ProductCategory_SubCategory помешает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 20:28 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный БадаПротиворечия не возникнет, т.к. внешний ключ K_ProductCategory_SubCategory помешает.Как же он помешает? Пример: есть категории А и Б. есть подкатегории 1, 2, 3. подкатегории 1 и 2 входят в категорию А, подкатегория 3 входит в категорию Б. есть масса товара, привязанного к подкатегориям А1, А2, Б3. В какой-то момент подкатегорию 2 переносят из категории А в категорию Б. Товар как был привязан к А2, так и остался. Хотя это уже некоррекно. Т.е. у вас от товара до категории две связи - одна прямая, другая через подкатегорию. В какой-то момент эти две связи могут начать противоречить друг другу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 20:44 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoft Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 21:35 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный Бада miksoft Код: plaintext 1. 2. Но как тогда производить перенос подкатегории в другую категорию? Отложенные констрейнты умеют далеко не все СУБД. Можно, конечно, создать новую подкатегорию, перепривязать товар у ней, старую удалить... Но в реальных боевых условиях это может оказаться слишком дорогой операцией. Да и увеличение объемов данных из-за дублирования... Я бы таки предложил товар связывать только с подкатегорией. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 21:50 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoftНо как тогда производить перенос подкатегории в другую категорию? А зачем? Чтобы в категории "фильмы" появилась подкатегория "зимние ботинки", а в категории "шмотки" - подкатегория "комедии"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 22:18 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный Бада miksoftНо как тогда производить перенос подкатегории в другую категорию?А зачем? Чтобы в категории "фильмы" появилась подкатегория "зимние ботинки", а в категории "шмотки" - подкатегория "комедии"?Причин бывает масса... Ассоримент товаров вообще никогда не остается статичным, он постоянно меняется. Например была категория "Продукты", потом ассоримент сильно вырос, появилась категория "Растительная пища", подкатегории "фрукты", "овощи" переезжают в нее. Бывают и намного более серьезные перетряски, когда целые ветки иерархии категорий переезжают и перетасовываются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2008, 22:27 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoft Я бы таки предложил товар связывать только с подкатегорией. в итоге уломал заказчика на то что товар обязян иметь подкатегорию сделал связку через продукты_подкатегории вышло categories --> categoryID subcategories --> subcategoryID categoryID products --> productID subcategoryID products_subcategories --> productID subcategoryID (m2m) в этом варианте продукт может принадлежать нескольким категориям но через подкатегории так что покатит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 00:50 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Потап_mmmproducts --> productID subcategoryID products_subcategories --> productID subcategoryID (m2m)А зачем два раза одно и тоже? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 00:52 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Чорный Бада Потап_mmmскажм так точнее, ещё схему предложите ) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. наверно таки это самый правильный вариант, но решил не заморачиватся и сделал как сказал выше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 00:55 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
miksoft Потап_mmmproducts --> productID subcategoryID products_subcategories --> productID subcategoryID (m2m)А зачем два раза одно и тоже? сори в продуктах без под, очепятка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.07.2008, 00:56 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
Ужос то какой, задача первого класса решалась аж две страницы Категории делаются через дерево одной таблицей - ибо обязательно настанет день, когда надо будет добавить третий уровень Остальное вообще не имеет смысла обсуждать - товары на категории вяжутся без вариантов Но если это курсовик, то пофиг как ;) -- Tygra's -- Мои фотогалереи тут и тут ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.07.2008, 14:53 |
|
||
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#18+
tygraтовары на категории вяжутся без вариантов ну... вообще-то не стоит так категорично :) множества в категориях могут и пересекаться - смотря как разбиты категории в "заморозках", например, могут быть как "овощные смеси" так и "мясные полуфабрикаты" и что куда отнести (что будет группой что подгруппой) далеко не без вариантов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.07.2008, 10:52 |
|
||
|
|

start [/forum/topic.php?all=1&fid=32&tid=1543759]: |
0ms |
get settings: |
7ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
173ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
2ms |
| others: | 233ms |
| total: | 518ms |

| 0 / 0 |
