Re: DB design advice: lots of small tables?

From: François Beausoleil <francois(at)teksol(dot)info>
To: lender <crlender(at)gmail(dot)com>
Cc: pgsql-general(at)postgresql(dot)org
Subject: Re: DB design advice: lots of small tables?
Date: 2013-03-15 15:03:14
Message-ID: AB5EFC32-9944-4215-B506-2EBC502C1324@teksol.info
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general


Le 2013-03-15 à 09:58, Thomas Kellerer a écrit :

> Kevin Grittner, 15.03.2013 14:36:
>> <soapbox-rant>
>> I occasionally hear someone maintaining that having a meaningless
>> sequential ID column as the primary key of each table is required
>> by the relational model. At those moments I swear I can actually
>> hear E.F. Codd turning in his grave. It was a requirement of old
>> pre-relational databases from the 60's and 70's, and some equally
>> primitive ORMs still like to have one, but a big point of
>> relational databases is that you don't need to navigate artificial
>> linkages between tables -- the relationship can generally be
>> determined by the fact that they contain common data elements. If
>> these are natural, meaningful values which are visible to the user
>> it often allows complex queries to be much better optimized, since
>> they aren't forced through a single navigational linkage.
>> </soapbox-rant>
>
> You might be interested in a discussion regarding this topic on comp.databases.theory:
>
> https://groups.google.com/forum/?fromgroups=#!topic/comp.databases.theory/mqZZw3ojnjA

Along those lines, I love what Kenneth Downs says on his blog, The Database Programmer. Start at http://database-programmer.blogspot.ca/2010/11/database-skills.html and look for "Understanding Primary Keys, Foreign Keys and Constraints".

Ken suggests having a data dictionary and generating the schema from the dictionary. He has a PHP tool, being rewritten but with very slow progress.

Keeping a meaningless ID is not a problem in and of itself. It makes it easier to edit records from the UI, since you can reference the ID in the UPDATE and DELETE statements, without fear of colliding with anything else. It's not so much a problem on small lookup tables, but on larger entities (people, companies, etc), referencing through the ID is much, much easier.

Hope that helps!
François Beausoleil

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Kirk Wythers 2013-03-15 16:08:01 Re: big un stacking query - help save me from myself
Previous Message Adrian Klaver 2013-03-15 14:05:11 Re: C++Builder6 enum