Received: from localhost (maia-1.hub.org [200.46.204.191]) by postgresql.org (Postfix) with ESMTP id DBAA19FA22F for ; Tue, 28 Aug 2007 11:38:01 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.204.191]) (amavisd-maia, port 10024) with ESMTP id 96392-01-10 for ; Tue, 28 Aug 2007 11:37:50 -0300 (ADT) X-Greylist: domain auto-whitelisted by SQLgrey-1.7.5 Received: from nz-out-0506.google.com (nz-out-0506.google.com [64.233.162.225]) by postgresql.org (Postfix) with ESMTP id AC0319FA2E1 for ; Tue, 28 Aug 2007 11:37:43 -0300 (ADT) Received: by nz-out-0506.google.com with SMTP id l8so1236527nzf for ; Tue, 28 Aug 2007 07:37:42 -0700 (PDT) DKIM-Signature: a=rsa-sha1; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=YPjZWwtlYcgsZbTC6z2AIokfzArJfXpTGaxQWdZYnDUnG1dR65aC4CQivOf4lO4jYsTf3Znd60Z7i0iTiZBZC1ABpABq074o1Ch1ucROwt/Rx0MRvPRmcXvFmVY5sa/PExayigFKscLjaNIraMkzH9QMlvX2/iWuioQOjPbSKwI= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:to:subject:cc:in-reply-to:mime-version:content-type:references; b=qF1jZg0mqigM7cSvhT/GZKV7FHLsgkOTt3BBc6dAnnHvDsP70VtdrwfqA5X3+rEb5KCPNYGXrm7UFUQuK8TVc4rsBaI2ksOLkieVwPt7u0lncimGYLuKOvsrYnUVAVhGnMh0NfAVbFMhwsWGYLYnng9zd5uZcBdKkRyclzOAGzQ= Received: by 10.140.186.18 with SMTP id j18mr459660rvf.1188311842848; Tue, 28 Aug 2007 07:37:22 -0700 (PDT) Received: by 10.141.40.8 with HTTP; Tue, 28 Aug 2007 07:37:22 -0700 (PDT) Message-ID: <99b656cb0708280737l3d50585fifcfef7103b26059b@mail.gmail.com> Date: Tue, 28 Aug 2007 15:37:22 +0100 From: "Sebastian Ritter" To: "Andrew Sullivan" Subject: Re: Database normalization Cc: pgsql-sql@postgresql.org In-Reply-To: <20070828132604.GB461@phlogiston.dyndns.org> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="----=_Part_29246_19780645.1188311842808" References: <99b656cb0708210709j5182b73cna63a2d275efa0e84@mail.gmail.com> <99b656cb0708280447x4eb7c45axec01c8d0ebc6c82d@mail.gmail.com> <20070828132604.GB461@phlogiston.dyndns.org> X-Virus-Scanned: Maia Mailguard 1.0.1 X-Archive-Number: 200708/239 X-Sequence-Number: 29177 ------=_Part_29246_19780645.1188311842808 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Thanks for the information. Both tables would be exactly sames apart from the foreign key relation to clients or services. I agree that it seems strange to have one column that is always null. Im using Django as my Object relational Mapper so im pretty sure I can not add a constraint such as : CHECK constraint where !(col1 IS NULL and col2 IS NULL). Another factor ive been considering is that one of the fields in this table(s) definition(s) is free flowing text which could potentially become very large. Should I take this in to consideration when deciding whether to split the tables? In terms of searching speed that is. Kindest regards. Sebastian On 8/28/07, Andrew Sullivan wrote: > > On Tue, Aug 28, 2007 at 12:47:45PM +0100, Sebastian Ritter wrote: > > > The update/message format is exactly the same for both. Should I make > two > > > different tables: > > > > one table with extra columns : is_client, client_id, service_id, > where > > > either client_id or service_id would be null depending on the > is_client > > > boolean? > > Is the rest of the data the same? If so, then one table is right. > If not, then more than one table. In either case, I really hate the > idea of two columns, one of which is always null. But if you're > going to do that, make sure you add a CHECK constraint where !(col1 > IS NULL and col2 IS NULL). > > A > > -- > Andrew Sullivan | ajs@crankycanuck.ca > I remember when computers were frustrating because they *did* exactly what > you told them to. That actually seems sort of quaint now. > --J.D. Baldwin > > ---------------------------(end of broadcast)--------------------------- > TIP 3: Have you checked our extensive FAQ? > > http://www.postgresql.org/docs/faq > ------=_Part_29246_19780645.1188311842808 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Thanks for the information.

Both tables would be exactly sames apart from the  foreign key relation to clients or services. I agree that it seems strange to have one column that is always null. Im using Django as my Object relational Mapper so im pretty sure I can not add a constraint such as : CHECK constraint where !(col1
IS NULL and col2 IS NULL).

Another factor ive been considering is that one of the fields in this table(s) definition(s) is free flowing text which could potentially become very large. Should I take this in to
consideration when deciding whether to split the tables? In terms of searching speed that is.

Kindest regards.
Sebastian

On 8/28/07, Andrew Sullivan <ajs@crankycanuck.ca> wrote:
On Tue, Aug 28, 2007 at 12:47:45PM +0100, Sebastian Ritter wrote:
> > The update/message format is exactly the same for both. Should I make two
> > different tables:

> >   one table with extra columns : is_client, client_id, service_id, where
> > either client_id or service_id would be null depending on the is_client
> > boolean?

Is the rest of the data the same?  If so, then one table is right.
If not, then more than one table.  In either case, I really hate the
idea of two columns, one of which is always null.  But if you're
going to do that, make sure you add a CHECK constraint where !(col1
IS NULL and col2 IS NULL).

A

--
Andrew Sullivan  | ajs@crankycanuck.ca
I remember when computers were frustrating because they *did* exactly what
you told them to.  That actually seems sort of quaint now.
                --J.D. Baldwin

---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

------=_Part_29246_19780645.1188311842808--