Brauch Rat, wie speichere ich effizient?

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

  • Brauch Rat, wie speichere ich effizient?

    hi,

    ich brauche ein Rat.

    Ich programmiere eine Art Anzeigen Schaltung.
    Der User kann dabei auswählen wo innerhalb Deutschland und Schweiz seine Firma arbeitet. Zum Beispiel kann er nur Deutschland wählen, das bedeutet dann, dass seine Firma überall in Deutschland vertreten ist, oder er kann zB nur 2 Bundesländer auswählen.

    Mein Problem ist dabei wie ich jetzt diese Eingaben am effizientesten speichern kann, damit ich möglichst schnell und einfach das ganze aus der DB (mysql) auslesen/suchen kann.

    Ich kenn mich nich sehr gut aus mit dem ganzen rund um DB.
    So wie ich es verstehe, ist es effizienter die Eingaben in Zahlen umzuwandeln (zu kodieren) und diese Zahl dann abzuspeichern, anstatt später eine Volltextsuche zu realisieren.
    Oder irre ich mich da?

    Okay, nur wie soll ich das ganze realisieren?

    Ich hab mir folgendes überlegt, Deutschland hat 16 Bundesländer.
    Ich nehme das ganze als eine binäre Zahl, also eine 16 stellige binär Zahl. Wenn der User zB ganzes Deutschland auswählt, müssten alle 16 Stellen mit 1'er gefüllt sein. Wenn er zb nur Berlin und Hessen niehmt, könnten dann, je nach kodierung, niergendwo unter den 16 Stellen zwei 1'er sein.
    Weil ich wiederrum keine 16 Stelliges String speichern will, könnte ich es in hexadezimale Zahlen umwandeln und die dann in der DB ablegen.
    In der DB lege ich dann 2 Felder an, einer mit der Zahl für Deutschland und mit einer Zahl für Schweiz.

    Was haltet ihr von der Idee?
    Gehts es besser? Wie wird das in der Praxis umgesetz? Ich bin wie gesagt neu in der ganzen
    Materie und fand auch keine Tutorials oder sonstiges dazu.

    Gruss,
    Andreas

  • #2
    Re: Brauch Rat, wie speichere ich effizient?

    Weil ich wiederrum keine 16 Stelliges String speichern will, könnte ich es in hexadezimale Zahlen umwandeln und die dann in der DB ablegen.
    In der DB lege ich dann 2 Felder an, einer mit der Zahl für Deutschland und mit einer Zahl für Schweiz.
    die art und weise, wie du die daten speichern willst, finde ich persönlich , vor allen weil das mit den 16bl so gut passt.

    speichern kannst du nen ganz normalen int, einzelne bits lesen, schreiben kannst du einfach mit den boolschen operatoren, also
    38724 AND 2^7 zum lesen des 8. bit oder so? vielleicht über klassen-methoden ...

    ob das nun in dieser weise performanter ist, weiß ich nicht

    über eine extra tabelle mit der id des kunden und der id des bundeslandes (wofür dann auch noch eine tabelle benötigt wird) würde es auch gehn
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      ein Problem gibts da noch, Schweiz hat 26 Kantone
      Also müsste ich für Schweiz 2^25 nehmen..

      Die Idee mit den Tabellen ist mir auch schon gekommen, nur ich dachte es geht vielleicht auch anders.

      Noch jemand paar Ideen?

      Kommentar


      • #4
        Relationstabelle

        *verschieb*

        Kommentar


        • #5
          kannst dir auch mal den (My)SQL-Datentyp SET ansehen.

          Da kannste nämlich so ne Aufzählung machen
          SET ('NRW','HH','RP','HT',...)
          und beim Speichern dann einen oder mehrere davon auswählen.

          mehr Info gibt's da:
          http://www.mysql.com/doc/de/SET.html
          hopka.net!

          Kommentar


          • #6
            Original geschrieben von TobiaZ
            Relationstabelle

            was meinst du genau damit?

            Danke übrigens an Hopka, ich habs mir angeguckt und das ist genau so wie ich es machen wollte, nur das der MySQL alles für mich erledigt

            Kommentar


            • #7
              Original geschrieben von ment
              Danke übrigens an Hopka, ich habs mir angeguckt und das ist genau so wie ich es machen wollte, nur das der MySQL alles für mich erledigt
              Freut mich. Bitteschön
              Ich bin auch immer wieder erstaunt, wieviele Sachen, die man selber bauen will schon von vornerein existieren
              hopka.net!

              Kommentar


              • #8
                Gib das Wort mal in der Forumssuche ein.

                Müller | NRW
                Müller | BW
                Meier | SH
                Meier | SA
                Meier | BW

                sagt aus, dass müller in BW und NRW aggiert, Meier in SH, SA und BW

                Kommentar


                • #9
                  Vom Datenbankdesign wäre folgende Lösung am saubersten und entspräche einer relationellen Datenbank:

                  Code:
                  Tabelle  User:
                  userID       name               ...
                  -------------------------------------------------------
                  1               müller
                  2               heinz
                  3               meier
                  4               mustermann
                  
                  Tabelle Länder:
                  landID      Name
                  -------------------------------------------------------
                  1              Deutschland
                  2              Schweiz
                  
                  Tabelle Bundesländer (Oder Landteile):
                  blandID    landFID    Name
                  ------------------------------------------------------
                  1              1              Bayern
                  2              1              Sachsen
                  3              2              irgendwo i.d. Schweiz
                  
                  
                  Tabelle user_bland (verbindet user mit land)
                  userID     blandID
                  ------------------------------------------------------
                  1              2
                  1              1
                  1              3
                  2              3
                  3              1
                  4              3
                  4              1
                  Wie gesagt vom DB Design am besten. Die Verwaltung hingegegen ist nicht ganz so einfach.

                  Kommentar


                  • #10
                    Deine Bitlösung ist cool, ich weiß aber nicht ob mySQL mit so Bitoperationen umgehen kann und wenn ja, ob dass noch besonders performant ist. Webstar85's Lösung dürfte die sauberste sein.

                    Kommentar


                    • #11
                      Webstars DB Strucktur finde ich eine gute Lösung........du solltest am besten die nehmen.
                      [color=blue]MfG Payne_of_Death[/color]

                      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
                      [color=red]Merke:[/color]
                      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

                      Murphy`s Importanst LAWS
                      Jede Lösung bringt nur neue Probleme
                      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
                      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

                      Kommentar

                      Lädt...
                      X