Sure, I'd do it, it looks pretty much good to go. (The only thing I'd do is create a cat_id sequence and make this the default value for the cat table, instead of something like serial... that's just me though).
I'd select links that belong to a category. Say on your main page, you run a query :
SELECT c.cat_id,c.name,
l.id,l.name as title,l.url
FROM cat c, link l
WHERE c.cat_id = $cat_id
AND l.cat_id = c.cat_id
ORDER BY c.name
(NOTE: I'd add a description field to the LINK table, that way you could show a page with the description and an option to visit, or to drill further down the cat tree)
You can stick this into an array, which will basically give you a category and all the links associated it with it. When a person clicks any of these links you'll not only be able to retrive the link information for display (read above note) but also all of the links/categories associated with this link's cat_id.
- No, cat_id should be the P/K in the cat table. I'd put a unique index on cat_id,parent_id as well.
Good Luck, if you get it online lemme know.