PMG/Kurs 11/D Beleg/Robert
Aus ProgrammingWiki
Wiki-Quelltext dieser Seite.
<language>SQL</language>
== Datenbank einer Bürofirma ==
Ich erstelle hier eine Datenbank eines Unternehmens mit angemessenen Angestellten und ihren Aufträgen, wie auch zu den Büromaterialien der Firma bzw. des Unternehmens.
Dies tue ich, weil ich vielleicht mal später in so einer Art Geschäft arbeiten wöllte. Vielleicht.
== Modellierung in einem ERM ==
[[Bild:XXxrobbe117xXx_Diagram12.png]]
Zwischen dem Unternehmen und den Angestellten gibt es die Kardinalität 1:n , da jede Firma mehrere Angestellte besitzen kann, aber jeder Angestellte nur eine Firma.
Zwischen den Angestellten und ihren Aufträgen liegt die Kardinalität m:n vor, da mehrere Angestellte der Firma auch an mehreren Aufträgen sitzen kann. Deshalb muss hier auch eine Extra-Tabelle angelegt werden mit den Namen Firmen-Auftrag.
Zwischen Angestellter und Büromaterial gibt es die Kardinalität 1:n da jeder Angestellte sein eigenen Bedarf an Material erhält und nicht mehr bekommt als er verdient!
== Transformation in das Relationenmodell ==
Unternehmen (Firma-ID; Ort; Name; Straße)
Angestellte (Firma-ID; A-ID; Name; Vorname; Land)
Büromaterial (Schreibzeug; A-ID; Papier; Drucker; Geschäftsauto)
Auftrag (Auftrags-ID; Auftraggeber; Kosten; Zeitaufwand)
Firmen-Auftrag (FA-ID; Arbeitszeit-Stunden; Auftrags-ID; A-ID)
== Transformation in die Datenbank ==
<popup label="Datenbank">
<code id="51339cfa54cf7">
Drop Table if exists Unternehmen;
Create Table Unternehmen (
Firma_ID varchar (5),
Ort varchar (20),
Name varchar (30),
Straße varchar (30));
INSERT INTO Unternehmen VALUES('11112', 'Bischofswerda', 'Alpha-Corporation', 'Schnellstraße 2');
INSERT INTO Unternehmen VALUES('11121', 'Bautzen', 'U-Unternehmen', 'Hofweg 12');
INSERT INTO Unternehmen VALUES('11211', 'Berlin', 'Bär-Unternehmen', 'Kreutzigerstraße 1');
INSERT INTO Unternehmen VALUES('12111', 'Köln', 'Zug-Unternehmen', 'Unterstraße 22');
Drop Table if exists Angestellte;
Create Table Angestellte (
A_ID varchar (6),
Firma_ID varchar (5),
Name varchar (20),
Vorname varchar (20),
Ort varchar (20),
Straße varchar (20),
Land varchar (20));
INSERT INTO Angestellte VALUES('121212', '12111', 'Werner', 'Reinhard', 'Berlin', 'Gutweg 5', 'Deutschland');
INSERT INTO Angestellte VALUES('123456', '11121', 'Dieter', 'Berta', 'Hong Kong', 'Jing Jang Weg 32', 'China');
INSERT INTO Angestellte VALUES('654321', '11211', 'Udolf' , 'Udo', 'Tschernobyl', Strahlemann Weg 2', 'Russland');
INSERT INTO Angestellte VALUES('666666', '11112', 'Rudolf', 'Ludolf', 'Köln', 'Ludolf Weg', 'Deutschland');
Drop Table if exists Auftrag;
Create Table Auftrag (
Auftrags_ID varchar (5),
Auftraggeber varchar (20),
Kosten_in_€ varchar (10),
Zeitaufwand-in-Tage (10));
INSERT INTO Auftrag VALUES('99999', 'Familie Zich', '150', '5');
INSERT INTO Auftrag VALUES('98989', 'Familie Dietrich', '644', '22');
INSERT INTO Auftrag VALUES('88888', 'Familie Peterson', '333', '10');
INSERT INTO Auftrag VALUES('88899', 'Familie Ingolf', '877', '14');
INSERT INTO Auftrag VALUES('88887', 'Familie Bulli', '465', '12');
Drop Table if exists Büromaterial;
Create Table Büromaterial (
A_ID varchar (6),
Schreibzeug varchar (4),
Papier varchar (4),
Drucker varchar (4),
Geschäftsauto varchar (4));
INSERT INTO Büromaterial VALUES('654321', 'ja', 'nein', 'ja', 'ja');
INSERT INTO Büromaterial VALUES('666666', 'ja', 'ja', 'ja', 'ja');
INSERT INTO Büromaterial VALUES('121212', 'nein', 'nein', 'nein', 'ja');
INSERT INTO Büromaterial VALUES('123456', 'nein', 'ja', 'ja', 'nein');
Drop Table if exists Firmen-Auftrag;
Create Table Firmen-Auftrag (
FA_ID varchar (3),
Arbeitszeit-Stunden varchar (4),
Auftrags-ID varchar (5),
A_ID varchar (6));
INSERT INTO Firmen-Auftrag VALUES('111', '19', '99999', '11112');
INSERT INTO Firmen-Auftrag VALUES('121', '199', '99999', '11211');
INSERT INTO Firmen-Auftrag VALUES('131', '2', '88888', '11121');
INSERT INTO Firmen-Auftrag VALUES('141', '20', '88888', '12111');
INSERT INTO Firmen-Auftrag VALUES('151', '200', '98989', '11112');
INSERT INTO Firmen-Auftrag VALUES('161', '300', '88899', '11121');
INSERT INTO Firmen-Auftrag VALUES('171', '150', '88887', '11211');
</code>
</popup>
== Abfragen der Datenbank ==
Welche Angestellte arbeiten bei der Firma Alpha-Corporation?
<run id="51339d3aacea3">
Select Unternehmen.Name, Angestellte.Name, Vorname
From Unternehmen, Angestellte
Where Firma-ID=11112;
</run>
Wie viele Stunden hat Ludolf am Auftrag von Familie Zich gearbeitet?
<run id="512cdda3c680a">
Select Arbeitszeit-Stunden, FA-ID, Vorname
From Firmen-Auftrag, Angestellte
Where FA-ID=111;
</run>
Welcher Angestellte hat welche Büromaterialien erhalten?
<run id="51339d3aacf10">
Select Angestellte.Name, Vorname, Papier, Drucker, Geschäftsauto, Schreibzeug
From Angestellte, Büromaterial ;
Where Angestellte.A-ID=Büromaterial.A-ID;
</run>
Wer hat den Auftrag von Familie Peterson bearbeitet und wohnt auf den Jing-Jang Weg 32?
<run id="51339d3aacf72">
Select Angestellte.Name, Vorname, Angestellte.Straße,
From Angestellte, Firmen-Auftrag, Auftrag
Where Angestellte.A-ID=Firmen-Auftrag.A-ID AND Angestellte.Straße='Jing Jang Weg 32';