denkanstoß für eindeutige tabelle

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

  • denkanstoß für eindeutige tabelle

    hallo,

    also ich will eine tabelle erstellen für ein Onlinegame. Ich habe den Code so wies mir gedacht habe geschrieben, und würde gerne wissen ob der für das was ich mit der Tabelle machen will genügt, oder ob er sogar falsch ist.

    also der code:

    Code:
    create table k1
    (
    	landnummer    SMALLINT(4)not null,
     	nickname    varchar(30),
                    Stärke	double(15,2),
    	Datum		date,
    	Autor		varchar(30),
    	index (landnummer),
                    unique (landnummer)
    
    );
    also der sinn ist:
    es gibt Länder, jedes Land hat eine Nummer, die nur einmal vergeben ist. Beginnend mit 1. Ein Spieler kann auch mehrere Länder besitzen.
    Also muss jede Zeile eindeutig einer Landnummer zugewiesen sein.

    ist das so richtig, oder muss ich noch was mit auto_increasment anstellen, und was macht das eigentlich? (also es erhöht immer einen wert um 1, das ist mir schon klar^^)

    aber die Länder werden ja auch willd durcheinander eingegeben, sollen vom user selbst aktualisiert werden können.

    Ich wäre über eine kleine hilfe, die mci hi ndie richtige richtung lenkt sehr dankbar
    mfg novaner

  • #2
    hmm,

    haste schon mal was von ... ähm, er-modelling gehört? entity-relationship heißt glaub ich ... also der bezug der 'einheiten' zueinander

    dein spieler ist eine 'einheit', wie ein land eine 'einheit' ist .. die beziehung zwischen denen kannst du darstellen und so mußt du die tabellen aufbauen!

    spieler (1,1) <--> (1,n) länder

    ein spieler kann 1(eigentlich 0?) bis n länder besitzen, ein land kann nur von einem (eigentlich auch 0) spieler besetzt sein ...

    tabelle spieler
    tabelle länder
    tabelle relation_land_spieler

    so würde ich das machen.
    Die Zeit hat ihre Kinder längst gefressen

    Kommentar


    • #3
      dann bräuchte ich ja 3 tabellen :-|
      ne das wäre doof, ich habe nur eine datenbank zur verfügung, und da müssen schon 5 tabellen für 5 Kontinente rein, mit deiner methode wären es schon 15 tabellen in einer datenbank.

      bevor ich mich weiter mit deiner methode beschäftige, wäre denn mein script richtig, oder haut das nciht hin? und muss da noch nen auto_increamentwert gesetzt werden?

      cya novaner

      Kommentar


      • #4
        du brauchst auch nicht pro kontinent ne tabelle. was sollte das denn rechtfertigen?

        du hast keinerlei ahnung vom tabellen-design, oder? *g
        na, wenigstens haste interesse ...

        bevor ich mich weiter mit deiner methode beschäftige
        das ist nicht meine methode, ist afaik die standard-vorgehensweise ...

        es geht vorallem darum, redundanz (informationslose information^^) zu vermeiden.

        wenn du wissen willst, ob der code funktioniert, teste ihn
        Die Zeit hat ihre Kinder längst gefressen

        Kommentar


        • #5
          naja hatte noch nie was mit mysql zu tun, und brauchs jetzt aber und bin doch etwas überfordert vo nder fülle der möglichkeiten ^^

          naja wie in jedem online-spiel (meistens) ist eine land nummer so gegeben:

          1:323
          2:245
          3:1023
          4:5753
          5:12

          und da wusste ich nich wie ich das anders lösen kölnnte als 5 tabellen zu erstellen, je eine mit welt1, welt 1 usw.
          wo ich dann die landnummer simpel runter laufen hätte lassen ^^

          wüsste gar nich wie ich das alles in eine tabelle pressen sollte, oder ... mom.... einfach noch ne spalte mit kontinent danebensetzen

          dann wäre aber die landnummer kein index mehr... dann müsste ich kontinent und Landnumemr zusammenfassen als unique, oda?

          Kommentar


          • #6
            einfach noch ne spalte mit kontinent danebensetzen


            dann müsste ich kontinent und Landnumemr zusammenfassen als unique, oda?
            nicht unbedingt. du legst doch (vorher) die zuordnung fest, eine einmalige einstellung. damit kannst du doch entscheiden, ob und wo. natürlich wärs sinnvoll, wenn ein land nur auf einen kontinent wäre.

            tabelle kontinente (id, name, weitere daten des kontinents)
            tabelle länder (id, id_kontinent, name, ...)
            tabelle spieler (id, name, ...)
            tabelle spieler_hat_land (id, id_spieler, id_land)

            hier muß irgendwo ein sticky über JOINS rumschwirren, den wirst du brauchen *g

            edit: naja, im rl gibst ja auch länder, die auf zwei kontinenten liegen ...
            edit: beim einzigen online-spiel, daß ich spiele, gibst (noch) keine länder *g
            Die Zeit hat ihre Kinder längst gefressen

            Kommentar


            • #7
              also 2 sachen die mir dabei irgendwie noch unlogischeinscheinen:

              1.
              tabelle kontinente (id, name, weitere daten des kontinents)
              tabelle länder (id, id_kontinent, name, ...)
              warum soll ich ne extra tabelle machen für Kontinent, wenns doch nur 5 werte(1-5) sind. und die dann extra nochmal "verlinken" mit der anderen tabelle

              2. wenn jemand updatet und das land ist schon in der lsite z.b. 2:333
              dann legt er das doch einfach neu an, weil man nach der methode nicht key,index,oder unique (oder weiß der teufel^^) benutzt hat

              Kommentar


              • #8
                Original geschrieben von Novaner
                1.
                warum soll ich ne extra tabelle machen für Kontinent, wenns doch nur 5 werte(1-5) sind. und die dann extra nochmal "verlinken" mit der anderen tabelle
                Dann erklär doch mal wie du das sonst lösen willst? Du musst die Länder ja irgendwie einem Kontinent zuordnen ... und dass 5 Tabellen Schwachsinn sind, wurde ja auch schon festgestellt .
                Aus deinem Satz lese ich heraus, dass du das irgendwie mit einer Tabelle machen willst. Dann bliebe also nur die Möglichkeit, zu jedem Land noch den zugehörigen Kontinentnamen einzutragen. Schön und gut ...
                Aber stell dir mal vor du willst noch weitere Angaben zu einem Kontinenten machen (Größe, Religion, Sprache, was weiss ich .. irgendwas halt). Das darfst du dann auch in JEDEM Land, das zu diesem Kontinent gehören soll eintragen .. und wenn du dann fertig bist, fällt dir auf, dass du im Kontinentennamen einen Rechtschreibfehler drin hast --> wieder alle Länderdatensätze durchgehen und den Fehler berichtigen (und genau die Tatsache, dass du dieselben Infos hunderte Mal eintippen musst, nennt man Datenredundanz, und die will man vermeiden).

                Also legt man eine Tabelle mit den 5 Kontinenten und allen ihren Daten an. Jeder Kontinent hat einen tollen Primärschlüssel. Danach legt man seine Ländertabelle an und schreibt zu jedem Land einfach den Primärschlüssel des zugehörigen Kontinents rein .. und schon sind die miteinander verknüpft. Kommt es nun zu Änderungen beim Kontinent, musst du diese nur einmal durchführen.


                und zu 2. *fast vergessen*:
                ich würde dann auch die Kontinent-id und Land-id zu einem Key zusammenfassen ...
                Zuletzt geändert von Big Chief; 21.07.2004, 09:24.
                [color=red]Geht nicht[/color] ist keine Fehlermeldung

                Kommentar


                • #9
                  also 1. mei ncode funktioniert, grad getestet ^^
                  2. aber zum kontinent sollen keine weiteren infos ^^ nur eine zahl zwischen 1-5.

                  ich werde mir ersteinmal erarbeite wie ich die tabellen genau miteinander verknüpfe, davon hab ich noch weniger schimmer als vom rest ^^

                  danke an alle die mir bis hierher geholfen haben ;-)

                  Kommentar


                  • #10
                    na dann hast du recht ... wenn dein Kontinent eh nur aus einer Zahl besteht, kannst du dir die zweite Tabelle auch sparen
                    [color=red]Geht nicht[/color] ist keine Fehlermeldung

                    Kommentar

                    Lädt...
                    X