Kalle_B: Konzeption Personen / Adressen

Hallöle,

brauche mal eure Anregung/Kritik zu einer Neukonzeption.

Muss immer wieder tricksen, weil ich eine Tabelle habe, in der Firmen und Personen in einem Datensatz sind, also

adressen
--------

  • id
  • Adress-Kennzeichen adr_kz    1=Aussteller 2=Besucher
  • Firmen-Kurzname    kurzname
  • Adress-Unternummet adr_unt   lfd. Nr. pro Kurzname
  • Firmenname 1       name1
  • Firmenort          ort
    ...
  • Nachname           nname
  • Tel                tel
  • Handy              mobil
    ...

Beziehungen:

Kollegen (Mitarbeiter einer Firma) sind definiert über den gleichen Kurznamen.

Gruppen (Besucher einer Messe, die gemeinsame Termine wollen) sind in einer eigenen Tabelle:

gruppen_besucher
----------------

  • id
  • gruppen_id
  • adress_id

Suche nach einem Standard-Konzept (losgelöst von diesem Projekt), das die Daten und Beziehungen von juristischen und natürlichen Personen allgemein regelt.

Zunächst müsste geklärt werden, was eine PERSON kennzeichnet. Anrede, Titel, Vor- und Nachname sind unstrittig.

Aber mit der Tel-Nr geht es schon los. Die ist eigentlich NICHT personenbezogen. Denn eine natürliche Person kann privat, dienstlich, mobil, im Verein, ... beliebig viele Nummern haben. Und eine juristische Person erst recht.

Dann fängt man an, mehrere Felder zu machen: tel, fax, mobil.

Das gleiche Problem bei E-Mail und Adressen. Welche Adresse hätte eine natürliche Person, die privat, als Geschäftsmann, als Vereinsvorsitzender Post bekommt?

Ist es der richtige Ansatz, wenn man drei Tabellen macht?

  • personenstamm (Anrede, Titel, Vor-, Nachname (Firma), Geburtstag (Gründungsjahr), ...
  • adressstamm   (Land, PLZ, Ort, Ortsteil, Strasse, Hausnummer, Stockwerk, Zimmer-Nr, ...)
  • kommunikationsstamm (Art [Tel|Fax|mobil|email], personen_id, ...

und für die Beziehungen eine weitere

  • id
  • beziehungsart (ist Mitarbeiter von .., Kunde, Lieferant, ..)

... ist noch nicht fertig gedacht, würde eure Vorschläge gerne berücksichtigen.

Lieben Gruß, Kalle

  1. Hi Kalle,

    geh' das Problem einfach mal von der Wurzel an.

    Was kommt am Anfang? Am Anfang kommt eine natürliche Person. Sie hat eine ID, Name, Adresse, Geburtstag etc.

    Diese Person ist plötzlich Chef einer Firma. In der Firma ist die Person aber nicht wieder mit Name, Adresse, Geburtstag etc. sondern mit seiner ID angegeben. Da der Chef dieser Firma alles so prima delegiert hat, hat er soviel Freizeit (schliesslich leben wir in der Spaßgesellschaft, da wissen wir vor lauter Spaß nicht wohin), daß er unbedingt in den Briefmarkensammel-, Kaninchenzüchter- und, wenn wir schon mal dabei sein, in den Swinger-Verein eintreten muß. Dort ist er auch nur über eine ID drin. Als Chef, Oberbriefmarke, Rammelmeister und, äh, OK, nicht überall braucht er ein Telefon, aber da, wo er eins braucht, hat er auch eins. Dies ist nicht sein privat-Telefon, sondern das, was er für die Ausübung seiner Funktion braucht. Also bleibt diese Telefonnummer in der Firmen-, Briefmarken-, Rammelvereins-Tabelle.

    So, wo ist jetzt Dein Problem?

    Gruß

    Hans

    1. Hallo,

      Dies ist nicht sein privat-Telefon, sondern das, was er für die Ausübung seiner Funktion braucht. Also bleibt diese Telefonnummer in der Firmen-, Briefmarken-, Rammelvereins-Tabelle.

      So, wo ist jetzt Dein Problem?

      Wie bildest du hier dann 2 Mobiltelefone, einen Festnetzanschluss und 2 Faxnummern ab, die er in seiner Firma hat?

      Grüße
      Marcus

      --
      si vis pacem, para iustitiam
      1. Hi !

        Wie bildest du hier dann 2 Mobiltelefone, einen Festnetzanschluss und 2 Faxnummern ab, die er in seiner Firma hat?

        Wo ist das Problem? Man kann eine weitere Tabelle nehmen, in der sämtliche Faxe, Mobiltelefone, etc's drin sind und diesen Nummern doch beliebig viele ID's von natürlichen Personen zuweisen.

        ID           Festnetz     Mobil     Fax
        -----------------------------------------
        1             1234         0171-1   4711
        2             4567         0171-2   4711
        1             1234         0171-3   4711

        Diese Tabelle kann man natürlich auch noch normalisieren, man kann aber auch sagen, maximal 3 Handys pro Nase und dann hat man 3 Handy-Spalten. Je nachdem, wie modular man das ganze haben will. Spalten, in denen null drin steht, nehmen bekanntlich keinen Platz weg.

        Gruß

        Hans

        1. Hallo,

          Wo ist das Problem? Man kann eine weitere Tabelle nehmen, in der sämtliche Faxe, Mobiltelefone, etc's drin sind und diesen Nummern doch beliebig viele ID's von natürlichen Personen zuweisen.

          Was aber deinem Vorschlag widerspricht:

          Also bleibt diese Telefonnummer in der Firmen-, Briefmarken-, Rammelvereins-Tabelle.

          Grüße
          Marcus

          --
          si vis pacem, para iustitiam
          1. Hi !

            Was aber deinem Vorschlag widerspricht:

            Also bleibt diese Telefonnummer in der Firmen-, Briefmarken-, Rammelvereins-Tabelle.

            Nun, es kommt darauf an, ob es eine Regelung gibt:

            "Jeder hat maximal 2 Handys, 3 Festnetzanschlüsse und 4 Fax-Geräte" -> Dann die entsprechenden Spalten in der Tabelle frei halten

            Oder

            "Jeder kann beliebig viele Medien haben, diese findet man in der Tabelle 'Medien'".

            Leider gibt es nicht DIE Lösung. Denn der Menscht ist gebaut nach "Woher weiß ich was ich brauche, wenn ich nicht sehe, was es gibt (oder möglich ist)".

            Somit ist es ratsam, sich bei Tabellen-Designs immer die Option "erweiterbar nach allen Richtungen" offen zu halten. Dies kann man dadurch erzielen, daß man Objekte (Mensch, Auto, Käfer, etc.) durch eine ID kennzeichnet und diese ID taucht dann in all den Tabellen wieder auf, die eine Erweiterung zur Ursprungstabelle darstellen.

            Wäre also zuerst eine begrenzte Anzahl von Medien für einen Mitarbeiter vorgesehen gewesen, danach aber kann jeder Mitarbeiter duzende von Handys, Faxe und Telefone haben, muß man die Tabelle 'Medien-Tabelle' machen

            Bsp:

            Name  Personen-ID   Funktions-ID
            ------------------------------
            Hans    4711          1234

            Medien-Tabelle:

            Personen-ID        Medien-Name    Rufnummer      Funktions-ID
            -----------------------------------------------------------
            4711               Handy1         0171-123         1234
            4711               Handy2         0175-456         1111
            4711               Fax1           01234-5678       1234
            4711               Fax2           01234-8765       1111
            4711               Festnetz       01234-99876      4444
            8965               Handy1         0175-12345       3321
            8965               Fax1           01234-8744       3321
            123456             Festnetz       01234-85674      8765

            Funktions-Tabelle:

            Funktions-ID      Funktion
            --------------------------------
            1234              Vorstand Briefmarken
            1111              Vorstand Kaninchenzüchter
            4444              Pforte Firma
            ...

            etc.

            Somit kann ich mit den Tabellen festlegen, welche Person wo welche Funktion besitzt und an welchem Ort unter welchem Festnetz/Fax/Handy erreicht werden kann.

            Gruß

            Hans