Re: How to model an AND/OR logic by relations ? - Mailing list pgsql-general

From Steve Boyle \(Roselink\)
Subject Re: How to model an AND/OR logic by relations ?
Date
Msg-id 000a01c19f46$061856b0$c55869d5@dualtower
Whole thread Raw
In response to How to model an AND/OR logic by relations ?  (Fritz Lehmann-Grube <lehmannf@math.TU-Berlin.DE>)
List pgsql-general
Fritz,

Given that you may have to deal with (.. AND ..) OR (..AND ..) does this
imply that you may need to modify relation dependencies to allow a link to
either atoms or further dependencies?

Otherwise I don't see how you can store the nested conditional statements.

P.S. I've never had to do this before (in databases anyway) it looks more
like an AI / Parser type problem.  It may be worth looking at some parsing
code to look at the datastructures they use.

steve boyle

----- Original Message -----
From: "Fritz Lehmann-Grube" <lehmannf@math.TU-Berlin.DE>
To: <pgsql-general@postgresql.org>
Cc: "Erhard Zorn" <erhard@math.TU-Berlin.DE>; "Tilman Rassy"
<rassy@math.TU-Berlin.DE>
Sent: Thursday, January 17, 2002 10:14 AM
Subject: [GENERAL] How to model an AND/OR logic by relations ?


>
> Hi all,
>
> I'm setting up a DB in which ( besides normal relations ) an
> AND/OR-relation is to be stored:
> I have two tables "documents" and "atoms", where a document shall
> "depend" upon a logical expression of atoms.
> e.g.  (please widen your window for this)
>
############################################################################
###############
> ### ###
> ###  document1 "depends" on (atom1 OR atom2) AND (atom1 OR atom3 OR
> atom4) AND (atom5)  ###
> ### ###
>
############################################################################
###############
> This is after some normalization - I could also have (.. AND ..) OR (..
> AND ..)
> I don't have NOT's.
>
> My idea is to have have two extra-tables:
>
> CREATE TABLE or_groups(
>        id ... primary key,
>        document_id ... references documents
>        );
>
> CREATE TABLE dependencies(
>        or_id ... references or_groups,
>        atom_id ... references atoms
>        );
>
> with ( mapping the example )(please widen your window for this)
>
> | documents |      | or_groups       |
> | id | name |      | id | document_id |
> | 1 | document1 |      | 1 | 1       |
> | | |      | 2 | 1       |
> | | |      | 3 | 1       |
>
> | dependencies |      | atoms       |
> | or_id | atom_id |      | id | name       |
> | 1 | 1 |      | 1 | atom1       |
> | 1 | 2 |      | 2 | atom2       |
> | 2 | 1 |      | 3 | atom3       |
> | 2 | 3 |      | 4 | atom4       |
> | 2 | 4 |      | 5 | atom5       |
> | 3 | 5 |      | |       |
>
> Because I'm a novice in Databases and the idea was pure naive intuition
> I want to ask, whether this is a standard problem and whether there is a
> standard solution.
> Am I running into problems ?
> Do bad things happen when "documents" and "atoms" are the same table ?
>
> Greetings and Thanx    Fritz
>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: if posting/reading through Usenet, please send an appropriate
> subscribe-nomail command to majordomo@postgresql.org so that your
> message can get through to the mailing list cleanly
>


pgsql-general by date:

Previous
From: "Nikola Milutinovic"
Date:
Subject: Database encoding in pg_dump
Next
From: Emmanuel SARACCO
Date:
Subject: how to limit postgresql process and memory time