[Cologne-pm] Hash von Hash von Array???

Wolfgang Weisselberg pl3rofb02 at sneakemail.com
Wed Feb 25 20:59:30 CST 2004


Michael Lamertz wrote 169 lines:
> On Tue, Feb 24, 2004 at 10:18:05PM +0100, Melanie wrote:

> > > Ich sehe Bedarf fuer Perltidy.
> > >    http://perltidy.sourceforge.net/

> *gg* Wolfgang spammt 'mal wieder sein Lieblingstool weil er's noch immer
> nicht geschafft hat, Emacs zu auto-indent zu ueberreden.  >;->

Michael, setzt dein Emacs auto-indent die '=>' zuverlaessig
untereinander (solange es Sinn macht) und auch noch, nachdem du
einen besonders_langen_key_hinzu => gefuegt hast?  Oder wenn es
so aussieht, wie in Melanies Original-code?

Im Uebrigen verwende ich keine Betriebssystem, dass "alles" kann,
aber einen besseren Editor braeuchte, mein Editor hingegen ist in
der Lage, die Wohnung zu putzen. :->

> So macht man aus einer kleinen Support-Applikation ein 800-pfuendiges
> Gorillamonster.  Der traurige Weg aller Software die letztendlich
> auch 'mal *benutzt* werden muss.

"Programming is like sex:
    one mistake and you have to support it for the rest of your life."
                                                        -- Michael Sinz

> Oft brauchst Du beide richtungen, und musst Dich dann entscheiden,
> welche Version oefter benutzt wird, um diese dann entsprechend
> vorzuziehen.  Oder Du baust zwei Hashes die Du ueber
> verknuepfungstabellen verbindest.
[...]
> Und schon macht es Sinn ein bischen Datenbank zu lernen.

Jup. Secondary Keys machen Sinn.  Aber auch hier zeigt sich
die Staerke einer Datenbank.

TABLE Person
    ID          Number(10)      , unique, primary key
    name        Varchar2(100)
    vorname     Varchar2(100)
    ...

Table Krankheiten
    ID          Number(10)      , unique, primary key
    name        Varchar2(100)

Table Person_Krankheiten (Person.ID und Krankheiten.ID sind
        zusammen der unique primary Key, constraints, so
        dass Person_ID als Person.ID und Krankheiten_ID als
        Krankheiten.ID existieren muessen)
    Person_ID           Number(10)     
    Krankheiten_ID      Number(10)

Table Symptome
    ID                  Number(10)      , unique, primary key
    Name                Varchar2(100)
    Beschreibung        clob [beliebig gross] oder
                            Varchar2($grosse_zahl)

Table Heilmethoden
    ID                  Number(10)      , unique, primary key
    Name                Varchar2(100)
    Beschreibung        clob [beliebig gross]

Table Krankheiten_Symptome (vgl. Person_Krankheiten)
    Krankheiten_ID      Number(10)
    Symptome_ID         Number(10)

Table Krankheiten_Heilmethoden (vgl. Person_Krankheiten)
    Krankheiten_ID      Number(10)
    Heilmethoden_ID     Number(10)



select P.vorname, P.name, K.name
from   Person                   P
     , Krankheiten              K
     , Person_Krankheiten       PK
     , Krankheiten_Symptome     KS
     , Symptome                 S
where  S.Name            = :SYMPTOM_NAME
   and S.ID              = KS.Symptome_ID       -- Symptome -> Krankheiten
   and KS.Krankheiten_ID = PK.Krankheiten_ID    -- Krankheiten -> Personen
   and PK.Person_ID      = P.ID                 -- Personen selektieren
   and PK.Krankheiten_ID = K.ID                 -- Krankheiten selektieren

sollte, so ich mich nicht vertan habe, dir die Vor- und Nachnamen
sowie die Krankheiten aller Personen nennen, wo die 
Krankheiten das Symptom :SYMPTOM_NAME (eine bei der Ausfuehrung
anzugebende Variable) hat.

i.e. "Liste alle Personen, die eine oder mehrere Krankheiten
haben, die das Symptom Streichelsucht haben, zusammen mit allen
ihren Streichelsucht-Krankheiten."

Es fehlt natuerlich noch eine Tabelle Person_Symptome, da 
- nicht alle Krankheiten alle Symptome habem
- im Moment nur alle Symptome aller erkannten Krankheiten
  genannt werden, nicht aber ungeklaerte Symptome
- und die Staerke des Symptoms nicht definiert wird

Und vielleicht sollte sowohl Person_Krankheiten und
Krankheiten_Symptome noch Informationen ueber Haeufigkeit und
Schwere der Verbindungen erhalten.

> Wenn es nur darum geht, "state" zu sichern, dann kannst Du evtl. auch
> 'was mit "Storable" anfangen.

Und Data::Dumper zum Debuggen in dem Bereich. :-)

> Geht es aber darum Daten auszutauschen,
> dann nimm CSV oder XML.  Auch wenn Wolfgang bestimmt gleich wieder nach
> dem Beissholz greift, XML::Simple ist eine nette Moeglichkeit, aus
> Perl-Strukturen XML-Files zu bauen, oder umgekehrt.

Ich muss wohl doch mal schauen, ob ich meinen XMLgenerator
loseisen kann.

-Wolfgang



More information about the Cologne-pm mailing list