powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / древовидная структура
13 сообщений из 13, страница 1 из 1
древовидная структура
    #35502462
ineedhelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
добрый день.
есть список категорий(категории, подкатегории). например:
Продукты
-мясные
--колбасы
--котлеты
--...
-овощи
--помидоры
---спелые
---не очень спелые
----дорогие
Каждая категория может содержать любое количество подкатегорий.
Так же есть товары, которые относятся только к 1 категории(могут к самой верхней, могут к самой нижней).
Нужно создать программу которая будет строить дерево с помощью элемента treeView. но как построить - не проблема. Нужно хранить данные так, чтобы было легко выбирать с любого уровня:например: "все помидоры". Кроме того, нужно реализовать добавление категории и при этом не переписывать код запросов.


Моя версия такова:делаем список категорий вида: id; name. в каждом товаре прописываам catid(ид категории). в еще одну таблицу добавляем пары вида: parent;child (ближайший корень и непосредственный наследник). Но теперь остаеца вопрос как сделать простые запросы для выбора больших категорий(не листовых)?

Модератор: Проблема не относится к С++ никак, поэтому переносим в "проектирование БД".
...
Рейтинг: 0 / 0
древовидная структура
    #35502545
zloyGamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот моя версия:
3 таблицы:
1)категории
id_cat
name

2)товар:
id_tovar
name

3)соответствия категории товарам(или наоборот):
id_cat
id_tovar

так и запросы строить легче и данные искать ...
например нужно узнать как там с помидорами, а потом подробнее как у них со спелыми :)
ну как вариант?
...
Рейтинг: 0 / 0
древовидная структура
    #35502549
zloyGamer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а тьфу блин не товар а продукты
...
Рейтинг: 0 / 0
древовидная структура
    #35502836
ineedhelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как тогда строить дерево?
опять же нужна таблица соотношения категорий.
и как по ней выбирать большие группы, без большого кол-ва запросов?
...
Рейтинг: 0 / 0
древовидная структура
    #35502844
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лучше так:

Categoryidparent_idnametype_id

Typeidname
...
Рейтинг: 0 / 0
древовидная структура
    #35502995
ineedhelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
спасибо за перенос, на самом деле подразумевалось написание на с++ поэтому и постил туда

mayton , а как тогда строить дерево категорий? и как выполнить выбор "Больших" категорий(ближних к корню)
...
Рейтинг: 0 / 0
древовидная структура
    #35503230
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лес деревьев, товары - листья в этом лесу.
Одна таблица :
ID
Parent_ID
Name

Это на тот случай если надо часто удалять/добавлять категории, т.е. менять структуру леса.

Если же нужно часто и быстро делать делать выборки поддеревьев то для этого есть другие реализации с явным хранением уровня вложенности и/или полного пути к категории/товару.
...
Рейтинг: 0 / 0
древовидная структура
    #35503280
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ineedhelp mayton , а как тогда строить дерево категорий? и как выполнить выбор "Больших" категорий(ближних к корню)

Вы хотите, чтобы я вам сейчас написал запрос?
...
Рейтинг: 0 / 0
древовидная структура
    #35503571
ineedhelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alexmspЛес деревьев, товары - листья в этом лесу.
Одна таблица :
ID
Parent_ID
Name

Это на тот случай если надо часто удалять/добавлять категории, т.е. менять структуру леса.

Если же нужно часто и быстро делать делать выборки поддеревьев то для этого есть другие реализации с явным хранением уровня вложенности и/или полного пути к категории/товару.

у меня предполагается редкое изменение структуры деревьев, и частое выборка/изменения товаров(листьев)

maytonВы хотите, чтобы я вам сейчас написал запрос?
если не затруднит
...
Рейтинг: 0 / 0
древовидная структура
    #35503575
ineedhelp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
type_id

и что такое это поле значит?
...
Рейтинг: 0 / 0
древовидная структура
    #35503605
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ineedhelp maytonВы хотите, чтобы я вам сейчас написал запрос?
если не затруднит
Я предложил идею. И предоставляю её тебе рассмотреть со всех сторон. На мой взгляд модель из двух таблиц самодостаточна и нормализована ровно настолько, насколько нужно.

А учить тебя писать иерархические запросы я не буду.

Всего.
...
Рейтинг: 0 / 0
древовидная структура
    #35505095
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО разбивать на 2 таблицы есть смысл если один и тот же товар или категория может содержаться сразу в нескольких вышестоящих категориях.
Элементы иерархии
ID
Name
IsCategory (True если категория, False если товар)

Соотношения между элементами
ID
IsLeaf (листок если True)
Path (путь доступа)
или
ID
Parent_ID
...
Рейтинг: 0 / 0
древовидная структура
    #35505098
Фотография alexmsp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IsCategory лишнее, теоретически в одном случае это может быть товар, в другом категория.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / древовидная структура
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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