ER-Modell Frage zu Tabelle

u_w

Grünschnabel
Hallo zusammen,

Ich bin gerade dabei ein ERM für eine Datenbank zu erstellen.

In der Datenbank möchte ich Magickarten abspeichern können.

Eine Magickarte hat immer eine Farbe (entweder Grün, Rot Blau, Schwarz, Weiß oder Farblos) ABER es gibt auch Karten die aus zwei, drei oder mehr Farben bestehen.

Da zwischen den Tabellen(Entitätstypen) Magickarte und Farbe eine n:m-Beziehung besteht, habe ich noch eine dritte Tabelle Kartenfarbe eingefügt, um die n:m-Beziehung in zwei 1:n-Beziehungen aufzulösen.

Hier eine kleine Skizze:

[Magickarte] 1---<>---n [Kartenfarbe] n---<>---1 [Farbe]


! Jetzt kommt das eigentlich Problem:

Zusätzlich zu der Farbe, hat jede Karte auch noch bestimmte Kosten(MANAKOSTEN), (sozusagen die Farbkosten um die Karte zu spielen, die ergeben sich auch aus den Farben)

Hier können alle Möglichen Kombinationen auftreten z. B.:
- zwei Grüne mit einem Farblosen
- ein Grünes, ein Blaues, zwei Schwarze
- nur Farblos
- drei Blaue usw.

Ich weiß einfach nicht wie ich die Tabelle Kosten (Manakosten) in mein ERM hineinbekomme, bzw. wo hin. Evtl. brauch ich ja eine ganz neue Beziehung zu der Tabelle Magickarte, oder bekomm ich das noch irgendwie zwischen Tabelle: Kartenfarbe oder Farbe****?

Ich persönlich bin komplett ratlos, zerbreche mir schon Tage den Kopf darüber.

Ich wäre echt sehr dankbar, für jede Hilfe! Vielleicht seh ich den Wald vor lauter Bäumen ja nicht mehr : )

Liebe Grüße u_w
 
Ich weiß nicht, ob ich das ganz verstanden habe aber ich versuchs mal.

Eine Karte kann x Farben haben. So wie ich das deute hat jeder einzelne dieser Farbanteile dieser Karte einen bestimmten Kostenanteil für diese spezielle Karte.
Bin ich soweit richtig? Wenn ja dann ist die Lösung ganz einfach, du musst der Beziehung einfach das Attribut Kosten hinzufügen, dann ist es halt keine simple Beziehung mehr.

Konnte ich dir damit helfen?

Gruß
Matt
 
Das mit der Farben-Kosten Beziehung ist mir auch noch etwas unklar.

1) Wenn eine Karte die Farben Rot und Blau hat, welche Kosten hat man dann?
2) Wie ist es bei Schwarz, Durchsichtig und Grün?

zu 1) Muss man dann eine rote und eine blaue Farbkarte spielen?
zu 2) Muss man dann eine schwarze, eine durchsichtige und eine grüne Farbkarte spielen?
Wenn beides zutrifft, dann sind Farben und Kosten ja eigentlich äquivalent?
 
Hallo, danke das ihr euch gemeldet habt.

Ich versuche es nochmal besser zu erklären. Ich verwende dazu ein paar link, ich hoffe, dass es ok für euch ist.

Während jedes Zuges kann man ein Land ausspielen.

Wenn man die Länder (bzw. das Land) "tappt", bedeutet das, man dreht die Karte von horizontaler nach vertikal Position. Bekommt man dafür ein MANA.

Welche Farbe dieses MANA hat, hängt davon ab, was für ein Land es war. Eine Ebene ist Weiß, ein Wald ist Grün, ein Sumpf ist Schwarz, ein Insel ist Blau und ein Gebirge Rot. Es gibt auch Länder namens Kapelle, die z.B. ein Farbloses MANA geben können.

Jede andere Magickarte, (die Länder ausgenommen) ist ein Zauberspruch, einer bestimmten Farbe (es gibt eben auch Karten die Mehrfarbig sind).

Um die Karten zu spielen(also ins spiel zu bringen) muss man soviele Länder "tappen" wieviel MANA die Karte kostet.

hier ein paar Beispiele: (Die Manakosten der Karten stehen ganz oben, rechts auf der Karte, rechts vom Kartenname der ganz oben links steht )


http://magiccards.info/avr/de/208.html
Diese Karte kostet insgesamt 6 MANA, davon müssen aber 1 Blau, 2 Weiß, 3 Farblos sein.
Bedeutet: ich muss 1 Insel tappen für Blau, 2 Ebenen für Weiß und bei den 3 Farblosen, ist es völlig egel, was ich dafür nehme.(es können 3 rote, 1schwarzes 2 blaues oder auch 1grünes 2 farblose usw.)

Weil die Karte 1 Weißes und 2 Blaue braucht, (es ist genau vorgegeben was sie braucht) hat diese Karte die Farbe Blau/Weiß.

nächstest Beispiel:

http://magiccards.info/avr/de/209.html

Die Karte kostet insgesamt 7 MANA, 1 Rotes, 2, Weiße, Rest egal!
also hat sie die Farbe rot/weiß

In der Regel sind die Karten einfabig wie hier:

http://magiccards.info/avr/de/199.html

Kostet insgesamt 3 MANA, 1Wald, Rest egel
Kartenfarbe = Grün

Daher denke ich, das ich Manakosten und die Kartenfrabe von einander abhängig sind, weil die Farben ja für beides bestimmend sind. (evtl. hab ich ja auch den falschen denkanstatz)

Ich hoffe, ich konnte es euch dadurch besser verdeutlichen.

Falls nicht, Fragt einfach nochmal nach, ich kann auch noch weiter beispiele bringen.

Vielen Dank, dass ihr euch die Zeit nehmt, mir zu helfen.

lg u_W
 
Zuletzt bearbeitet:
Wenn Du mit der DB die Karten nur verwalten willst, ist es eigentlich egal, ab farbloses Mana mit rot, grün, blau, weiss oder schwarz bezahlt wird.
Hauptsache es wird bezahlt.
Leg also als Dimension rot,blau,schwarz,weiss,grün und farblos an. Dann kannst Du auch nach Karten suchen, die beliebig fabrloses Mana kosten.
Du musst allerdings auch noch beachten, dass es noch weitere Karten mit Sonderheiten gibt:
1) Es gibt Karten, da sind die Kosten nicht klar: (zB Bond of Agony) Hier zahlst Du ein schwarzes und beliebig viele farblose (andere) Mana. Du musst die Dimension also um "x" erweitern.

Du hast also eine Tabelle mit Manakosten:
KartenID (pk)
rot
grün
blau
schwarz
weiss
farblos
x

Über KartenID baust Du die Verbindung zu Deiner Tabelle mit den Kartennamen auf.


Magickarte [KartenID(pk),Name,Beschreibung,Künstler,Edition]

Manakosten[KartenID(pk,fk),weiss,schwarz,grün,blau,rot,farblos,x]

Analog verfährst Du mit der Tabelle für Kartenfarbe:
Kartenfarbe[KartenID(pk,fk),weiss,schwarz,grün,blau,rot,farblos]


Dein ERM wäre dann:
Manakosten 1 - 1 Magickarte 1 - Kartenfarbe

2) Es gibt zB Karten, die Entweder mit rot ODER grün bezahlt werden können (zB Boggart Ram-Gang). Hierfür fällt mir ad hoc keine Lösung ein.
 
Zuletzt bearbeitet:
Nunja, so einfach ist es denke ich nicht.
Theoretisch kann er ja für folgende Karte mehrere Kombinationen nehmen:
Karte x: zwei blau + 3 farblose Manakarten

1. 2blau + 3rot
2. 2blau + 3schwarz
3. 2blau + 3grün
...

da gibt es etliche Kombinationen, so wie ich das verstanden habe. Die Frage ist, ob du nur die Datenbank mit den richtigen Inhalten brauchst - oder ob du später das Ganze z.B. mit PHP steuerst. Dort kannst du natürlich dann schon eine einfachere Lösung verwenden. Aber ansonsten brauchst du eigentlich eine Tabelle, wo alle Kombinationen drin stehen ... und das sind sehr, sehr viele.
 
@Lime:
Wenn es nur um eine reine Kartenverwaltung geht, dann durfte es egal sein.
(Zeige mir alle Karten, die zwei Blaue und 3 farblose Mana kosten)
SQL:
select kartenid 
from 
manakosten 
where 
blau='2' and farblos='3'

Will man wissen, welche Manakombinationen man diese spielen kann, wird es tatsächlich komplex. Das sollte dann besser über eine Programmiersprache gelöst werden.
 
Naja, aber sogesehen braucht er eigentlich doch nur eine Tabelle...
Da kommt dann halt alles rein...
Abkürzungen: cc -> card color, mc -> manacosts

cardID - cc_blau - cc_schwarz - cc_rot - cc_grün - cc_farblos - mc_blau - mc_schwarz - mc_rot - mc_grün - mc_farblos

und was halt sonst noch in die Tabelle rein gehört.
Man könnte es zwar splitten, macht aber irgendwo wenig Sinn wenn es eine 1:1 Verbindung ist.
 
Das ist bei mir jetzt zu lange her und im Büro ist es auch zu heiß um drüber nachzudenken, aber vom Gefühl würde ich sagen, dass Dein Ansatz mit der 3ten Normalform kollidieren würde.
Vielleicht widerlege ich mich aber heute abend auch noch ;)
 
Howdy zusammen,

da jetzt schon öfter gefragt worden ist, was ich mit der Datenbank vorhabe. Schreib ich doch kurz ein paar Infos dazu:

Ich möchte mit der Datenbank meine Magickarten abspeichern können. Wenn ich Karten Tausche, erhöhe bzw. verringe ich die Stückzahl oder lege eine neue an.(das ist kein Problem, wenn die DB erstmal fertig ist)

Ich möchte aber auch Karten Suchen können. Wenn ich mir aus meinen Karten ein neues Deck bauen möchte. Z. B. Suche alle Blauen Karten die mehr als 4 Manakosten usw.
!(Daher muss ich abspeichern, wieviel Mana eine Karte kostet.)

Die Anwendung schreibe ich in JAVA. (werde dafür AWT oder Swing als Gui verwenden.

Mir ist föllig egal, wie die Farblosen Manakosten bezahlt werden. Mir geht es nur darum, wie ich für eine Karte die Kosten abspeichern kann.

so würde ich es gerne machen, weiß wie gesagt noch nicht genau, wie ich es umsetzen soll.

z. B. an dieser Karte: http://magiccards.info/avr/de/79.html (2Blau,3Farblose)

Manakosten
============
kostenID(pk)
magickartenID(fk)
Blau
Blau
Farblos
Farblos
Farblos

Es gibt noch viele weiter Magickarten die genau die gleichen Manakosten, wie diese Karte haben:

1 http://magiccards.info/m11/de/60.html
2 http://magiccards.info/m12/de/58.html
3 .....
usw.

Daher besteht zwischen den Tabellen Magickarten und Manakosten ja keine 1:1-Beziehung.
Ansonsten würde man ja die Normaliesierungregel unbeachtet lassen. Da man die geleichen Daten mehrmals abspeichert (oder sehe ich das falsch?)


Nochmal zu dem Beitrag von Lime: das ich alle Kombiniationen in eine Tabelle schreibe.

Wäre es dann nicht effektiver, wenn ich die Tabelle Fraben um folgendes erweiter:

Farbe
1Rot
2Rot
3Rot
4Rot
5Rot
bis 10.

und das für jede Farbe inklusive x:Rot, Blau....usw

weil dann könnte ich es ja wiederum so machen ?

[Magickarte] 1---<>---n [Kartenfarbe] n---<>---1 [Farbe]

ich hoffe damit konnte ich helfen : )

lg u_w
 

Neue Beiträge

Zurück