PMG/Kurs 1214/DB Beleg/Sebastian

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
'''Pass bitte auf, dass die DB nicht zu umfangreich wird (Zeitaspekt)'''

=Ziel der Datenbank=

Diese Datenbank dient zur Strukturierung der Vereine mit ihren Abteilungen und Spielern. Die Datenbank könnte in Online-Portalen Anwendung finden, wie es auch schon beispielsweise transfermarkt.de gibt, oder sie könnte auch zur zentralen Datenverwaltung von mehreren Vereinen dienen.


=ERM=
*hier das ERM zur DB:[[Bild:14-geier-sebastian_DB-Beleg_ERM.jpg|300px]]
*und zur besseren Übersicht noch bunt:[[Bild:14-geier-sebastian_DB-Beleg_ERM_bunt.jpg|300px]]

=RM (zu erstellende Tabellen)=

*Verein ('''V_ID''', Vereinsname, Ort, Straße, Gründungsdatum, Präsident_Vorname,Präsident_Nachname, ''L_ID'')

*Mitglied ('''M_ID''', Vorname, Nachname, PLZ, Ort, Straße, Geb.-datum)

*Liga ('''L_ID''', Liganame, Ligastufe, Land)

*Spieler ('''Spieler_ID''', Vorname, Nachname, Geb.-datum, ''V_ID'')

*Abteilung ('''A_ID''', Name, Vorsitzender_Vorname, Vorsitzender_Nachname, ''Sportart_ID'')

*Sportart ('''Sportart_ID''', Name)

*Verein – Abteilung (''V_ID'', ''A_ID'')

*Verein – Mitglied (''V_ID'', ''M_ID'')

=Erläuterungen zu den Modellen=

*Normalformen
**ENF - Jede Spalte enthält nur eine Information, beispielsweise die Trennung von Vorname und Nachname bei Präsident, Vorsitzender und Mitglied. Auch Ort und Straße sind getrennte Attribute.
**ZNF - Jedes Attribut ist eindeutig einem Primärschlüssel zugeordnet, bei meiner Datenbank hat jede Entität genau einen Primärschlüssel (eine ID).
**DNF - Jedes Attribut hängt direkt vom Primärschlüssel ab, nicht von einem Nicht-Schlüssel-Feld. So sind alle Attribute von der jeweiligen ID abhängig.

*Kardinalitäten
**1:1 - bei mir nicht vorhanden
**1:n - Beispielsweise hat ein Verein mehrere Spieler, ein Spieler spielt aber nur bei einem Verein. Oder eine Liga hat mehrere Vereine, ein Verein spielt aber nur in einer Liga.
**n:m - Es hat ein Verein mehrere Abteilungen, eine Abteilungsart kann aber auch bei mehreren Vereinen vorkommen. Auch hat ein Verein mehrere Mitglieder, eine Person kann aber auch Mitglied in mehreren Vereinen sein.

*RM
**Bei einer 1:n-Beziehung wie Verein-Spieler wurde der Primärschlüssel der ersten Entität (V_ID) als Fremdschlüssel in die zweite Entität (Spieler) eingefügt.
**Bei den n:m-Beziehungen wie Mitglied-Verein wurde jeweils eine eigene Tabelle mit den Primärschlüsseln der beiden Entitäten als Fremdschlüssel erstellt.


=Datenbank=
<code id="52dcdf16795a2">
DROP TABLE IF EXISTS Verein;
CREATE TABLE Verein (
  V_ID varchar(255),
  Vereinsname varchar(255),
  Ort varchar(255),
  Straße varchar(255),
  Gründungsdatum varchar (255),
  Präsident_Vorname varchar (255),
  Präsident_Nachname varchar (255),
  L_ID varchar (255),
  PRIMARY KEY  (V_ID)
); 

DROP TABLE IF EXISTS Mitglied;
CREATE TABLE Mitglied (
  M_ID varchar(255),
  Vorname varchar(255),
  Nachname varchar(255),
  PLZ varchar (255),
  Ort varchar(255),
  Straße varchar(255),
  Geburtsdatum varchar (255),
  PRIMARY KEY  (M_ID)
); 

DROP TABLE IF EXISTS Liga;
CREATE TABLE Liga (
  L_ID varchar(255),
  Liganame varchar (255),
  Ligastufe varchar (255),
  Land varchar (255),
  PRIMARY KEY  (L_ID)
); 

DROP TABLE IF EXISTS Spieler;
CREATE TABLE Spieler (
  Spieler_ID varchar(255),
  Vorname varchar(255),
  Nachname varchar(255),
  Geburtsdatum varchar (255),
  V_ID varchar (255),
  PRIMARY KEY  (Spieler_ID)
); 

DROP TABLE IF EXISTS Abteilung;
CREATE TABLE Abteilung (
  A_ID varchar(255),
  Name varchar(255),
  Vorsitzender_Vorname varchar (255),
  Vorsitzender_Nachname varchar (255),
  Sportart_ID varchar (255),
  PRIMARY KEY  (A_ID)
);

DROP TABLE IF EXISTS Sportart;
CREATE TABLE Sportart (
  Sportart_ID varchar(255),
  Name varchar(255),
  PRIMARY KEY  (Sportart_ID)
);

DROP TABLE IF EXISTS Verein - Abteilung;
CREATE TABLE Verein - Abteilung (
  V_ID varchar(255),
  A_ID varchar(255),
);

DROP TABLE IF EXISTS Verein - Mitglied;
CREATE TABLE Verein - Mitglied (
  V_ID varchar(255),
  M_ID varchar(255),
);

INSERT INTO Verein VALUES ();
INSERT INTO Verein VALUES ();

INSERT INTO Mitglied VALUES ();
INSERT INTO Mitglied VALUES ();

INSERT INTO Liga VALUES ();

INSERT INTO Spieler VALUES ();
INSERT INTO Spieler VALUES ();
INSERT INTO Spieler VALUES ();
INSERT INTO Spieler VALUES ();
INSERT INTO Spieler VALUES ();

INSERT INTO Abteilung VALUES ();
INSERT INTO Abteilung VALUES ();

INSERT INTO Sportart VALUES ();
INSERT INTO Sportart VALUES ();
</code>
<run id="52dcdf1679623">
</run>