Datenbankbeschreibung „HardWhere“ AnPr Name Datum Klasse Inhaltsverzeichnis 1 Allgemeines ............................................................................................................................................... 2 2 Ausgangssituation...................................................................................................................................... 2 3 Beschreibung Datenbank ........................................................................................................................... 2 3.1 Datenmodell ...................................................................................................................................... 2 3.2 Tabelle Adresse ................................................................................................................................. 3 3.3 Tabelle Bestellung ............................................................................................................................. 3 3.4 Tabelle BestPos ................................................................................................................................. 3 3.5 Tabelle Branche ................................................................................................................................. 3 3.6 Tabelle Firma..................................................................................................................................... 4 3.7 Tabelle Hersteller .............................................................................................................................. 4 3.8 Tabelle InfoTyp ................................................................................................................................. 4 3.9 Tabelle KontoUms............................................................................................................................. 4 3.10 Tabelle LagerPos ............................................................................................................................... 5 3.11 Tabelle Lieferung .............................................................................................................................. 5 3.12 Tabelle LieferZO ............................................................................................................................... 5 3.13 Tabelle Partner................................................................................................................................... 6 3.14 Tabelle Person ................................................................................................................................... 6 3.15 Tabelle Preis ...................................................................................................................................... 7 3.16 View PreisVonBis ............................................................................................................................. 7 3.17 Tabelle ProdInfo ................................................................................................................................ 7 3.18 Tabelle Produkt ................................................................................................................................. 8 3.19 Tabelle Storno ................................................................................................................................... 8 3.20 Tabelle Telefon .................................................................................................................................. 8 4 Installation ................................................................................................................................................. 8 5 Nutzung ..................................................................................................................................................... 9 6 Lizenz ...................................................................................................................................................... 10 Datennbank_HardWhere_V03.docx Seite 1 Datenbankbeschreibung „HardWhere“ 1 AnPr Allgemeines Die Daten in der Datenbank sind fiktiv und fast ausschließlich nach dem Zufallsprinzip erstellt worden. Jegliche Ähnlichkeiten mit realen Personen sind somit nicht gewollt und eben rein zufällig entstanden. Auch sind die entsprechenden Werte (Beträge etc.) rein beispielhaft und können nicht für reale Firmen als Vergleich dienen. 2 Ausgangssituation Die Firma HardWhere ist im Großhandel für einzelne IT Hardwarekomponenten tätig. Obwohl sie primär Firmen beliefert, gibt es auch vereinzelt Privatkunden in der Datenbank. Die Firma wurde Anfang 2003 gegründet und ist seitdem im Geschäft. Die Umsätze stiegen stetig. Der Datenbankabzug wurde im Februar 2013 gemacht und ist somit ein „Snapshot“ der Firmendatenbank. 3 Beschreibung Datenbank Im Folgenden finden Sie eine grobe Beschreibung der Datenbank. Sehen Sie sich zuerst das Datenmodell an und versuchen Sie das Konzept dahinter zu verstehen. Alles, was Sie daraus nicht eindeutig ersehen können, müssen Sie über die einzelnen Tabellenbeschreibungen herausfinden. Ein Verständnis des Datenmodells – auch aus fachlicher Perspektive – ist die Grundvoraussetzung für funktionierendes SQL! 3.1 Datenmodell *) Für den Zugriff auf „Preis“ wurde noch die View „PreisVonBis“ erstellt. In den Abfragen wird diese wie eine Tabelle genutzt. Seite 2 AnPr Datenbankbeschreibung „HardWhere“ 3.2 Tabelle Adresse Sämtliche Adressinformationen (jedoch ohne Namen) finden sich in dieser Tabelle. Dies beinhaltet sowohl Kunden, Alternative Lieferadressen, Mitarbeiter, Lieferanten und Hersteller. Spaltenname: AdresseID Struktur: INT (Primary Key) Ort Strasse PLZ Bundesland VARCHAR(50) VARCHAR(60) CHAR(5) CHAR(2) Inhalt: Eindeutige ID der Adresse. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Wohnort als Klartext. Straßenname inklusive Hausnummer als Klartext. Deutsche Postleitzahl. Bundeslandkürzel 3.3 Tabelle Bestellung Auflistung aller Bestellungen, welche von den Kunden getätigt wurden. Spaltenname: BestID Struktur: INT (Primary Key) PartnerID INT RechnungID INT Betrag Datum DECIMAL(9,2) DATE Porto DECIMAL(7,2) Inhalt: Eindeutige ID der Bestellung. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf Partner, welcher die Bestellung getätigt hat. Eindeutige ID der Rechnung, welche an den Kunden geschickt wurde. Diese wird im Rahmen der Überweisung referenziert. Bestellwert (abzüglich des Kundenrabatts). Datum, an dem die Bestellung eingegangen ist und die Rechnung zugestellt wurde (Rechnungsdatum) Betrag des Portos, welcher für die Gesamtbestellung zum Zeitpunkt der Bestellung ermittelt wurde. Dieser kann vom tatsächlichen Porto abweichen, sofern die Bestellung in mehreren Chargen versendet werden musste. 3.4 Tabelle BestPos Zuordnung zwischen Bestellung und einzelnem Produkt. Somit können mehrere Produkttypen in einer Bestellung zusammengefaßt werden. Spaltenname: BestPosID Struktur: INT (Primary Key) BestID ProduktID Anzahl INT INT INT Inhalt: Eindeutige ID der Bestellposition. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf die Bestellung. Referenz auf das bestellte Produkt. Angabe, wie oft das einzelne Produkt in der Bestellung vorkommt. 3.5 Tabelle Branche Gegenüberstellung des Branchencodes zur klartextlichen Branchenangabe. Spaltenname: BrancheID Struktur: INT (Primary Key) Bezeichnung VARCHAR(100) Inhalt: Eindeutige ID der Branche. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Klartextliche Bezeichnung der Branche. Seite 3 Datenbankbeschreibung „HardWhere“ AnPr 3.6 Tabelle Firma Allgemeine Angaben für die Firmenkunden. Spaltenname: FirmaID Struktur: INT (Primary Key) Name Rechtsform BranchenID UST_ID AdresseID VARCHAR(30) VARCHAR(5) INT CHAR(10) INT Inhalt: Eindeutige ID der Firma. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Name der Firma. Angabe der Firmenrechtsform (bsp. AG, GmbH) Referenz auf die Branchentabelle Eindeutige UmsatzsteuerID der Firma Referenz auf Adressentabelle – somit die Adresse unter der die Firma agiert (entspricht auch der Lieferadresse) 3.7 Tabelle Hersteller Allgemeine Angaben über den Hersteller – im Prinzip nur der primäre Lieferant des Herstellers. Spaltenname: HerstellerID Struktur: INT (Primary Key) PartnerID INT LieferantID INT Inhalt: Eindeutige ID des Herstellers. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf Partnertabelle – jeder Hersteller wird als Partner geführt. Referenz auf Partnertabelle – jeder Lieferant wird als Partner geführt. 3.8 Tabelle InfoTyp Klartextinformationen über die Produkteigenschaftskategorien. Die verschiedenen Produkte haben Eigenschaften, wobei jede Eigenschaftskategorie als ID in der Tabelle auftaucht. Hier stehen für jede Eigenschaftskategorie die klartextliche Bezeichnung der Eigenschaftskategorie. Spaltenname: InfoTypID Struktur: INT (Primary Key) Name VARCHAR(30) Inhalt: Eindeutige ID des Eigenschaftskategorie. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Name der Eigenschaftskategorie. 3.9 Tabelle KontoUms Umsätze der wichtigsten Arbeitskonten: 19334223: Konto für die eingehenden Zahlungen der Kunden 19334224: Konto für die Abwicklung der Portozahlungen Gewinne, Steuerzahlungen, Miete, Gehaltszahlungen und Sonderaufwände werden auf das Konto 19334225 abgeführt, wobei dieses nicht im Rahmen dieser Datenbank aufgeführt wird. Spaltenname: KontoUmsID Struktur: INT (Primary Key) KontoNr INT KuKontoNr KuBLZ Saldo Umsatz Name INT INT DECIMAL(10,2) DECIMAL(10,2) VARCHAR(40) Seite 4 Inhalt: Eindeutige ID des Kontoumsatzes. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Kontonummer des Arbeitskontos (der Firma HardWhere) Kontonummer des Kunden (bzw. Hersteller etc.) Bankleitzahl des Kunden (bzw. Hersteller etc.) Aktueller Kontostand des entsprechenden Kontos. Betrag des entsprechenden Umsatzes. Name des Kunden (bzw. Hersteller etc.) AnPr Datenbankbeschreibung „HardWhere“ Spaltenname: Datum Text Struktur: DATE VARCHAR(100) RechnungID INT Inhalt: Datum der Buchung. Überweisungstext. Dieser beinhaltet bei Rechnungsüberweisungen auch die RechnungsID. Vom HardWhere System automatisch aus dem Überweisungstext extrahierte RechnungsID. 3.10 Tabelle LagerPos Informationen, wo im Lager wie viele Produkte zu finden sind. Spaltenname: LagerPosID Struktur: INT (Primary Key) ProduktID Anzahl INT INT Inhalt: Eindeutige ID der Lageprosition. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf das entsprechende Produkt. Anzahl des entsprechenden Produkts im Lager. 3.11 Tabelle Lieferung Angabe über die einzelnen Lieferungen. Jede Bestellungen wird über eine oder mehrere Lieferungen zum Kunden versendet. Spaltenname: LieferID Struktur: INT (Primary Key) Lieferdatum AdresseID Vorname DATE INT VARCHAR(30) Nachname VARCHAR(30) Porto DECIMAL(7,2) Inhalt: Eindeutige ID der Lieferung. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Datum, an dem die Lieferung versendet wurde. Referenz auf Lieferadresse. Für den Fall, dass eine alternative Lieferadresse eingetragen wurde, so muss hier noch der entsprechende Vorname des Empfängers eingetragen werden. Für den Fall, dass eine alternative Lieferadresse eingetragen wurde, so muss hier noch der entsprechende Nachname des Empfängers eingetragen werden. Tatsächliches Porto, welches angefallen ist. 3.12 Tabelle LieferZO Zuordnungstabelle zwischen Bestellposition und Lieferung. Hiermit wird sichergestellt, dass die einzelnen Bestellpositionen in getrennten Lieferungen versendet werden können (wenn bspw. ein Produkt nicht auf Lager ist und nachgeliefert werden muss.). Spaltenname: LieferID BestPosID Struktur: INT INT Inhalt: Referenz auf die Lieferung. Referenz auf die Bestellposition Auf diese Tabelle hätte man auch verzichten, und die LieferID in die Bestellposition einbauen können. Dadurch würde aber in der Praxis die Situation entstehen, dass die Bestellpositionen im Bestellvorgang eingetragen werden würden und bei der Lieferung (also zu einem späteren Zeitpunkt) die LieferID erst feststehen würde. Damit würde die Notwendigkeit eines Updates auf der Bestellposition entstehen, was man im Regelfall vermeiden möchte. Seite 5 Datenbankbeschreibung „HardWhere“ AnPr 3.13 Tabelle Partner Informationen über Partner. Diese können aus den verschiedenen Kategorien sein: F: Firmenkunde PK: Privatkunde WK: Wunschkunde HS: Hersteller LF: Lieferant MA: Mitarbeiter der Firma HardWhere Spaltenname: PartnerID Struktur: INT (Primary Key) Kategorie FirmaID CHAR(2) INT PersonID INT BetreuerID INT Datum Rabatt DATE DECIMAL(5,2) Inhalt: Eindeutige ID des Partners. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Kategorie des Partners Wenn der Partner eine Firma ist, steht hier eine Referenz auf die entsprechende Firma in der Firmentabelle. Wenn der Partner eine Person ist, steht hier eine Referenz auf die entsprechende Person in der Personentabelle. Referenz auf die PartnerID des Mitarbeiters, welcher den Partner betreut. Bei Mitarbeitern, welche entsprechend auch in dieser Tabelle geführt sind, ist ein alternativer Ansprechpartner für den Mitarbeiter eingetragen (im Krankheitsfall etc.) Datum, seit wann der Partner im System ist. Angabe, wieviel Standardrabatt der Partner erhält. 3.14 Tabelle Person Sämtliche Personenrelevante Informationen. Personen sind entweder Firmenmitarbeiter, Privatpersonen (also Partner, welche als Privatperson agieren) oder Ansprechpartner von Firmen. Spaltenname: PersonID Struktur: INT (Primary Key) Vorname Nachname Geschlecht GebDatum FirmaID VARCHAR(30) VARCHAR(30) CHAR(1) DATE INT AdresseID INT Seite 6 Inhalt: Eindeutige ID der Person. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Vorname der Person. Nachname der Person. Code m: männlich, w: weiblich Geburtsdatum Wenn Person Ansprechpartner einer Firma ist, findet sich hier die Referenz auf die Firma. Referenz auf die Adresse, unter der die Person postalisch zu erreichen ist. AnPr Datenbankbeschreibung „HardWhere“ 3.15 Tabelle Preis Tabelle, welche sämtlichen Produktpreise über die Historie speichert. Spaltenname: PreisID Struktur: INT (Primary Key) ProduktID INT Preis Datum DECIMAL(7,2) DATE Inhalt: Eindeutige ID der Preisinformation. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf Produkt, für das der Preis angegeben wird. Produktpreis Datum, ab wann der Preis gilt. Sollte also ein weiterer Eintrag in der Tabelle mit jüngerem Datumswert vorliegen, so ist der Eintrag mit dem jüngerem Datum ausschlaggebend. 3.16 View PreisVonBis Um das Handling mit den Datumswerten zu vereinfachen, stellt die Datenbank eine View zur Verfügung, bei der neben dem Datum ab wann der Preis gilt auch das Datum angezeigt wird, bis wann der Preis gilt. Spaltenname: PreisID Struktur: INT (Primary Key) ProduktID INT Preis DatumVon DatumBis DECIMAL(7,2) DATE DATE Inhalt: Eindeutige ID der Preisinformation. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf Produkt, für das der Preis angegeben wird. Produktpreis Datum, ab wann der Preis gilt. Datum, bis wann der Preis gilt, wobei das DatumBis das erste nicht mehr gültige Datum darstellt. Tagesaktuelle Preise haben immer das aktuelle Datum + 1 Tag als Preis. 3.17 Tabelle ProdInfo Aufstellung der einzelnen Produkteigenschaften je Produkt. Spaltenname: ProdInfoID Struktur: INT (Primary Key) ProduktID InfoTypID INT INT Wert VARCHAR(30) Inhalt: Eindeutige ID der Produkteigenschaft. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf das entsprechende Produkt Referenz auf die klartextliche Eigenschaftskategorie (bspw. Anzahl Kerne) Wert der entsprechenden Eigenschaft (bspw. 4) Seite 7 Datenbankbeschreibung „HardWhere“ AnPr 3.18 Tabelle Produkt Allgemeine Informationen für jedes Produkt. Die Produkte sind in folgende Kategorien eingeteilt: CP: CPU FP: Festplatte MM: Speicher MB: Mainboard GC: Grafikkarte Spaltenname: ProduktID Struktur: INT (Primary Key) HerstellerID Bezeichnung Kategorie Gewicht Volumen INT VARCHAR(100) CHAR(2) DECIMAL(5,2) DECIMAL(7,2) Inhalt: Eindeutige ID des Produktes. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf die Herstellertabelle Vertriebsbezeichnung des Produktes Produktkategorie (siehe oben) Gewicht in Gramm Volumen in Kubikzentimeter 3.19 Tabelle Storno Wenn Einzelpositionen einer Bestellung storniert wurden, erhält diese Tabelle einen Eintrag. Spaltenname: StornoID Struktur: INT (Primary Key) BestPosID INT Kosten Datum DECIMAL(9,2) DATE Inhalt: Eindeutige ID der Stornierung. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Referenz auf die Bestellposition, welche storniert wurde. Kosten, welche für die Stornierung aufgetreten sind. Datum, wann die Stornierung eingegangen ist. 3.20 Tabelle Telefon Informationen darüber, wie welche Person per Telefon zu erreichen ist. Spaltenname: TelefonID Struktur: INT (Primary Key) Vorwahl Nummer Hinweis VARCHAR(10) VARCHAR(15) VARCHAR(30) PersonID INT 4 Inhalt: Eindeutige ID der Telefoninfo. Dieser Wert ist rein technisch und hat neben der Eindeutigkeit keine weitere Aussagekraft. Vorwahl des Anschlusses Durchwahl des Anschlusses Hinweis, ob es sich um den primären Anschluss, Handynummer etc. handelt. Referenz auf die entsprechende Person. Installation Um die Datenbank zu installieren, müssen Sie das ZIP File PraxisDB_HardWhere.zip auf Ihrem Rechner entpacken, MySQL starten und unter Windows das Batch File CreateDatabase.bat starten. Hier geben Sie anschließend das MySQL Passwort und danach das Installationsverzeichnis von mysql.exe an. Der Installationsvorgang kann aufgrund der großen Datenmenge durchaus einige Minuten dauern. Anschließend finden Sie auf Ihrer MySQL Installation eine neue Datenbank namens „HardWhere“. Sollten Sie das File PraxisDB_HardWhere.zip nicht haben, so können Sie es unter www.codeconcert.de im Bereich „Unterrichtsmaterial -> SQL“ finden. Seite 8 AnPr 5 Datenbankbeschreibung „HardWhere“ Nutzung Nach Eingabe von „USE HardWhere“ können Sie die SQL Befehle auf der Datenbank ausführen. Bitte beachten Sie aber, dass die Datenbank vergleichsweise viele Daten beinhaltet. Unbedachte SQL Befehle können zu langen Laufzeiten führen. Versuchen Sie also, Ihre SQL Befehle performant zu gestalten. Seite 9 Datenbankbeschreibung „HardWhere“ 6 AnPr Lizenz Diese(s) Werk bzw. Inhalt von Maik Aicher (www.codeconcert.de) steht unter einer Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz. Seite 10