2016-05-23 5 views
1

Für die Schule erstelle ich eine Deckbuilder-Website basierend auf Magic the Gathering. Es ist das Projekt, das entscheidet, ob ich meinen Abschluss mache oder nicht. Trog der Website von Deckbrew ich in der Lage sind Daten zu erhalten wie folgt aus:SQL Datenbank für Magic Cardgame

[ 
     { 
     "name": "About Face", 
     "id": "about-face", 
     "url": "https://api.deckbrew.com/mtg/cards/about-face", 
     "store_url": "http://store.tcgplayer.com/magic/urzas-legacy/about-face", 
     "types": [ 
      "instant" 
     ], 
     "colors": [ 
      "red" 
     ], 
     "cmc": 1, 
     "cost": "{R}", 
     "text": "Switch target creature's power and toughness until end of turn.", 
     "formats": { 
      "commander": "legal", 
      "legacy": "legal", 
      "vintage": "legal" 
     }, 
     "editions": [ 
      { 
      "set": "Urza's Legacy", 
      "rarity": "common", 
      "artist": "Melissa A. Benson", 
      "multiverse_id": 12414, 
      "flavor": "The overconfident are the most vulnerable.", 
      "number": "73", 
      "layout": "normal", 
      "price": { 
       "low": 0, 
       "average": 0, 
       "high": 0 
      }, 
      "url": "https://api.deckbrew.com/mtg/cards?multiverseid=12414", 
      "image_url": "http://mtgimage.com/multiverseid/12414.jpg", 
      "set_url": "https://api.deckbrew.com/mtg/sets/ULG", 
      "store_url": "http://store.tcgplayer.com/magic/urzas-legacy/about-face" 
      } 
     ] 
     } 
    ] 

Es ist offensichtlich, dass es im JSON-Format ist. Ich habe den Weg gefunden, dies in Objekte umzuwandeln und die Struktur des Projekts ist 4-Layer-MVC mit Entity-Framework und C#, die (irgendwie) funktioniert ... Das Problem ist die Datenbank. Ich arbeite jetzt seit 2 Monaten daran und komme nicht weiter. Die Sache, an der ich festhalte, ist die Datenbank. Ich habe nicht viel darüber gelesen, wie man Datenbanken erstellt, und dort läuft es schief. Ich bekomme nicht, wie man die Datenbank baut. Die Erstellung selbst würde funktionieren, wenn ich herausfinden würde, wie man bestimmte Dinge einbezieht ...

1) Formate: Wenn die Karte in einem Format legal ist, wird Formate mit: "Legacy": "Legal", "Commander" gefüllt : "legal", ... also nur die legalen Formate sind enthalten.

2) Typen und Farben sind nur einfache Wortreihen, aber da ich sehr schlecht mit Datenbanken bin, weiß ich nicht einmal, wie ich das herausfinden soll.

3) Editionen ist etwas ganz anderes. Es ist ein Array des Objekts Edition, das meiner Meinung nach eine eigene Tabelle haben muss. Das Problem hier ist, dass ich dachte, dass ich einen fremden Schlüssel verwenden müsste, aber da es eine Reihe von Editionen ist, weiß ich auch nicht wirklich, wie ich damit anfangen soll.

4) und dann gibt es Preis: Es hat immer 3 Werte: niedrig, durchschnittlich und hoch, die 0 sein können, wenn kein Preis bekannt ist.

Also hier haben Sie es. Für mich ist diese Datenbank sehr komplex oder vielleicht mache ich es zu komplex. Gibt es irgendjemanden, der mir helfen kann, diese Datenbank zu organisieren, damit ich mit meinem Projekt weitermachen kann, weil ich in dem Moment so verloren bin, dass ich denke, dass ich das Ende nächsten Monats nicht fertig bekommen werde und das würde schrecklich sein.

+0

Hasse es zu sagen, aber deine Fragen sind WIRKLICH einfach - vielleicht solltest du keinen Abschluss machen (es sei denn, der Grad bedeutet "Inkompetenter Anfänger"). Ihnen fehlt etwas an Datenbanken (was der wichtigste Teil außerhalb der Spieleprogrammierung ist - so ziemlich jede Arbeit in einem Unternehmensprogramm hat etwas mit einer Datenbank zu tun). Die Datenbank ist trivial. – TomTom

+0

Guter Punkt. Fing an, mir diese Frage auch zu stellen ...Danke trotzdem, dass du das gelesen hast. Ich werde noch ein paar Datenbank Design Artikel lesen oder so. – JanVanHaudt

+0

Es stimmt auch, was du sagst. Ich bin nicht darauf aus, Backend zu machen. Ich bin 40 Jahre alt, war früher ein Anstreicher und jetzt versuche ich, das zu tun, was ich seit über 15 Jahren machen wollte. Ich habe mich während des Kurses oft selbst gezweifelt und wollte oft aufgeben, habe es aber nicht getan. Ich habe bemerkt, dass ich sehr gut im Front-End bin und Webseiten entwerfe. Ich weiß, dass das für die meisten Leute dumm klingen muss, aber deshalb werde ich dieses Projekt so gut wie möglich beenden. Es ist sehr schwer für mich, und ich weiß, dass es nicht so sein sollte. Wie auch immer, zumindest jetzt weiß ich, dass ich mehr nachsehen und noch mehr tun sollte als jetzt. – JanVanHaudt

Antwort

1

1: Nein, Sie sollten alle einschließen.

2: Tabelle mit Farben, Standard m: n Bindetisch dazwischen Zuordnung der Kartentabelle mit der Farbtabelle. Nicht zu wissen, wie man eine m: n-Beziehungs-Sache macht, bringt mich dazu, dass man alle Klassen überspringt ... das ist grundlegend und grundlegend.

3: Scheint wie "cardedition" ist die Haupttabelle tatsächlich, und alles vor ist eine Master-Typ Tabelle. Nicht sicher - ich mag überhaupt keine Magie, deshalb fehlt mir das, was Domänenwissen heißt. Werden Karten geändert, so dass mehrere Ausgaben existieren? Warum ist das ein Array in JSON?

3: magische Werte, 0,1,2,3. Was ist die Frage?

Für mich ist diese Datenbank ist sehr komplex

Das letzte Mal, dass ich eine „Komplex“ Datenbank vor mir hatte, ich Änderungen an einen kleinen db mit 800 Tabellen machen musste. DAS ist komplex. Du fängst von vorne an (macht es einfacher) und hast vielleicht 10 oder mehr Tische. Geh Schritt für Schritt. Folge dem, was du gelernt hast, gehe zur 3. Normalform und gehe relational.

+0

3) Edition ist das Set, in dem es herauskam. Eine Karte kann mehrere Editionen haben, so etwas wie ein Nachdruck. 4) ist der Preis. Es hat 3 Werte. Zum Beispiel: niedrig: 3,40, durchschnittlich 4,00 und hoch 5,10 oder so. Sollte Price eine eigene Tabelle haben? – JanVanHaudt

+0

Welche ist nur relevant, wenn die Karten ändern. Aber in diesem Fall ist die "Karte" nur ein Platzhaltereintrag, und bei der Kartenausgabe werden die realen Daten gespeichert. Das passiert. – TomTom