In relational you can just completely reshape you model too easily, so, a lot of people just don't try enough to make it right, they just throw whatever they come up with, and twist it until they make to somewhat work.
I have met a lot of people that say: It just doesn't matter if it not normalized, (for example if a OneToMany? relationship is represented as comma separated values in a field) I can always fix it by creating a view on top of it. Relational gives you the ultimate flexibility to reshape your model, but that is a double edged sword, because it makes people careless.
Yes, in hierarchical you had to define each of your relationships and it was harder than in relational if you realized you needed a new kind of relationship (a new join) but in relational you have to deal with this shared values that make it easier to redefine joins, but also lower the level of abstraction and you loose the ability to just say: I want all the customers of that store "store.getCustomers()" you have to say: I want all the customer rows that have a store number 5 "select * from customer where customer.storenumber = 5" and, if, after time passes, it turns out you need more data to identify a store, you need to add that information to you customer: "select * from customer where customer.storenumber = 5 and customer.citycode = NY" but, if you are working with OOP/Hierarchical you just don't care, you just redefine the relationship and use "store.getCustomers()" again.
Of course, this could be less problematic, if, for example, one could somewhat use integrity relation names as shortcuts for relationships in joins, and "abstract away" the particularities of the relationship... but that is not possible in any of the current relational databases... why is that?
I can see relational being used at the paragraph (ParagraphWiki) and perhaps even sentence level. But I agree that things like formulas and linguistic statements are not readily tablizable, at least not in a form that most humans are comfortable with. Internally they could be, but not at the presentation and input side.
There are also many cases when something like a spreadsheet (excel) is just good enough for what you are doing. Imagine doing a quick accounting calculation with SQL (or TutorialDee).. versus the Excel program. Excel is not relational but ItJustWorks.. for some tasks. Really it becomes about scalability of the data. Excel is better for OneOffs?, but not for long term scalable solutions. On the other hand, a perfect relational model has a big up front cost: you have to spend a lot of time getting it right. 'HumansDoNotHaveTime. Humans are busy busy people. I say this as an XML hater myself.. too. I'm not advocating we not use relational models.. but sometimes, they just will not fit our minds when we need convenient solutions to get her going. Humans are very convenience based.. and we have not such good attention spans. The relational model requires a high attention span and careful meticulous calculations and thinking.. which you may not even ever get right even after sitting there for 8 hours.
Quick-and-dirty and one-off things often work fine without being normalized. Its when scaling and sharing come into play that it starts to matter. Graphs and trees are indeed convenient and easy to grok on a smaller scale or scope. --top
RelationalIsTooPowerful - good. Feed me raw power.