Carl

Aus ProgrammingWiki

Wechseln zu: Navigation, Suche

Sammelkarten Datenbank mit verschiedenen Karten, Kunden und Interresenten

Inhaltsverzeichnis

Ziel der Datenbank

Diese Karte wurde für 220000$ verkauft

Mit meiner Datenbank möchte ich eine Handelsplatform zwischen Sammelkarten Käufern und Verkäufern schaffen. Ich habe dieses Thema gewählt, da ich in meiner Kindheit selbst Sammelkarten gesammelt habe, heute sammel ich zwar keine Karten mehr, aber mich fasziniert mitlerweile die Preisentwicklung verschiedener Karten und auch die unterschiedlichen Gründe für den Preisverlauf dieser. Zum einen gibt es einen reinen Sammlerwert der Karten (wie wertvolle Kunstwerke o.ä.) und zum anderen haben viele Karten auch einen spielerischen Wert, da bei so gut wie allen Karten ein Spielprinzip dahinter ist und dieses Spiel auch meist professionell gespielt wird und manche Karten durch ihre guten Fähigkeiten allein schon einen hohen Wert haben.

ERM Model

Carl Image.png

Erklärung: Die Unterteilung der physischen und virtuellen Karte ist notwendig, da es sehr viele physische Ableger einer virtuellen Karte gibt und die physischen Karten gleiche Attribute(z.B. Name) haben aber auch unterschiedliche (z.B. Wert).Das Dreieck zwischen Kunde, phy.- und virtuller Karte ist nötig, da

  • -ohne Beziehung zwischen Kunde und phy. Karte nicht klar ist wer diese verkauft
  • -ohne Beziehung zwischen Kunde und vir. Karte nicht klar ist, ob der Kunde Interesse an der Karte hat
  • -ohne Beziehung zwischen phy.- und vir. Karte nicht klar ist, welche vir. Karte die phy. Karte ist

Beziehungen:

  • -Eine phy. Karte gehört zu einer vir. Karte, eine vir. Karte hat mehrere phy. Ableger (1:n)
  • -Eine phy. Karte kann von einen Kunden verkauft werden, ein Kunde kann mehrere Karten verkaufen (1:n)
  • -Ein Kunde kann an einer vir. Karte Interesse haben, eine vir. Karte kann von vielen Kunden gewünscht werden (m:n)
  • -Eine vir. Karte gehört zu einer Marke, eine Marke hat mehrere vir. Karten (1:n)
  • -Eine Marke wird von einem Herausgeber vertrieben, ein Herausgeber kann mehrere Marken vertreiben(1:n)

Relationenmodel

Carl Unbenannt.png

Erklärung:

Die erste Normalform wurde schon im ERM Modell erfüllt (Es sind Attribute, wie der volle Name, schon getrennt). Die Zweite Normalform wurde auch schon teilweise im ERM Modell erfüllt und die m:n Beziehung wurde mit einer Dritten Tabelle zu zwei 1:n Beziehungen Die Dritte Normalform ist auch schon erfüllt, man kann zwar anbringen, dass man den Ort und das Land in eine extra Tabelle macht, da sie sich bedingen, jedoch ist es in der praxis nicht unbeding besser, da viele kleine Orte nur einzelne Kunden haben, und diese dann mit einer extra Tabelle mehr Speicherplatz wegnehmen würden, als wenn die beiden Punkte nicht getrennt würden. Außerdem kann ein Ortsname in verschiedenen Ländern auftauchen. Ansonsten wurden alle 1:n Beziehungen mit einem Fremdschlüssel auf der n Entität übertragen, und 1:1 gab es nicht.

Datenbank

In der Datenbank wurden einige Namen abgekürzt bzw. verändert.

  • physische Karte --> phy_Karte
  • virtuelle Karte --> vir_Karte
  • virtuelleKundenID --> KundenID und ExemplarID

Abfragen

Einfache Abfrage: Es sollen alle Kartenmarken der Spielefirma "Wizards of the Coast" gesucht werden

Mittelschwere Abfrage: Es sollen alle möglichen Physischen Karten angezeigt werden, bei welchen der Nutzer mit der ID "00000" Interesse hat

Schwerere Abfrage: Es soll nach der billigsten physischen Karte gesucht werden, welche ein "Charizard" ist, mindestens einen Zustand von Gut hat und wo der Verkäufer aus Deutschland kommt

kritsche Reflexion

Unnötige Entität: Die Idee hinter dieser Datenbank ist es eine Platform für Sammelkarten Käufer und Verkäufer zu schaffen. Dabei kann der Markenname sehr bei der Navigation durch die Datenbank helfen. Die Entität "Herausgeber" hätte man jedoch wahrscheinlich auch weg lassen können, da sie in der Praxis wohl nicht so häufig gebraucht wird.

ID kann zu groß werden:
Carl Unbenandnt.png

Die ID der physischen Karte ist bei jeder Einzelnen Karte untershiedlich, dass ist bei kleinen Datenmengen kein Problem, jedoch bei größeren Datenmengen könnte dies zu einem Problem werde, so wurde allein letztes Jahr 3,7 Milliarden Pokémon Karten verkauft.[1] Man könnte es so machen, dass die ID der physischen Karte nur spezifisch für die virtuelle Karte ist, damit ist die ID der physischen Karte zwar nicht mehr Einzigartig, jedoch die Kombination von der phyischen Karten ID und der virtuellen Karten ID. Siehe Beispiel

ID Längen sind unzureichent: Die Ids habe Momentan eine Größe von 10^6 bzw 10^5, das ist bei viellen Daten zu wenig und müsste erhöht werden.

Fehlende Attribute: Die wichtigsten Attribute sind schon gegeben, jedoch für einige Werte muss es noch mehr geben(z.B. PLZ bei Kunde oder Rarität bie virtueller Karte)

Variablentypen: Ich habe, bis auf eine Ausnahme, immer den Variablentypen varchar benutzt, dieser verbraucht jedoch vergleichsweise viel Speicher, deshalb wäre eine Spezifizierung in andere Typen wie text oder char() manchmal die bessere Wahl gewesen.

Quellen und Tools

Quellen:


Tools:

Persönliche Werkzeuge