There are multiple strategies for storing a tree in a relational database. Each results in some operations being much easier on the database than others. Which one you'll want to do depends strongly on what you'll be doing with the data.
In particular the "nested set-trees" implementation makes insertions expensive, but reads cheap. The naive "each child points at its parent" implementation makes insertions cheap, but reads expensive. Unless you have a database with extensions specifically for this job (I think that Oracle introduced that in 9i), you'll probably have to do some mix of procedural and relational logic to access the data.
Cheers,
Ben