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 (50),
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 (60),
Firma_ID varchar (50),
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 Straße 32', 'China');
INSERT INTO Angestellte VALUES ('654321', '11211', 'Udolf' , 'Udo', 'Tschernobyl', 'Strahlemann Straße 2', 'Russland');
INSERT INTO Angestellte VALUES ('666666', '11112', 'Rudolf', 'Ludolf', 'Köln', 'Ludolf Straße', 'Deutschland');

Drop Table if exists Auftrag;
Create Table Auftrag (
Auftrags_ID varchar (50),
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 (60),
Schreibzeug varchar (40),
Papier varchar (40),
Drucker varchar (40),
Geschäftsauto varchar (40));

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 (30),
Arbeitszeit_Stunden varchar (40),
Auftrags_ID varchar (50),
A_ID varchar (60));

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  Unternehmen.Name='Alpha-Corporation';
</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 Straße 32';
</run>