powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Общие соображения по иерархическим структурам
5 сообщений из 5, страница 1 из 1
Общие соображения по иерархическим структурам
    #35133456
Son_of_Morning
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
(вот мысль возникшая в результате решения одного конкретного вопроса, хотел бы обозначить ОБЛАСТЬ РАЗУМНОГО применения)
Иерархические структуры могут быть описаны 2-я способами:
1. через одну таблицу

Код: plaintext
1.
2.
3.
4.
5.
CREATE TABLE Inner_Connected_Objects (
  ID integer NOT NULL,
  ParentID integer,
..... data........
  primary key (ID),
  foreign key (ParentID) references (ID));

2. через 2 таблицы

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
CREATE TABLE Objects (
  ID integer,
........ data.............
  primary key(ID));

CREATE TABLE connections (
  ParentID integer NOT NULL,
  ChildID integer UNIQUE NOT NULL,
  primary key (ParentID, ChildID),
  foreign key (ParentID) references Objects(ID),
  foreign key (ChildID) references Objects(ID));

видно, что это НЕ кросс-табл (т.к. ChildID - уникален) имеем то же дерево в виде 2-х таблиц. изначально хотел применить для слабо подчиненной структуры (кол-во связей = 10% кол-во объектов), но видел на форуме (этом, к сожалению где - не помню), что self-join работает весьма медленно, так вот имеет ли это смысл в менее экзотическом случае?
...
Рейтинг: 0 / 0
Общие соображения по иерархическим структурам
    #35134351
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Son_of_MorningИерархические структуры могут быть описаны 2-я способами:Да больше, больше...
...
Рейтинг: 0 / 0
Общие соображения по иерархическим структурам
    #35137212
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем второй случай лучше первого? Ну одно поле вынесли в отдельную
таблицу, и что?
Другое дело, если childId не уникальный, тогда элементы и группы относятся
как многие-ко-многим, тогда появляется необходимость в отдельной табле.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Общие соображения по иерархическим структурам
    #35138014
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leshij
Другое дело, если childId не уникальный, тогда элементы и группы относятся
как многие-ко-многим, тогда появляется необходимость в отдельной табле.


Тогда это не дерево, а сеть.

А множить сущности без необходимости не следует. (c) Оккам.

Две таблицы вместо одной, это необходимость лишнего соединения и операций чтения данных.

Другое дело, когда объекты допускают множественную иерархическую классификацию, например, если каждый пользователь может завести собственный каталог для бысрого доступа к общим данным, тогда конечно такой каталог придётся вынести в отдельную таблицу.
...
Рейтинг: 0 / 0
Общие соображения по иерархическим структурам
    #35138066
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mcureenabТогда это не дерево, а сеть.

вообще - дерево это частный случай сети (полного графа)
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Общие соображения по иерархическим структурам
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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