Re: How to represent a tree-structure in a relational database
От | Josh Berkus |
---|---|
Тема | Re: How to represent a tree-structure in a relational database |
Дата | |
Msg-id | 3A38192F.EDC76961@agliodbs.com обсуждение исходный текст |
Ответ на | RE: How to represent a tree-structure in a relational database ("Stuart Statman" <stu@slammedia.com>) |
Ответы |
Re: How to represent a tree-structure in a relational database
RE: How to represent a tree-structure in a relational database Re: How to represent a tree-structure in a relational database |
Список | pgsql-sql |
Stuart, > I don't think I'd be comfortable with having the node_level column in the > table structure. First, because you can derive that value using a function, > it's duplicate data. Second, if you decide to take an entire segment of your > hierarchy and move it under another node (by changing the value of > node_linkup/ParentCategoryID), you'll need to recalculate all of those > node_level values. And all the node_level values underneath it. I can see that. I suppose it depends on the data you're storing. The project I was working on tracked grocery inventory for a delivery service, and thus each item had a fixed "level" in the heirarcy (Food Class, Food Type, Manufacturer, and Item) and thus while items might get reassigned *across* the heirarcy, they did not get re-assigned *up and down* the heirarcy. Also, I can't think of a way to represent the tree in pure SQL without having the level identifiers (and a fixed number of levels). > We've done a similar thing for Java. It was ridiculously easy to create a > TreeModel wrapped around this data. Almost too easy; it made me feel dirty. Great. Maybe I'll buy it from you if I ever need to use Java :-) -Josh -- ______AGLIO DATABASE SOLUTIONS___________________________ Josh Berkus Complete informationtechnology josh@agliodbs.com and data management solutions (415) 436-9166 for law firms, small businesses fax 436-0137 and non-profit organizations. pager 338-4078 San Francisco
В списке pgsql-sql по дате отправления: