Стратегии СУРБД для хранения иерархических списков?запрашивать / выводить их? - PullRequest
0 голосов
/ 09 августа 2010

Я бы хотел сохранить значительную часть текстовых данных со следующей структурой:

1. Overall Text A
  1.1 Subsection Text
       1.1.1 Clarification A
       1.1.2 Clarification B
  1.2 Another Subsection
       1.2.1 Don't forget A
       1.2.2 Don't forget B
       1.2.3 or C!
2. Overall Text B
  2.1 getting the idea yet?

Уровни сечения будут варьироваться от 1 (плоские) до 4, хотя абсолютного максимума нет.Каждый элемент должен содержать по крайней мере один абзац текста.И важно сохранить схему нумерации.

Я использую MySQL и PHP для сайта, и это касается раздела, который я хотел бы добавить.Как лучше всего хранить эти данные и отношения в СУБД, а затем как снова их вывести и логически отобразить с помощью PHP?

Ответы [ 2 ]

1 голос
/ 09 августа 2010

Вложенный набор поможет вам эффективно хранить иерархические данные. Тем не менее, это может быть чем-то вроде боли работать с. В большинстве случаев, с простыми структурами, он ведет себя хорошо и эффективно, хотя!

Пример MySQL: http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/

Я сам использовал этот метод в нескольких проектах, и, кроме некоторых головных болей при поиске пути, у меня нет жалоб. :)

1 голос
/ 09 августа 2010

Создать структуру базы данных, которая представляет иерархию, просто:

 CREATE TABLE nodes (
    node_id int NOT NULL,
    parent_node_id int,
    node_data varchar(100),
    PRIMARY KEY node_id);

Но поддерживать систему нумерации немного сложнее - однако CSS может сделать это за вас.

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

Вы также можете найти phplm полезным.

...