martinfowler.com logo Home Blog Articles Books About Me Contact Me ThoughtWorks

RelationalDataModel design Reactions

The relational data model is best known to most people through relational data bases, and through the SQL language. Colloquially, we think of the database as a set of tables, each row of which contains data. We can manipulate these tables in various ways to do queries, each query results in another table. In contrast to NetworkDataModel, there are no explicit pointers between tables, links are made by join tables on common values (although the use of surrogate keys means you have pointers in practice.)

The relational model has become the primary model for databases these days, primarily due to the common standard of SQL. It's worth pointing out that many relational fans consider SQL to be be a weak form of the relational model.

You can think of relational models as network models with foreign key references as pointers. However I think this misses a vital point. The record types in network data models are seen as different things, but all relations in a relational model are seen as essentially the same thing. Expressions in SQL operate on relations and produce relations - which gives the relational model a quality of composability that network models typically don't have.


Links
home
bliki
feed 
Translations
Japanese
Spanish
Korean
Chinese
Thai
Categories
agile
design
dsl
leisure
refactoring
ruby
thoughtWorks
tools
uml
writing
Blog Roll
ThoughtBlogs
TW Alumni
Nicholas Carr
Steve Cook
Brian Foote
Simon Harris
Gregor Hohpe
/\ndy Hunt
Ralph Johnson
Patrick Logan
David Ing
Brian Marick
Jeremy Miller
Jimmy Nilsson
Samuel Pepys
Keith Ray
Johanna Rothman
Kathy Sierra
Dave Thomas

martinfowler.com logo mingle logo thoughtworks logo

© Copyright Martin Fowler, all rights reserved