Relational Is Too Absolute

Some RelationalWeenies say that Relational is better that ObjectOriented because ObjectOriented sees things only form a particular hierarchical perspective, and Relational sees things from an AbsoluteRelationalPointOfView? but I think that is precisely the problem with Relational, when I want to build I system may want to create a model that works from any perspective, but the truth is, that in this imperfect world, i will only be able to build a model from a particular perspective therefore RelationalIsTooAbsolute, and ObjectOriented brings the necessary particular point of view. Relational is Absolute, but things, in this world are Relative.

I don't know what you mean by "Relational is Absolute".

I think Relational is Absoulte because it gives too much freedom to the developer, I believe OOP makes it easier to create a kind of language that describes the solution you are trying to build, with relational you have too much freedom,yes, it is nice that you can make a join with any field(s) you like in any way you like, but in my experience that makes a lot of programmers create databases without caring too much about the initial datamodel... maybe the problem is not that RelationalIsTooAbsolute, but that RelationalIsTooPowerful, since you can join anything with anything, and you can pretty much take a mess of a database and get a dysfunctional model that can be twisted until it seems to be a functional thing(but a nightmare to maintain). OOP and Hierarchical might be more rigid, but they have the advantage that they create a kind of structure that forces you to be more careful when designing you model.

Relational makes it just too easy to create a thing that looks so distant for you DomainModel and that can be reshaped so much, that a lot of times end up being really hard to map to the real world that it supposedly represents. In OOP you might be somewhat forced to fetch a "complete" shopping cart item object to deal with them, but that also makes it easier to understand that the code handles shopping cart items if you read it six months later and you weren't the original programmer, in relational you can just "load a bunch of integers that are the primary keys of the car items" and deal with them as if they were a meaningless list of numbers, and that just makes it really harder to re-read the code six months later.

I feel that Relational just make it too easy to deal with stuff as if you were dealing with putty, that is why if feel it is to Absolute, it just sees everything from a kind of universal point of view and makes it too easy to forget about its original structure, its structure as if it were seen from a particular perspective... mmmmm... I am starting to think that maybe I should have said RelationalAbstractsYouAwayFromTheDomainModel?

The RelationalModel and ObjectOriented programming are complementary, not contradictory. ObjectOriented programming provides an effective means of defining types and structuring code. Implementing the RelationalModel within an ObjectOriented environment provides an expressive, composable means for dynamically manipulating collections of object instances, and can be a powerful enhancement to the collection and container classes that most ObjectOriented systems provide by default. This has nothing to do with either model imposing a "particular point of view," any more than (say) numeric algebra imposes a particular "point of view" on calculations. The RelationalModel and ObjectOriented programming are tools to be leveraged, rather than viewpoints to be embraced or rejected.

-- DaveVoorhis

--top

I meant (and wrote) complementary, not complimentary. As for, "I do not find typing very practical," that made me laugh out loud. See my comment above re "... consider studying ComputerScience." Please. Do. -- DaveVoorhis

English needs a refactoring. As far as ComputerScience, has it objectively proved that "types are better"? I don't think so. While ComputerScience has proven very useful for performance-related issues, it has utterly failed to objectively select among competing paradigms and design techniques (unless you decide to focus on very narrow criteria). --top

[Well, who uses untyped languages? Machine code? Computer science has empirically (statistically) proven that types are better, since the popular languages in use today have type systems! Although the languages of today do not have as rich or complete type systems as we would like, they are still type systems. Are you seriously advocating something like machine code or something more untyped? Even the C language has a typedef system, and even languages like PHP have types (although they try to hide this fact and brush it under the rug, which is a bizarre thing indeed.. I don't know why they do that. Maybe TypesAreTooHard or EducationIsFailing?. I don't even think TypesAreTooHard because even kindergarten students can distinguish between different TYPES of FRUIT in the fruit bowl. You don't even need to be a programmer to understand the advantages of different TYPES.). ]

Statisically proven better? Bullshit! Link it.


At times I find the relational model too "boxy". For example: try making this C2 wiki markup relational instead of markup. Each WikiCase link, period, dot, quote, etc could be potentially modeled into the database. Orphaned link problem could be solved, when someone deletes a page. However, it can be hard to design human oriented systems such as this wiki markup, into perfectly boxy databases. Article oriented discussions seem to be less boxy and square, and more free form. Although, I've had thoughts about a relational model to solve the WikiCase link orphan problem.

Too... Boxy? Huh? Many Wikis are implemented using SQL databases, including MediaWiki, the software that runs WikiPedia. -- DV

The orphaned links are not fixed.. that is just storing each page in a cell. I have audited the Wikipedia source code and it is horrible. If you store each page in a cell you are essentially creating a spreadsheet. The wikipedia database is not a real database.. it uses spreadsheet style MYIsam tables. True relational design.. is harder to implement.. so that orphaned links in the actual text content, are relational (maybe the markup is even converted to some relvar (table)). Designing each page in a relational way is tough. FYI I run a wikipedia database of my own and I am not impressed with their parsing code either.. bunch of spaghetti code.

Admittedly, the MediaWiki source is anything but a model of perfection. However, modeling a Wiki in a relational database is trivial. Modeling it in a SQL database is only slightly less trivial. -- DV Some RDBMS have automatic orphan removal (I cannot think of the proper name for it right now), and one can create triggers if it does not. But I'm not sure such is good for a wiki as far as a feature anyhow. --top Are you thinking of cascading deletes? -- DV

Yeah, that's it. Thanks. I'm a visual thinker and sometimes cannot turn pictures into words. (I come from a family of professional artists.) --top


MarchZeroEight See also: RelationalWithSideEffects

EditText of this page (last edited February 6, 2012) or FindPage with title or text search