comp.lang.ada
 help / color / mirror / Atom feed
From: Ole-Hjalmar Kristensen <ole-hjalmar.kristensen@substitute_employer_here.com>
Subject: Re: Windows Ada database support.
Date: 08 Dec 2004 11:03:44 +0100
Date: 2004-12-08T10:03:49+00:00	[thread overview]
Message-ID: <wvbru0qxnm2n.fsf@sun.com> (raw)
In-Reply-To: 18u46qzjs6s8v.19927r9ay0kkh.dlg@40tude.net

>>>>> "DAK" == Dmitry A Kazakov <mailbox@dmitry-kazakov.de> writes:

    DAK> On Wed, 8 Dec 2004 02:24:25 +0000 (UTC), Georg Bauhaus wrote:
    >> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
    >> : On Tue, 7 Dec 2004 15:49:36 +0000 (UTC), Georg Bauhaus wrote:
    >> : 
    >> :> Dmitry A. Kazakov <mailbox@dmitry-kazakov.de> wrote:
    >> :> 
    >> :>: I think that this is a shortcoming of the very concept of a relational
    >> :>: view. Relation is not an array. Period.
    >> :> 
    >> :> Who says that a relation is an array?
    >> : 
    >> : Nobody. The problem is that we need arrays, or more generally, ordered
    >> : containers. This is the way the most people think about tables.
    >> 
    >> Hm. If at the DB level you ask,
    >> 
    >> SELECT S.key, T.foo, T.bar from S, T
    >> WHERE (S.key BETWEEN 100 AND 200)
    >> AND T.foo = S.key
    >> ORDER BY S.key

    DAK> This is the source of the problems in my view. What does SELECT in
    DAK> application terms? A developer would like to be two storeys above that.

A good question. But isn't the goal of the application programmer
precisely to select an implementation of the domain-specific concepts?
So the application programmer cannot really be "two storeys above
that", he has to choose how to do the mapping to some more general
representation, be it DB schema or programming language.
An even better question is what do you want to accomplish, in terms of
your *problem* domain? It isn't obvious to me that using another
interface to the DB (object-oriented, navigational, ER-like, etc) in
general will make the mapping from the problem domain any easier. For
many application domains, thinking in terms of sets and relations are
perfectly fine, and going to an object-oriented / navigational model
and effectively doing your own joins isn't going to help you much. You
have to implement the relations between your problem-domain objects in
some way, and the relational model and the use of normailzation has
proven itself to be a very robust and flexible way of doing this,
although not necessarily the most efficient.

If you have a better model for describing the problem domain in mind,
I'm more than willing to listen.

Btw., many years ago I worked on a project where the main goal was to
develop a rapid prototyping tool for DB applications. The project
started because a fellow analyst found out that lots of customers did
not really understand the implications of the ER models he created, so
he felt the need to rapidly create a set of example applications which
could illustrate the possibilities of his ER model.  Our approach was
to first create the ER model, then to create an "application" or form,
we would select some entity as the root. By following the relations
from this root entity we could reach other entities, and so on,
effectively creating a hierarchical structure from the ER network. The
tool also allowed you to select a subset of the attributes for each
entity.  The DB schema was automatically created from the ER model,
and the prototyping tool also generated descriptions of the logic (in
terms of interpreted code and SQL) and a graphical user interface for
each application. The actual execution of the application was done by
an interpreter, in order to give us rapid turnaround time (just
seconds to make changes to your application or schema and try it
again), but of course you could just as well have created data type
definitions and access functions in a compiled language to allow an
application writer easy access to the ER model/DB schema through a set
of application-specific interfaces.

    >> Then you have in Ada.Container terms,
    >> function Floor (Container : Map;
    >> Key       : Key_Type) return Cursor;
    >> 
    >> function Ceiling (Container : Map;
    >> Key       : Key_Type) return Cursor;
    >> where
    >> S.key >= 100  can be made the floor
    >> and
    >> S.key <= 200  can be made the ceiling.

    DAK> You are thinking in terms of SQL. From this point of view nothing or very
    DAK> little could be done. And after all, GNADE provides embedded SQL for that
    DAK> stuff.

He may just as well be thinking in terms of sets and relations. SQL is
just a slightly clumsy way of conveying those thoughts to the DB
engine :-)

<snip>

-- 
   C++: The power, elegance and simplicity of a hand grenade.



  reply	other threads:[~2004-12-08 10:03 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2004-11-24 12:31 Windows Ada database support Mark Doherty
2004-11-24 15:04 ` Marius Amado Alves
2004-11-24 18:35 ` Pascal Obry
2004-11-24 19:17   ` Alex R. Mosteo
2004-11-24 19:30     ` Dmitry A. Kazakov
2004-11-24 22:32       ` Ching Bon Lam
2004-11-25  1:03 ` David Botton
2004-11-25 17:50   ` Warren W. Gay VE3WWG
2004-11-26  9:15     ` Dmitry A. Kazakov
2004-11-26 18:36       ` David Botton
2004-11-27  8:59         ` Dmitry A. Kazakov
2004-11-28  0:46           ` David Botton
2004-11-28  9:51             ` Dmitry A. Kazakov
2004-11-28 10:23               ` Pascal Obry
2004-11-28 11:03                 ` Dmitry A. Kazakov
2004-11-28 14:38                   ` Martin Dowie
2004-11-28 16:51                     ` Marius Amado Alves
2004-11-28 19:50                       ` Martin Dowie
2004-11-28 20:49                       ` Christopher Browne
2004-11-28 17:29                     ` Dmitry A. Kazakov
2004-11-28 17:47                       ` Marius Amado Alves
2004-11-28 18:56                         ` Dmitry A. Kazakov
2004-12-06 14:57                           ` Warren W. Gay VE3WWG
2004-11-28 18:45                   ` Pascal Obry
2004-11-28 19:13                     ` Dmitry A. Kazakov
2004-11-28 20:04                       ` Pascal Obry
2004-11-29  9:04                         ` Dmitry A. Kazakov
2004-11-29 10:07                         ` Adrien Plisson
2004-11-29 11:00                           ` Alex R. Mosteo
2004-11-29 13:12                             ` Frank Piron
2004-12-01 16:19                           ` Pascal Obry
2004-12-02 10:37                             ` Marius Amado Alves
2004-12-02 10:58                               ` Frank Piron
2004-12-03  2:50                               ` John B. Matthews
2004-11-28 20:36                     ` Marius Amado Alves
2004-11-29  1:40                       ` Georg Bauhaus
2004-11-29 10:30                         ` Marius Amado Alves
2004-11-29  1:28       ` Georg Bauhaus
2004-11-29  8:53         ` Dmitry A. Kazakov
2004-11-29 11:09           ` Georg Bauhaus
2004-11-29 12:01             ` Dmitry A. Kazakov
2004-11-29 14:07               ` Georg Bauhaus
2004-11-29 18:04                 ` Dmitry A. Kazakov
2004-11-29 22:05                   ` Georg Bauhaus
2004-11-30 11:00                     ` Dmitry A. Kazakov
2004-11-30 13:46                       ` Ole-Hjalmar Kristensen
2004-11-30 15:04                         ` Dmitry A. Kazakov
2004-11-30 16:09                         ` Georg Bauhaus
2004-11-30 16:07                       ` Georg Bauhaus
2004-11-30 18:52                         ` Dmitry A. Kazakov
2004-11-30 21:10                           ` Georg Bauhaus
2004-12-01  9:11                             ` Dmitry A. Kazakov
2004-11-29 12:56       ` Marius Amado Alves
2004-11-29 13:26         ` Dmitry A. Kazakov
2004-11-29 15:02       ` Frank Piron
2004-11-29 15:58         ` Marius Amado Alves
2004-11-29 18:16         ` Dmitry A. Kazakov
2004-11-30  7:14           ` Frank Piron
2004-12-06 14:48       ` Warren W. Gay VE3WWG
2004-12-06 16:29         ` Dmitry A. Kazakov
2004-12-06 17:52           ` Warren W. Gay VE3WWG
2004-12-06 19:44             ` Georg Bauhaus
2004-12-06 20:49             ` Dmitry A. Kazakov
2004-12-07  5:16               ` Warren W. Gay VE3WWG
2004-12-07 10:29                 ` Dmitry A. Kazakov
2004-12-07 15:49               ` Georg Bauhaus
2004-12-07 21:29                 ` Dmitry A. Kazakov
2004-12-08  2:24                   ` Georg Bauhaus
2004-12-08  9:05                     ` Dmitry A. Kazakov
2004-12-08 10:03                       ` Ole-Hjalmar Kristensen [this message]
2004-12-08 10:56                         ` Dmitry A. Kazakov
2004-12-08 11:19                           ` Marius Amado Alves
2004-12-08 12:51                             ` Frank Piron
2004-12-08 13:43                               ` Dmitry A. Kazakov
2004-12-08 13:41                             ` Dmitry A. Kazakov
2004-12-08 16:09                               ` Georg Bauhaus
2004-12-08 19:46                                 ` Dmitry A. Kazakov
2004-12-09 12:20                                   ` Georg Bauhaus
2004-12-09 12:59                                     ` Dmitry A. Kazakov
2004-12-08 15:58                           ` Georg Bauhaus
2004-12-08 19:43                             ` Dmitry A. Kazakov
2004-12-09 11:58                               ` Georg Bauhaus
2004-12-09 13:27                                 ` Dmitry A. Kazakov
2004-12-09 18:58                                   ` Georg Bauhaus
2004-12-10 10:22                                     ` Dmitry A. Kazakov
2004-12-10 14:28                                       ` Georg Bauhaus
2004-12-10 15:14                                         ` Dmitry A. Kazakov
2004-12-08 15:52                         ` Georg Bauhaus
2004-12-08 20:22                           ` Dmitry A. Kazakov
2004-12-09 12:12                             ` Georg Bauhaus
2004-12-09 12:59                               ` Dmitry A. Kazakov
2004-12-09 18:45                                 ` Georg Bauhaus
2004-12-09 12:22                             ` Ole-Hjalmar Kristensen
2004-12-09 14:03                               ` Dmitry A. Kazakov
2004-12-10 20:47                   ` Simon Wright
2004-11-25  2:18 ` bubble
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox