Ergebnisse der Datenbank – Gruppe Ron Ewald Kevin Rohrbeck Thomas Bauske Raimund Damitz Robert Zimmermann 1 2 3 4 5 Analysephase ...................................................................................................... 3 1.1 Nutzerverwaltung ......................................................................................... 3 1.2 Inserate ........................................................................................................ 3 ER – Modell ......................................................................................................... 4 Relationales Datenbankmodell ............................................................................ 5 Normalisierung .................................................................................................... 5 4.1 1. Normalform:.............................................................................................. 5 4.2 2. Normalform:.............................................................................................. 6 4.3 3. Normalform:.............................................................................................. 6 Implementierung der Datenbank ......................................................................... 7 2 1 Analysephase Nach der Gruppeneinteilung und ersten Überlegungen haben wir auf die Analyseergebnisse der Analysegruppe gewartet. Nach einiger Verzögerung bekamen wir dann unzureichende Informationen über den möglichen Aufbau und den möglichen Inhalten für eine Datenbank. Nach einer Überarbeitung in Zusammenarbeit mit der Analysegruppe wurden folgende Eckdaten vereinbart: 1.1 Nutzerverwaltung Registrierung nur für die Inseratersteller notwendig, Interessenten tauchen somit nicht in der Datenbank auf wichtige Eigenschaften der Inserenten: Benutzername, Name, Vorname, E-Mail-Adresse, Passwort sofern die Zeit ausreicht, ist ein Loginsystem zu implementieren, über welches sich Inserenten einloggen können jeder Inserent hat die Möglichkeit, Inserate zu erstellen, zu bearbeiten und zu löschen 1.2 Inserate Zu einem Inserat gehören Kategorie sowie Stichwörter, welche der Inserent selbst wählt. Damit ist gewährleistet, dass Inserate über eine simple Suchmaschine gefunden werden können. einige, allgemeine Kategorien, jedoch keine Unterkategorien (Grund: Werden Kategorien noch durch Unterkategorien oder durch weitere Attribute unterteilt, wird für jede Kategorie eine eigene Entitätsmenge notwendig, was den Rahmen dieses Projektes sprengt.) weitere wichtige Eigenschaften: Bezeichnung, Beschreibung, Artikelstandort, Preis, verhandelbar (ja oder nein), Einstelldatum (Begründung: Artikelstandort - alternativ kann auch der Wohnort des Inserenten festgehalten werden, dieser muss aber nicht immer mit dem Artikelstandort übereinstimmen Einstelldatum - jedes Inserat soll nach einer bestimmten Zeit automatisch entfernt werden (Aktualität), daher muss das Einstelldatum festgehalten werden, so ist außerdem eine bessere Sortierung der Inserate möglich.) 3 2 ER – Modell Mit den Daten aus der Analysephase ist folgendes Entity Relationship Modell entstanden: Kunde erstellt Benutzername Inserat InsID Stichwort1 PW Stichwort2 GeburtsDat Stichwort3 ArtikelName Name Beschreibung Vorname ErstellDat Händlerart Preis Adresse Kategorie InsArt Legende Adresse: Strasse PLZ Ort eMail 4 3 Relationales Datenbankmodell Nach der Erstellung des ERM kann nun aufbauend ein relationales Datenbankmodell erstellt werden. Kunde Benutzername Name Vorname Typ Char(12) Auto_Inc no Null no PW GeburtsDat Strasse PLZ Ort eMail Char(30) Char(30) Char(30) Date Char(45) Char(5) Char(30) Char(40) no no no no no no no no no yes no no yes yes yes no Inserat InsID Stichwort1 Stichwort2 Stichwort3 ArtikelName Beschreibung ErstellDat Typ Int(6) Char(20) Auto_Inc yes Null no Preis Verhandelbar Kategorie InsArt Kunde Char(20) Char(20) Char(30) Text Date Float(6,2) Bool Set Set Char(12) no no no no no no no no no no no no yes yes no yes no no no no no no Kategorie KatID KatName Typ Set Auto_Inc No Null No Char(20) No No Erläuterung: 1. Kategorie (Set) besteht aus Auto, Wohnen, Heimtechnik, Unterhaltungsmedien und Freizeit 2. InsArt (Set) besteht aus Kaufen und Verkaufen 4 Normalisierung Mit Hilfe der Normalformen sollen Redundanzen vermieden werden und die Performance erhalten bleiben bzw. optimieren. Unter dem Normalisieren versteht man die Einhaltung bestimmter Regeln bei der Definition von Tabellen. Dabei werden die Abhängikeiten zwischen den Feldern einer Tabelle untersucht. 4.1 1. Normalform: Es darf keine zusammengesetzten Werte geben Bsp.: Adresse Müllerstraße 3, 12345 Berlin Name Müller Vorname Max Adresse besteht aus Straße Hausnummer Postleizahl Ort Nach der 1.Normalform sähe es wie folgt aus Straße Müllerstraße Hausnummer 3 Postleizahl 12345 5 Ort Berlin Name Müller Vorname Max 4.2 2. Normalform: In einem Datensatz muss von jedem Attribut auf das gesamte Schlüsselattribut geschlossen werden können. Nur bei zusammengesetzten Schlüsseln relevant. 1.NF + Nichtschlüsselmerkmale sind von allen Schlüsselmerkmalen voll funktional abhängig. Die Bank ist nur von der Bankleitzahl und nicht von der eindeutigen Kontonummer (Schlüssel) abhängig. Kundentabelle (Ausschnitt): KtoNr. 2134 1354 1564 Bank Berliner Sparkasse Spardabank Berliner Bank BLZ 10050000 21005000 15025750 KdNr 123 124 125 KdName Meier Müller Schulze Die Bank ist nur von der Bankleitzahl und nicht von der eindeutigen Kontonummer (Schlüssel) abhängig. Auflösung nach 2. Normalform: Kundentabelle KtoNr. 2134 1354 1564 BLZ 10050000 21005000 15025750 KdNr 123 124 125 KdName Meier Müller Schulze Banken BLZ 10050000 21005000 15025750 Bank Berliner Sparkasse Spardabank Berliner Bank 4.3 3. Normalform: Kein Nichtschlüsselmerkmal ist von einem Schlüssel abhängig. In diesem Fall ist der Kundenname über den Umweg Kundennummer vom Schlüssel Kontonummer abhängig Kundentabelle KtoNr. 2134 1354 1564 BLZ 10050000 21005000 15025750 KdNr 123 124 125 Banken BLZ 10050000 21005000 15025750 Bank Berliner Sparkasse Spardabank Berliner Bank 6 KdName Meier Müller Schulze Auflösung in die 3. Normalform: Kundenkonten: KtoNr. 2134 1354 1564 BLZ 10050000 21005000 15025750 KdNr 123 124 125 Kundentabelle (Ausschnitt): KdNr 123 124 125 5 KdName Meier Müller Schulze Implementierung der Datenbank Aus den gegebenen Relationstabellen wird nun eine SQL-Abfrage formuliert. Um beide Tabellen zu erstellen, muss die Abfrage folgendermaßen aussehen: CREATE DATABASE isk91_webshop; USE webshop; CREATE TABLE Kunde ( Benutzername char(12) NOT NULL, Name char(30) NOT NULL, Vorname char(30), PW char(12) NOT NULL, GeburtsDat DATE NOT NULL, Strasse CHAR(45), PLZ CHAR(5), Ort CHAR (30), Email CHAR(40) NOT NULL, PRIMARY KEY (Benutzername) ); CREATE TABLE Inserat ( InsID INT(6) AUTO_INCREMENT NOT NULL, Stichwort1 char(20), Stichwort2 char(20), Stichwort3 char(20), Artikelname char(30) NOT NULL, Beschreibung text(300), ErstellDat DATE NOT NULL, Preis FLOAT(6,2) NOT NULL, VB SET("ja","nein"), KatID Int(1) NOT NULL, InsArt SET("Verkauf","Gesuch"), PRIMARY KEY (InsID) ); CREATE TABLE Kategorie ( KatID Int(1) AUTO_INCREMENT NOT NULL, Kategorie Char(20) NOT NULL, Primary Key(KatID) ); 7 Für den Anfang werden nun Beispieldatensätze eingefügt. Dies geschieht mit folgender Abfrage: INSERT INTO Kategorie(KatName) VALUES ("Auto"), ("Wohnen"), ("Heimtechnik"), ("Unterhaltungsmedien"), ("Freizeit"); INSERT INTO Inserat(Stichwort1, Stichwort2, Stichwort3, Artikelname, Beschreibung, ErstellDat, Preis, VB, Kategorie, InsArt) VALUES ("Auto", "gebraucht", "blau", "Blauer VW Polo, gebraucht", "Ich verkaufe hier meinen gebrauchten VW Polo aus dem JAhre 1722. ", "2010-06-20", "2127.55", "ja", "1", "Verkauf"), ("Fernseher", "gebraucht", "gelb", "TV - gebraucht", "Suche gelben Fernseher", "2010-06-20", "21.99", "nein", "5", "Gesuch"); INSERT INTO Kunde(Benutzername,Name,Vorname,GeburtsDat,Strasse,PLZ,Ort,Email) VALUES ("Testuser1","Mustermann","Max","2000-01-01","Musterweg 1","12345","Musterland","[email protected]"), ("Testuser2","Musterfrau","Maxi","2002-02-02","Musterweg 2","54321","Musterland","[email protected]"); 8