|
|
|
варианты спроектировать категории
|
|||
|---|---|---|---|
|
#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 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35418660&tid=1543759]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
168ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 476ms |

| 0 / 0 |
