Umm ... creating doubly-linked lists in databases should be avoided at (almost) all costs. It violates the DRY principle of normalization. That's "Bad"(tm). This looks like a really bad direct translation of a procedural data structure into a relational model. Don't do that.
Trees are generally represented in one of two fashions in a database, each with its benefits/drawbacks. The first is the way you're doing it - a table that has data, an id, and a parent_id. To find all children, you ask SELECT id FROM table WHERE parent_id = ?. If you need ordering (such as a binary tree), add in an order column. This is a really good fashion for mutations, but it sucks for queries, unless you're on Oracle or Postgres and have the CONNECT BY extension (and even then it still sucks).
The other method (nested sets) is a bit harder to explain. Take a look at http://dev.mysql.com/tech-resources/articles/hierarchical-data.html for a good article on the topic. Less efficient on mutations, but much more efficient in terms of queries, including traversals.
My criteria for good software:
- Does it work?
- Can someone else come in, make a change, and be reasonably certain no bugs were introduced?
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.