Как структурировать модель, чтобы правильно и эффективно представлять данные, подобные деревьям, в реляционных базах данных?

dba.stackexchange https://dba.stackexchange.com/questions/62

Вопрос

На основе Переселение данных, подобных деревьям, в реляционной базе данных с использованием SQL Вопрос, я хотел бы знать, как регулярно используется путь для описания деревьев данных в реляционных базах данных с учетом физических последствий?

Я предполагаю, что RDBMS не имеет специальных функций для обработки этих, кроме обычного SQL ANSI или общих доступных функций.

Всего я всегда заинтересован в MySQL и PostgreSQL и, в конце концов, SQLite.

Это было полезно?

Решение

Я считаю, что он идет на что -то вроде бинарного дерева. Я бы просто включил три клавиши, которые привязаны к уникальному идентификатору той же стола, один для левого, один для правого ребенка и один для родителя.

т.е. (очень псевдокод)

TABLE tree
int         id                  autoinc
varchar(16) data_you_care_about
int         parent_id
int         left_child_id
int         right_child_id

FOREIGN KEY parent_id = tree.id
FOREIGN KEY left_child_id = tree.id
FOREIGN KEY right_child_id = tree.id

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с dba.stackexchange
scroll top