PMG/Kurs 11/D Beleg/Stefanie

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>SQL</language>
==Erstellen einer Datenbank==
<br>
Hier kannst du mitverfolgen, wie eine Datenbank ensteht. Mein Thema: '''Blutspenderkartei'''
<br>
Zur Blustspende gehen jählich rund 4 Millionen Menschen. Diese werden in die Blutspenderkartei aufgenommen. Diese Kartei ist - wie man sich schon denken kann - eine Datenbank. Und wie man eine solche erstellt, werde ich jetzt zeigen.
<br>
<br>
Zuerst erstellen wir ein '''ER-Modell'''('''E'''ntity-'''R'''elationship-Modell). Dazu über überlegen wir zunächst, welche Daten für die Bluspenderdatei wichtig sein könnten.
<br>
<br>Das ER-Modell könnte in etwa so aussehen:
<br>
[[Bild:Corona_Blutspenderkartei_ER.jpeg|left|500px]]
<br>
<br><br><br><br><br><br><br><br><br><br><br><br><br>
Nachdem wir das nun haben, formen wir aus dem ER-Modell Tabellen. Jede Entität wird zur Tabelle, oder auch Relation, jedes Attribut wird zu einer Spalte.
<br><br>
'''Tabelle Spender:''' <br>
{| border="1"
 |-
 |Name || Geburtsjahr || Adresse || Blut
 |-
 |Hans Meier || 1956 || Blumenweg 7, 05678 Auendorf|| AB Positiv
 |-
 |Ilse Meier || 1960 || Blumenweg 7, 05678 Auendorf|| A Positiv 
 |-
 |Maria Schulze || 1973 || Mozartstraße 19, 05496 Himmelreich|| 0 Negativ
 |-
 |Andreas Liebsch || 1988 || Am Bach 21, 05673 Hemmingen|| A Negativ
 |-
 |Michael Goldmann || 1979 || Blumenweg 15, 05678 Auendorf|| B Positiv
|}
<br>
'''Tabelle Krankenhaus:''' <br>
{| border="1"
 |-
 |Name || Adresse 
 |-
 |Stankt Marienstern Krankenhaus|| Liebknechtstraße 22, 05678 Auendorf
 |-
 |Alexander Fleming Krankenhaus|| Kirchhofstraße 9, 05496 Himmelreich
 |-
 |Uniklinikum Hemmingen|| Köhlerweg 5, 05673 Hemmingen
 |-
 
|}
<br><br>
In diesen Tabellen sind jetzt einige Angaben, die man so nicht lassen kann, weil sie nicht '''atomar''' sind. Zum Beispiel ''Adresse'': Angenommen, man will wissen, welche Spender in Auendorf wohnen, ist das nicht möglich, da der Computer das nicht erkennen kann.<br>
Teilt man aber das Attribut ''Adresse'' in ''Straße'' und ''Ort'' auf, ist die Suche möglich. Wenn man alle Daten einzeln stellt, nennt man das die '''erste Normalisierung''' oder '''erste Normalform'''.<br>
<br>
{| border="1"
 |-
 |Vorname || Name || Geburtsjahr || Straße|| PLZ || Ort || Blutgruppe || Rhesusfaktor
 |-
 |Hans || Meier || 1956 || Blumenweg 7 || 05678 || Auendorf || AB || Positiv
 |-
 |Ilse || Meier || 1960 || Blumenweg 7 || 05678 || Auendorf || A || Positiv 
 |-
 |Maria || Schulze || 1973 || Mozartstraße 19 || 05496 || Himmelreich|| 0 || Negativ
 |-
 |Andreas || Liebsch || 1988 || Am Bach 21 || 05673 || Hemmingen|| A || Negativ
 |-
 |Michael || Goldmann || 1979 || Blumenweg 15|| 05678 || Auendorf|| B || Positiv
|}
<br>
{| border="1"
 |-
 |Name || Straße || Ort
 |-
 |Stankt Marienstern Krankenhaus|| Liebknechtstraße 22 || 05678 Auendorf
 |-
 |Alexander Fleming Krankenhaus|| Kirchhofstraße 9 || 05496 Himmelreich
 |-
 |Uniklinikum Hemmingen|| Köhlerweg 5 || 05673 Hemmingen
 |-
 
|}
<br><br>
In der '''zweiten Normalform''' ist eine Tabelle dann, wenn alle Eingaben atomar sind (also  einzeln stehen -> erste Normalform) und wenn alle Attribute vom '''Primärschlüssel''' abhängig sind. Dieser Primärschlüssel muss für jeden Spender und jedes Krankenhaus festgelegt werden. Hier nehmen wir die Spender- und die Krankenhaus-ID. Von diesen Primärschlüsseln sind alle Attribute bereits abhängig, es müssen also keine weiteren Veränderungen gemacht werden.<br>
Doch, wie man mit einem Blick auf das ER-Modell feststellen kann, fehlen noch ein paar Daten. Also muss noch eine weitere Tabelle Spendet erstellt werden.<br>
<br>
{| border="1"
 |-
 |Spender-ID || Vorname || Name || Geburtsjahr || Straße|| PLZ || Ort || Blutgruppe || Rhesusfaktor
 |-
 |001 || Hans || Meier || 1956 || Blumenweg 7 || 05678 ||  Auendorf || AB || Positiv
 |-
 |002 || Ilse || Meier || 1960 || Blumenweg 7 || 05678 ||  Auendorf || A || Positiv 
 |-
 |003 || Maria || Schulze || 1973 || Mozartstraße 19 || 05496 ||  Himmelreich|| 0 || Negativ
 |-
 |004 || Andreas || Liebsch || 1988 || Am Bach 21 || 05673 ||  Hemmingen|| A || Negativ
 |-
 |005 || Michael || Goldmann || 1979 || Blumenweg 15|| 05678 ||  Auendorf|| B || Positiv
|}
<br>
{| border="1"
 |-
 |Krankenhaus-ID || Name || Straße || PLZ || Ort
 |-
 |583 || Stankt Marienstern Krankenhaus|| Liebknechtstraße 22 || 05678 || Auendorf
 |-
 |561 || Alexander Fleming Krankenhaus|| Kirchhofstraße 9 || 05496 || Himmelreich
 |-
 |549 || Uniklinikum Hemmingen|| Köhlerweg 5 || 05673 || Hemmingen
 |-
 
|}
<br>
'''Tabelle Spendet:''' <br>

{| border="1"
 |-
 |Spender-ID || Krankenhaus-ID|| Datum
 |-
 |583 || Stankt Marienstern Krankenhaus|| Liebknechtstraße 22 || 05678 Auendorf
 |-
 |561 || Alexander Fleming Krankenhaus|| Kirchhofstraße 9 || 05496 Himmelreich
 |-
 |549 || Uniklinikum Hemmingen|| Köhlerweg 5 || 05673 Hemmingen
 |-
 
|}
<br>

<br>
Damit eine Tabelle in der '''dritten Normalform''' ist, muss sie die Bedingungen der zweiten Normalform aufweisen und alle Attribute müssen von einem Schlüsselattribut abhängen. Auch das ist bei uns schon gegeben. (Besser zu sehen [http://www.tinohempel.de/info/info/datenbank/normalisierung.htm hier].)
<br><br>
Jetzt muss nur noch die Datenbank erstellt werden.<br><br>

<code id="9ad5ec248vbf5">
DROP TABLE IF EXISTS spender;
CREATE TABLE spender (
Spender-ID varchar(3),
Vorname varchar (20),
Nachmane varchar (20),
Geburtsjahr varchar (4),
Straße varchar (20),

</code>


<run id="9ad5ec248vbf5">
</run>