Re: implementation of a many-to-many relationship - Mailing list pgsql-sql

From Jeff Self
Subject Re: implementation of a many-to-many relationship
Date
Msg-id 1014833087.2404.10.camel@personnel_test
Whole thread Raw
In response to implementation of a many-to-many relationship  (Dalton Shane <se401029@cs.may.ie>)
List pgsql-sql
There should be three tables.
Voter, Candidate, Voter_Candidate

Voter
-----
voter_id serial primary key
name text

Candidate
---------
candidate_id serial primary key
name text

Voter_Candidate
---------------
id serial primary key
voter references Voter (voter_id)
candidate references Candidate (candidate_id)

Don't forget your table for the office or position the candidates are
running for if thats necessary.

On Wed, 2002-02-27 at 09:06, Dalton Shane wrote:
> Hi,
> 
> I need to implement a many-to-many relationship in PostgreSQL but don't know how 
> to. I've trawled through the mailing lists but can't find anything, it's very 
> easy to do in Access so it can't be that hard in PostgreSQL.
> 
> I created a linking table between two tables (voter, candidates) called 
> c_voting, I then reference the two table's primary keys to create a composite 
> primary key for c_voting.
> 
> However when I go to input data into c_voting I get a referential integrity 
> error saying that the primary key of table voter doesn't match primary key of 
> c_voting (which it shouldn't).
> 
> I've tried everything I can think of for the last four days, but to no avail.
> 
> This is a central part of my thesis and I need to get it working as soon as 
> possible.
> 
> If anyone knows how to implement this I would be very very very grateful, I've 
> read all the documentation I can find but it didn't help.
> 
> Many thanks in advance for any advice that you can offer.
> 
> >From 
> 
> Shane.
> 
> 
> here are the tables involved.
> 
> CREATE TABLE voter (
>     v_number    integer NOT NULL 
>                 PRIMARY KEY,
>                 
>     v_name        varchar(20),
>     v_surname    varchar(20),
>     v_birth        date,
>     v_address    varchar(50),
>     v_marital    varchar(10),
>     v_job        varchar(15)
> );
> 
> CREATE TABLE candidates (
>     c_number    integer NOT NULL 
>                 PRIMARY KEY,
>                 
>     c_name        varchar(20),
>     c_surname    varchar(20),
>     c_party        varchar(20),
>     c_constituency    varchar(35)
> );    
> 
> CREATE TABLE c_voting (
>     v_number    integer NOT NULL
>                 CONSTRAINT cvote_ref_voter
>                 REFERENCES voter
>                 ON UPDATE CASCADE
>                 ON DELETE CASCADE
>                 DEFERRABLE
>                 INITIALLY DEFERRED,
>                 
>     c_number    integer NOT NULL
>                 CONSTRAINT cvote_ref_can
>                 REFERENCES candidates
>                 ON UPDATE CASCADE
>                 ON DELETE CASCADE 
>                 DEFERRABLE
>                 INITIALLY DEFERRED            
>     
> -- I tried these variations below but still got nothing working
> 
>     --primary key(v_number, c_number)
>     
>     --foreign key (v_number) references voter (v_number),
>     --foreign key (c_number) references candidates(c_number)
> );
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
> http://www.postgresql.org/users-lounge/docs/faq.html
-- 
Jeff Self
Information Technology Analyst
Department of Personnel
City of Newport News
2400 Washington Ave.
Newport News, VA 23607
757-926-6930



pgsql-sql by date:

Previous
From: Barry Lind
Date:
Subject: Re: Timestamp output
Next
From: Wei Weng
Date:
Subject: How slow is DISTINCT?