Search Postgresql Archives

Re: referential integrity and defaults, DB design or trick

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




On Dec 20, 2007, at 8:50 AM, Ivan Sergio Borgonovo wrote:

On Wed, 19 Dec 2007 17:24:52 +0100
Ivan Sergio Borgonovo <mail@xxxxxxxxxxxxxxx> wrote:

I've something like this:

create table i (
	iid serial primary key,
	name varchar(32)
);
create table p (
	pid serial primary key,
	iid int references i(iid) on delete cascade,
	name varchar(32)
);
create table c (
	bid serial primary key,
	pid int references p(pid) on delete set null
);

insert into i values(default,'i');

-- default proprieties (singularity)
insert into p values(-1,null,'default p');

insert into p values(default,1,'this p');
insert into p values(default,1,'that p');

insert into c values(default,null);
insert into c values(default,1);
insert into c values(default,-1);

let's say I'd like to associate c with a name (the propriety)

a null c.pid means I still have to assign a propriety or the
previously assigned propriety is not anymore available.

I'd like to have a way to say take the propriety from i and the
above is what I came out with.
But that introduces a singularity.

Any better design? I don't like to write a schema that needs data
inside to have a meaning.

If not how can I protect the singularity from accidental delete?
Most of the db will be accessed through functions and this is a
step.

An alternative design could be
create table c (
	bid serial primary key,
	usedefault boolean,
	pid int references p(pid) on delete set null
);
where
usedefault=true -> use default
usedefault=false -> use i.pid
usedefault is null -> not yet assigned

Ivan, after reading both of your posts I'm still not sure what you mean or are trying to do. What do you mean by a singularity? By propriety do you mean property? Can you give an example with more descriptive names than i, p, and c?

Erik Jones

Software Developer | Emma®
erik@xxxxxxxxxx
800.595.4401 or 615.292.5888
615.292.0777 (fax)

Emma helps organizations everywhere communicate & market in style.
Visit us online at http://www.myemma.com



---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org/


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux