From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Alban Hertroys <alban(at)magproductions(dot)nl> |
Cc: | Robert Haas <Robert(dot)Haas(at)dyntek(dot)com>, David Fetter <david(at)fetter(dot)org>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: complex referential integrity constraints |
Date: | 2007-02-23 14:34:53 |
Message-ID: | 20070223143453.GL7744@alvh.no-ip.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Alban Hertroys wrote:
> Robert Haas wrote:
> > The idea here is that a wolf can attack a sheep, or a wolf can attack
> > another wolf, but sheep can't attack anything. I suppose I could list
> > each wolf in both the predator and prey tables, but that seems a bit
> > duplicative (and causes other problems).
>
> I'm quite certain a wolf is much more likely to attack a sheep than to
> attack another wolf, and even more unlikely to attack for example a
> lion. It seems to me that just the fact that it can isn't enough
> information.
>
> It looks like you need "weighted constraints"; there's 0 chance that a
> sheep attacks a wolf, but there's >0 chance that a wolf attacks a sheep,
> >0 chance it attacks a wolf and >0 chance it attacks a lion. The exact
> numbers will vary, and I have absolutely no idea what they would be
> like. It probably requires some kind of ranking system that adjusts
> according to the known animals and their likelihood to attack eachother.
Depending on what you're modelling, even this could be too simple -- for
example, while a single wolf is unlikely to attack a lion, a pack of
wolves have a lot more probability of doing so.
Do you keep packs of wolves in your barn? If so, watch your lions.
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Marek Lewczuk | 2007-02-23 14:38:03 | Re: Warning "TupleDesc reference leak" |
Previous Message | Jasbinder Singh Bali | 2007-02-23 14:34:51 | Re: server closed unexpectedly while executing a function |