X-Original-To: pgsql-sql-postgresql.org@postgresql.org Received: from localhost (mx1.hub.org [200.46.208.251]) by postgresql.org (Postfix) with ESMTP id 8D8319FA4C5 for ; Mon, 24 Jul 2006 14:46:09 -0300 (ADT) Received: from postgresql.org ([200.46.204.71]) by localhost (mx1.hub.org [200.46.208.251]) (amavisd-new, port 10024) with ESMTP id 52337-05 for ; Mon, 24 Jul 2006 14:45:59 -0300 (ADT) X-Greylist: from auto-whitelisted by SQLgrey- Received: from wolff.to (wolff.to [66.93.197.194]) by postgresql.org (Postfix) with SMTP id 13CBA9FA502 for ; Mon, 24 Jul 2006 14:45:58 -0300 (ADT) Received: (qmail 29961 invoked by uid 500); 24 Jul 2006 17:51:48 -0000 Date: Mon, 24 Jul 2006 12:51:48 -0500 From: Bruno Wolff III To: Richard Jones Cc: pgsql-sql@postgresql.org Subject: Re: Referential integrity (foreign keys) across multiple tables Message-ID: <20060724175148.GA25994@wolff.to> Mail-Followup-To: Bruno Wolff III , Richard Jones , pgsql-sql@postgresql.org References: <20060722133257.GA9785@furbychan.cocan.org> <20060723183237.GA22586@wolff.to> <20060724085907.GA19981@furbychan.cocan.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20060724085907.GA19981@furbychan.cocan.org> User-Agent: Mutt/1.4.2.1i X-Virus-Scanned: Maia Mailguard 1.0.1 X-Spam-Status: No, hits=0.02 tagged_above=0 required=5 tests=AWL X-Spam-Level: X-Archive-Number: 200607/299 X-Sequence-Number: 25873 On Mon, Jul 24, 2006 at 09:59:07 +0100, Richard Jones wrote: > On Sun, Jul 23, 2006 at 01:32:37PM -0500, Bruno Wolff III wrote: > > On Sat, Jul 22, 2006 at 14:32:57 +0100, > > Richard Jones wrote: > > > > > > Now I want to add a column to page_contents, say called link_name, > > > which is going to reference the pages.url column for the particular > > > host that this page belongs to. > > > > What are you trying to accomplish by this? > > Data integrity. This doesn't make sense in isolation. If that is all you are trying to do, then you don't need to do anything to the database design as the information is already there. The application just needs to do a join when querying the data. > > The information is available by doing a join. If you are trying to > > simplify things for applications, you can probably do it with a view > > or rules depending on whether you want to have an updatable view. If > > you are denormalizing for performance and want constraints to > > maintain consistancy, then you probably want to push the hostid down > > to page_contents as well as the url. These could both be set with a > > trigger. (I think a rule could be used as well.) > > So if I get this right, I should use a trigger to ensure that the old > code causes the hostid field to be set in page_contents? No unless you are trying to do something else in addition to maintaining data integrity.