You are here: Re: Recursive SQL Command Help « PHP SQL « IT news, forums, messages
Re: Recursive SQL Command Help

Posted by Hilarion on 10/13/82 11:25

>>> Hilarion I am looking at your current suggestion. I am using
>>> phpMyAdmin to interface with my database currently, its a MySql engine.
>>
>>
>>
>> On MySQL InnoDB tables (only!) you can use FOREIGN KEY with ON DELETE
>> CASCADE
>> (from version 3.23.50). To create this constraint you are required to
>> create
>> indexes on the referenced fields (separate index for "Parent" and separate
>> index for "SectionID"). In versions 4.1.2 (and newer) the index on
>> referencing
>> column ("Parent") will be created automatically (if it does not exist).
>>
>
> Wouldn't it be easier to create a better database design? Now its the deletion the next
> thing is the question of the whole hierarchy with one query. The OPs kind of table
> structure is straight forward in programming but not in a relational model where you're
> querying for tupels without knowing others at the same time like compare to previous
> tupel. It is clear that the OP could write a program to do all the necessary calls to get
> the whole hierarchy from the table but that is not very clever. E.g. imagine a tree like
> hierarchy with 3 levels and 3 child nodes on every node.
>
> root
> node node node
> node node node node node node node node node
>
> This way you have to query for the first 3 nodes, then you have to query for the next
> nodes for each of the found nodes. Makes 4 queries for such a little tree. Imagine a tree
> with 5 childnodes per node and 5 levels in depth. And now imagine this tree is a menu
> structure on a webpage with 5 users per second. makes 20 queries per second for the
> example above. And 5 is not much and the tree is very small.
>
> So I suggest another table design. OP have a look at nested sets.


You may be right, but id depends on the case. If the level of hierarchy is undefined
(can be any level) and all tree nodes are of same structure, then implementing
it differently is imposible without using some non-standard nested tables or
something like that (I do not know what nested sets are but if you are talking
about using fields storing sets of parent and/or child node identifires, then it
doesn't make things any easier or clearer). The solution which Anon uses is quite clear
in those cases and I do not think that complications with querying the data are so much
pain. Some SQL engines provide ways to do hierarchical queries (like mentioned DB2
or Oracle) making use of such structures easier.

I may be wrong of course, so if I am, then please, give some examples of better
database representation of a tree structure with no level limits (something
like folder structure) and some explanation why this representation is better
that using parent reference in single table.


Hilarion

PS.: I'm not sure what does Anon use his structure for. If it's limited level
hierarchy, then maybe he should consider changing his database design,
but I would not assume that he should not knowing what it's going
to be used for.

 

Navigation:

[Reply to this message]


Удаленная работа для программистов  •  Как заработать на Google AdSense  •  England, UK  •  статьи на английском  •  PHP MySQL CMS Apache Oscommerce  •  Online Business Knowledge Base  •  DVD MP3 AVI MP4 players codecs conversion help
Home  •  Search  •  Site Map  •  Set as Homepage  •  Add to Favourites

Copyright © 2005-2006 Powered by Custom PHP Programming

Сайт изготовлен в Студии Валентина Петручека
изготовление и поддержка веб-сайтов, разработка программного обеспечения, поисковая оптимизация