Ankündigung

Einklappen
Keine Ankündigung bisher.

Designfrage

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Designfrage

    Hallo erstmal,

    ich versuche gerade eine Datenbank zu designen und zu Normalisieren.

    Zu den Fakten es geht um eine Casting-DB die erweiterungsfähig ist
    das heist ich habe eine Haupttabelle und beliebig viele Zusatztabellen
    in der Hauptabelle sind sachen wie name usw.
    in den Zusatztabellen sind sachen wie Haarfarbe Wohnumgebung usw.

    Zu meinem Problem ich will dass sich ein Kunde von mir eine neue Castingesuche
    online stellen kann, da es sein kann dass mehrere Kunde das gleiche wollen wie
    z.B. Haarfarbe oder Grösse
    habe ICH ein problem damit, um es zu veranschaulichen.

    Tabelle Kunde 1
    -Haarfarbe
    -Grösse
    -Wohnumgebung
    -Aussehen

    Tabelle Kunde 2

    -Haarfarbe
    -Narben
    -Augenfarbe

    Da sich ein User bei beiden Gesuchen eintragen kann täte Haarfarbe in zwei Tabellen stehen
    meine erste überlegung währe alle spalten zu teile in weitere Tabellen der art ID/Haarfarbe und sich der Kunde aus bestehenden Tabellen und
    neuen Tabellen sein Formular zusammenbauen kann aber so ein system
    währe ziemlich langsam wenn komplexe suchanfragen von seiten des Redakteurs kommen würden.
    Meine erste Überlegung währe eine zweite DB zu erstellen wo alle Teilungen aufgehoben werden nachteil ist das die meisten Datensätze
    leere spalten enthielten und das ich nunmal zwei DB hätte die das Gleiche enthalten.

    User_error oder gibt es einen guten kompromiss ?

    Ich hoffe das meine Frage gut beschrieben ist.

    Danke für eure Hilfe
    http://www.rentmyphone.com


  • #2
    Hi, bitte lies dir deinen Text doch nochmal durch bevor du ihn postest, zumindest verstehe ich viele Sätze von dir einfach nicht:
    ich will dass sich ein Kunde von mir eine neue Castingesuche
    online stellen kann
    ??

    Lies dir doch mal zum Thema Normalisieren das hier durch:
    http://de.wikipedia.org/wiki/Normali...28Datenbank%29
    Sehr lesenswert.

    Ich würde dir empfehlen, alle Daten, die in genau einer Beziehung zu der Person stehen, nicht in extra Tabellen auszulagern. Warum solltest du die Augenfarbe in eine extra Tabelle stecken. Ein Mensch hat genau eine. Gleiches bei allem anderen, was eine Person nur 1x haben kann.

    Wenn aber mehr als eine Eigenschaft zur Person möglich sein soll, zum Beispiel Musik-Geschmack, dann solltest du für die Musikrichtungen eine extra Tabelle anlegen:
    Code:
    id | music
    1 | rock
    2 | pop
    3 | techno
    4 | house
    ..
    // und eine Verbindunstabelle zwischen "Person" und "Musikgeschmack"
    id | person_id | music_id
    1 | 1 | 1 // Person 1 hört gern Rock
    2 | 1 | 3 // Person 1 hört auch gern Techno
    3 | 1 | 4 // Person 1 hört auch gern Trance
    // Person 2 hört offenbar nichts gern
    4 | 3 | 3 // Person 3 hört nur gern Techno
    erstellen.

    Kommentar


    • #3
      Danke dir die normalisierungs formen kenne ich
      es geht mir aber dabei mehr um geschwindigkeit und erweiterbarkeit
      nach deinem denken würde meine Tabell irgendwann mal so aussehen
      -das sie 200 oder mehr spalten hätte
      -die meisten davon leer währen
      -die abfrage sehr lange dauern würde
      -die übersicht verloren geht

      nochmal zur übersicht du kommst auf die seite meldest dich an mit deinen grunddaten
      und hast dann die möglichkeit an mehreren castings teil zunehmen z.B bei Avenzio, S.O.S usw..
      da die nicht ewig laufen werden die spalten irgendwann mal nicht mehr gefüllt ....

      ps: tut mir leid für alle die mein deutsch ertragen müssen
      es sollte aber hier nicht um mein deutsch gehen
      danke fürs verständnis
      alles was unklar ist werde probieren zu erklären
      http://www.rentmyphone.com

      Kommentar


      • #4
        Ich kann dein Problem leider nicht nachvollziehen. Vielleicht kannst du es ja mal ein wenig verständlicher erläutern.

        Kommentar


        • #5
          in oop würde ich von polymorphie reden
          es geht darum das die datenbank keine unnützigen daten bzw spalten enthält.
          okay ich probiere es mal so zu veranschaulichen...

          Du meldest dich bei einer seite an mit deinem namen adresse bild usw..
          dann kannst du dich bei mehreren gesuchen anmelden und mitmachen
          z.B.
          -bei avenzio mit deiner wohnumgebung augenfarbe und grösse deiner wohnung
          -und bei s.o.s die wollen auch deine augenfarbe und grösse deiner wohnung aber nicht deine wohnumgebung
          -und dann noch bei abenteuer auto die ganz andere sachen wollen ....

          das ich vorher noch nicht weis was die jeweiligen produktionen wollen
          und wieviele noch dazu kommen werden gibt es probleme...

          ziel ist es das ganze in eine erweiterbaren und wiederverwendbaren datenbank umzusetzen
          die übersichtlich und gut durchdacht ist

          ich probier euch mal morgen ein paar schemas von mir zu zeigen ....
          http://www.rentmyphone.com

          Kommentar


          • #6
            Hm na gut. Aber vielleicht gibt es den optimalen Weg nicht?! Ich würde dir dann raten, eine Avenzio-Tabelle anzulegen, in der eben die Augenfarbe nicht drin vorkommt, da sie schon in der Haupttabelle drinsteht. Alles in soviel Extra-Tabellen packen wie möglich ist auch nicht unbedingt die Lösung. Lieber mehr Spalten als mehr Tabellen, denn schließlich muss bei jeder neuen Tabelle der Index dann mal neu gesucht werden, wenn du LEFT JOIN machst...

            Kommentar


            • #7
              Vorschlag: Definiere eine Tabelle eigenschaften, in der du Dinge wie Haarfarbe, Größe, Wohnort etc. jeweils als einen Datensatz anlegst. Dann erstellst du eine Tabelle benutzer, in der du den Namen der Benutzer speicherst. In einer dritten Tabelle kannst du dann anhand von eigenschaftid und nutzerid jedem Benutzer beliebig viele Eigenschaften zuordnen. Für die Castings könntest du ebenfalls eine weitere Tabelle erstellen, in der der Name des Castings gespeichert wird. Und in einer letzten Tabelle könntest du anhand von eigenschaftid und castingid verschiedene Eigenschaften definieren, die für ein Casting wichtig sind.

              Kommentar


              • #8
                Hmm ich mein ich bin kein profi aber hab ma das mal durchgelesen ....

                Wieso machst du ned ne Haupttabelle wo (user,haarfarbe, ALLES userspezifische )drin steht und ja nach dem was für neue "castings" dazukommen machst eine neue tabelle mit daten die zusetztlich die einzelnen castings erfordern (wohnort, umgebung,landschaft , Bhgröße , ka was noch ) und wenn sich ein user anmelden möchte für das casting dann muss er halt noch was zusetzlich zu seinen registrierungsdaten ausfühlen.

                Kannst ned bei der regsitrierung sein gesamtes leben in tabelen unterbringen weil man eventuell mal irgendwelche daten für ein mode casting oder bau casting brauchen wird. Das sind 2 verschiedene welten (mode & bau) die nix miteinander zu tun haben (außer die userdaten) und deshalb kann man kein einheitliches registrierungsschema machen.

                Ich hoffe ich hab verstanden was du wolltes und das du verstehts was ich sagen will


                (ps. Bei rechtschreibfehlern und da sind ein paar einfach überlesen )

                mfg

                Kommentar


                • #9
                  Angesichts der Problemstellung würde Ich xabbuhs Vorschlag realisieren.
                  Damit braucht man nicht ständig irgendwelche Tabellen erweitern bzw für jedes casting ne neue anlegen.... dafür ist die Zahl der Eigenschaften einfach zu variabel.

                  Außerdem kann man eine Datenbank sehr leicht 'kaputt-normalisieren'.
                  Wer will sich schon durch etliche Tabellen joinen nur um an ein paar datensätzesätze zukommen die sich durch einen einzigen foreign key verbinden ließen.
                  Von der schlechteren performance multipler joins ganz zu schweigen.
                  Tabellenlayouts sind out, Browsergames sind schei$$e und die Erde ist eine Scheibe.

                  Kommentar


                  • #10
                    Der Vorschlag von xabbuh klingt für mich am besten.

                    Kommentar


                    • #11
                      Danke euch
                      ich mach jetzt mal ein paar tests.
                      man ich hasse das testen wieder nächte lang nur von kaffee und zigaretten ernähren
                      um dann nach wochen so auszusehen --> nur mit roten augen
                      http://www.rentmyphone.com

                      Kommentar

                      Lädt...
                      X