Startseite ¦  was ist neu ¦  programmier tips ¦  indy artikel ¦  intraweb artikel ¦  informationen ¦  links ¦  interviews ¦  sonstiges
kylix ¦  tutorials ¦  online shop ¦  fotos ¦  Add&Win Gewinnspiel


Willkommen Gast. Bitte einloggen oder registrieren.
20.05.2013, 00:03:14
Übersicht Hilfe Suche Einloggen Registrieren

+  SwissDelphiCenter Forum
|-+  German Forums
| |-+  Datenbank Forum
| | |-+  Datenbank-Modellierung
« vorheriges nächstes »
Seiten: [1] Drucken
Autor Thema: Datenbank-Modellierung  (Gelesen 3118 mal)
Thomas01
Newbie
*
Offline Offline

Beiträge: 2


« am: 06.10.2008, 16:56:05 »

Hallo,

ich habe mich mit Datenbanken und Datenbanken-Modellierung auseinandergesetzt (Vermeidung Redundanzen, Normalisierung usw.), aber mir ist noch immer unklar, wie ich bei der Modellierung vorgehen muss bzw. soll.


Ich habe mir folgendes überlegt, eine Fussball-Datenbank mit folgenden Attributen:

GameID = PrimaryKey
Liga/Turnier
HeimManschaft
AuswärtsManschaft
Spielminute
HeimManschaftTore
AuswärtsManschaftTore


Gruß
Thomas
Gespeichert
grenzgaenger
Global Moderator
Full Member
*****
Offline Offline

Beiträge: 232


« Antworten #1 am: 06.10.2008, 21:44:16 »

sind das deine ganzen informationen, welche du verwalten möchtest?  ich kenn mich zwar in FB nicht aus, aber ich vermute, dass hier die Heimmanschaft und auswärtsmanschaft öfter spielen werden. was machst du dann, wenn sich von dennen ein name ändert oder wenn du dich bei der eingabe vertippst.. ist das nun eine andere manschaft? falls nicht, solltest du das prüfen, am bestern mit einer prüftabelle (PT = {@ID; MName}, und shcön ändert sich dein aufbau .. in FDB = {@GID; Liga/Turnier; HM_ID; AM_ID; Spieleminute; HM_Tore; AM_Tore} mit den Tabellen PT und FDB. wie sieht das aus, mit den Ligas/Turnieren? sind die einmalig oder können diese wiederholt werden? und schon fängt das ganze von vorne an...

mit diesem vorgehen, beseitigst du wiederholungsgruppen und lagerst relationen in eigene tabellen aus, welche es dir erleichtern konsistenz in deiner DB zu halten, dafür hast an anderer stelle etwas mehr zu tun.

<HTH> hoffe, das hilft den einstieg in die normalisierung zu finden 1 NF, 2 NF, 3 NF ... aber das reicht dann auch schon, sonst normaliserst du dir noch inkonsistenzen ein ... ;-) . in aller regel sollte bereits 2 NF genügen.

Grüsse
GG
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #2 am: 07.10.2008, 11:53:31 »

Hi Thomas,

Bei welchem Prof./Lehrer bist Du?
Deine "Hausaufgaben" können wir nicht für Dich lösen.

Wohl und gerne aber würden wir Dich unterstützen, wenn Du konkrete(re) Fragen hast.
Dazu wäre allerdings etwas mehr "Eigenleistung" (inkl. mehr details) nötig...

Gruss,
Loïs
Gespeichert

Prof.Y
Arpoon
Thomas01
Newbie
*
Offline Offline

Beiträge: 2


« Antworten #3 am: 07.10.2008, 13:13:17 »

Hallo,

@Loïs: bin bei keinem Prof./Lehrer. Ich bin bloß ein Hobbyprogrammiere. Für eine Lösung bin ich zwar sehr dankbar, bin aber vorallem für das Wissen und das Verstehen dankbarer und vorallem nützlicher.

Meine gedanken bzw. meine Ansetze:

1. Tabelle
TeamID = PK
TeamName

2. Tabelle
LigaID = PK
LigaName

3.Tabelle
GameID = PK
Liga = mit LigaID verknüpfe?
HeimManschaft  = mit TeamID verknüpfe?
AuswärtsManschaft  = mit TeamID verknüpfe?

4.Tabelle
TimeID = PK
GameID = FK? (oder TimeID und GameID = zusammengestzter Schlüssel = PK)
Spielminute
HeimManschaft_Tore
AuswärtsManschaft_Tore

Ich weiß jetzt nicht ob es so funktionieren könnte oder kann?
Vor allem bei den ? bin ich mir unsicher.

Wenn's geht bitte Fehler oder Lösungen begründen, warum das so gemacht werden muss oder nicht darf.

Gruß
Thomas
Gespeichert
Loïs Bégué
Global Moderator
Hero Member
*****
Offline Offline

Beiträge: 1718



WWW
« Antworten #4 am: 08.10.2008, 16:31:11 »

Bärfekt... ich meine die Erläuterungen :)
Und auch Dein Ansatz scheint ganz OK imho : Ich würde "Ja" zu allen "?" sagen.

Anmerkung(en):
X. Tabelle => TeamID + LigaID + "Saison" (Jahr) wegen auf- bzw. Absteiger...
3. Tabelle => dazu noch "Start time", "Verlängerungszeit", ..., "Endstand" (wobei ein Spiel u.U. vertagt werden könnte.... oder gar ganz ausfällt?)
4. Tabelle => wenn's 'n Tor Tabelle ist, dann "TorID" statt "TimeID" und ;) Dann dazu noch Spieler der Mannschaften eintragen d.h.
5. Tabelle => Spieler
6. Tabelle => "Einwechslungen"
7. Tabelle => "Rote/Gelbe Karten"
8. Tabelle => Schirries ;)


oder
4. Tabelle = "Spiel-Event" mit einem Timestamp und nur eine Mannschafts.ID (FK)
5. Tabelle = "Event-Typen" (Tor, Rote Karte, Einwechselung...)


oder ... oder ... oder ...
Gespeichert

Prof.Y
Arpoon
grenzgaenger
Global Moderator
Full Member
*****
Offline Offline

Beiträge: 232


« Antworten #5 am: 08.10.2008, 20:57:43 »

kommt drauf an ...

aber mal zu deinen tabellen, werde sie hier nicht "2. tabelle" nennen sondern einfach T2

T1: scheint mir ganz i.O. zu sein, aber ein paar dimensionen würd ich noch anfügen... ;-)

T2: scheint i. O. aber was machst du z.b. wenn sich ein tournier z.b. mal wiederholen sollte, z.b. in einem anderen jahr? schon durchdacht?

T3: hier scheint mir die zeitliche komponente zu fehlen. ausserdem hast du hier eine redundanz ... HM und AM sind ja identisch... hier ggf. in eine eigene relation ausgliedern ... so hast du zwar einen einfacheren zugriff beim programmieren mit standardkomponenten, hast aber etwas mehr mühe bei spezifischen abfragen. hier könntest dir so eine tabelle auch mit einer view realisieren.  :rolleyes:

T4: hier gilt das wie zu T3 gesagt. auch hier ist die redundanz HMT zu AMT

wenn du dir nicht sicher bist, zeichne dir doch die tabellen mal kurz auf, mit ein paar beispieldaten... und versuche dir die abfragen, welche du haben möchtest zu formulieren und schau auf den output... :-)

<HTH> GG
Gespeichert
Seiten: [1] Drucken 
« vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC Prüfe XHTML 1.0 Prüfe CSS