[lug] Q. on SQL Foreign Keys (PostgreSQL)
Bear Giles
bgiles at coyotesong.com
Mon Sep 4 13:07:57 MDT 2017
Why would this surprise you?
A classroom is example is
create table employee (
employee_id int primary key,
boss int references employee(employee_id),
....
)
but i practice you'll probably have something closer to
create table employee (
employee_id int primary key,
....
)
-- track an employee's managers over time
create table employee_mgr (
employee_id int references employee(employee_id) not null,
manager_id int references employee(employee_id) not null,
start_date timestamp not null,
end_date timestamp,
...
)
and there are countless other examples. Sometimes it's a result of a poor
design but sometimes it's just an intrinsic part of what you're modeling.
On Mon, Sep 4, 2017 at 12:42 PM, <stimits at comcast.net> wrote:
> I finally made a discovery which might be entertaining for anyone
> following this. It seems the query and the code I'd written were actually
> correct (I had set an assert to warn against multiple references of a
> foreign key since I did not think this would be valid...the assert itself
> was not valid).
>
> The error was that I thought a single column of a foreign key could not
> have simultaneous dependencies on multiple columns of multiple tables (not
> to be confused with a multi-column key...this is a single column pointed at
> multiple foreign columns...a single column had been marked as a foreign key
> several times).
>
> I had decided to give up parsing the SQL structure through the ANSI
> tables, and instead to read the pg_dump which was suggested earlier since
> it makes explicit reference to an exact column for a foreign key to point
> at. It turns out there were multiple statements on this huge database dump
> where a single column was given reference to columns of another table. This
> is essentially like a case of multiple inheritance resulting in an
> intersection join of other table columns. There really were several cases
> of one column pointing to a foreign column multiple times, and it wasn't a
> bug. I did not know that could happen. I've changed my data model, but the
> original query to find columns which point to foreign columns is valid :)
>
> ----- Original Message -----
> From: Bear Giles <bgiles at coyotesong.com>
> To: Boulder (Colorado) Linux Users Group -- General Mailing List <
> lug at lug.boulder.co.us>
> Sent: Wed, 30 Aug 2017 00:53:43 -0000 (UTC)
> Subject: Re: [lug] Q. on SQL Foreign Keys (PostgreSQL)
> You've spent so much time trying to do this with information_schema you
> would probably come out ahead with a one-shot program that provides the
> necessary abstraction.
> ...
>
> _______________________________________________
> Web Page: http://lug.boulder.co.us
> Mailing List: http://lists.lug.boulder.co.us/mailman/listinfo/lug
> Join us on IRC: irc.hackingsociety.org port=6667 channel=#hackingsociety
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lug.boulder.co.us/pipermail/lug/attachments/20170904/6fb8b50f/attachment.html>
More information about the LUG
mailing list