Datenbanken / SQL

l33tSQL

Benutzer
Beiträge
7
Übungsaufgabe / Datenbanken / SQL

1. Eine Firma hat Mitarbeiter, die Techniker, Arbeiter oder Sachbearbeiter sein können.
Außerdem gibts es Kunden, die Projektein Auftrag geben und die Sachbearbeitern betreut werden.
Bezüglich der Kunden müssen Adress- und Kommunikationsdaten verwaltet werden. Für ein Projekt
werden verschiedene Arbeiter und TEchniker benötigt. Bezüglich der Mitarbeiter müssen Name,
Vorname und Geburtsdatum erfasst werden, außerdem Eintrittsdatum und Berufsbezeichnun.
Die Mitarbeiter haben ebenfalls Namen, Vornamen und GEburtsdatum sowie außer den üblichen Adressdaten
noch Handynummer, Emailadresse und Telefonnummer.
Ein Projekt ist gekennzeichnet durch Start (Datum), Ende und Projektbezeichnung

Erstellen Sie das ER-Modell unter beachtung der Normalformenlehre (bis 2te NF)
Erwägen Sie dabei verwendung von IS-A-Beziehungen und bedenken Sie, dass
die eindeutige Zuordnung von entsprechenden Mitarbeitern und Kunden zu einem Projekt
gewährleistet sein muss. Auch die Kundenbetreuung durch Sachbearbeiter muss nochvollziehbar sein.

2. In Anlehnung an das ER-Modell soll die komplette Datenbank in MS-Access erstellt werden.
Sinvolle Einstellungen (referentielle Integrität, Löschweitergabe...) sind jeweils vorzunehmen.
In jede Tabelle sollen mindestens 6 sinvolle Datensätze eingetragen werden.
Dabei ist jeweils zu beachten dass die im SQL-Teil verlangten Abfragen entsprechende Ergebnisse erbringen.

3. Folgende Abfragen sollen mittels SQL-Statements erstellt, und getestet werden. Alternativen in der
Syntax müssen ggf. ebenfalls aufgezeigt werden.

a) Es Sollen alle Kunden mit Vor und Nachnamen gelistet werden, für die im August 2007 ein Projekt
gestartet wurde. Die Sortierung soll nach Startdatum und Nachnamen erfolgen.

b) Es werden alle Mitarbeiter (mit Namen und vornamen) benötigt, die an den Projekten Reithalle bzw.
Brandschutzsanierung mitarbeiten. Die zuordnung erfolgt durch Ausgabe der entsprechenden ProjektID.
Die Sortierung soll nach ProjektID und Nachnamen erfolgen.

c) Alle Kunden aus Offenbach, Bad Homburg, und Mannheim sind zu list mit Name, Vorname und Geburtsdatum.
Die Abfrage wird beschränkt auf Kunden, die 1980, 1981 und 1982 geboren sind. Die Abfrageergebnis ist sinvoll
zu sortieren.

d) Es soll ermittelt werden , wie viel Kunden je Wohnort gibt.

e) Der Beruf (die Berufe) der einzelnen Techniker sind zu ermitteln. Erstes Sortierkrieterium ist Nachname,
zweites Kriterium ist das Geburtsdatum(jeweils aufsteigend).

f) Es wird eine Liste benötigt, welcher Sachbearbeiter welchen Kunden in welchem Projekt betreut hat.

g) Die Anzahl der Sachbearbeiter, Arbeiter und Techniker soll kommentiert ermittelt werden.
 
Werbung:
AW: Datenbanken / SQL

Hallo l33tSQL,

ich kann Dir hier kein komplettes Datenbankschema mit allen was dazugehört in zusammenbauen.

Wenn du irgendwo nicht weiterkommst helfe ich Dir gerne.

Dann poste aber bitte nicht einfach Kommentarlos Übungsaufgaben sondern stell eine konkrete Frage zu einem Teil den du nicht verstehst oder nicht umsetzen kannst.

Gruß Charly
 
AW: Datenbanken / SQL

Hallo, kann mir einer weiterhelfen und sagen ob das er model soweit richtig ist oder noch war ergänz werden muss?

130211161837_DSC00764.jpg
 
AW: Datenbanken / SQL

Hallo l33tSQL,

Du solltest eine Relation Person erstellen.

Von dieser Relation leitest Du jetzt Mitarbeiter ab.

Personen können jetzt ohne Mitarbeiter zu sein ein Kontakt zu und von einer anderen Firma sein.

Den Arbeiter brauchst du nicht angeben der hat ja nichts wofür er eine eigene Relation verdienen würde.

Sowas wie SacharbeiterID oder Techniker ID brauchst du nicht. Läuft alles über PersonID. Das es ein Mitarbeiter ist erkennt man daran das seine ID in der Mitarbeiter Relation auftaucht. Gleiches gilt für die anderen Relationen in der Hierachie.

Der Sachbearbeiter betreut übrigens nicht den Kunden sondern das Projekt des Kunden. Projekt sitzt also zwischen FirmaID von der sich die Relation Kunde ableitet und PersonID (nicht vergessen Person ist der Super-Typ von Mitarbeiter und Sachbearbeiter die alle eine 1:1 Beziehung mit ihrem übergeordneten Typ haben wie auch Kunde zu Firma). Das ist aber noch nicht 100% durchgedacht.

Auftrag ist mal wieder so ein Subtyp der meiner Meinung nach unter das Projekt gehört. Kunde gibt uns einen Auftrag und wir machen ein Projekt daraus. man kann Projekt auch unter Auftrag setzten. Für mich ist es so aber schlüssiger.

Ich glaube in deinem ersten Beitrag sind Dir die Bezeichnungen im ersten Absatz etwas durcheinander geraten.
Bei dem Vergleich mit deinem Model gibt es jedenfalls einige Diskrepanzen.

Nach deinem Model haben nur Techniker zusätzliche Attribute. Also Subtyp Techniker mit den ensprechenden Attributen. Da ich weiter oben PersonID mit dem Projekt verknüpft habe brauchen wir Sachbearbeiter nicht mehr.
Da wir jetzt schon 2 Personengruppen ohne Relation haben brauchen wir ein Attribut in den Mitarbeitern. 'Angestellt als' könnte man das Attribut nennen. Prsonen die am Projekt teilnehmen würde ich über eine eigene Relation verknüpfen. Sowas wie Projektmitarbeiter. Hier lassen sich dann die Attribute einfügen die die Funktion des Mirarbeiters im Projekt bestimmen.

So das war erstmal das was mir auf Anhieb eingefallen ist. Alles natürlich ohne Gewähr.
Ich habe einfach mal meine Gedanke zu deinem Model aufgeschrieben.

Gruß Charly

PS: Hoffe das war nicht zu viel Input auf einmal:)
 
Hallo l33tSQL,

im ERM gibt es noch keine Fremdschlüssel. Also auch kein Attribut Projekt_ID in Firma und Person

Firmen haben keine Vornamen. Wenn Du mit einer Firma kommunizieren willst verbindest Du sie mit Person und nennst die Relation z.B. 'Kontakt zu'.
Damit hast Du die Kontaktdaten der Firma als Person.
Die Verbindung von Person zu Firma sowohl über Projekt als auch direkt zueinander ist kein Problem. So was gibt es oft.

Die eigenen Mitarbeiter und die eigene Firma werden übrigens genauso behandelt wie die anderen Firmen und ihre Mitarbeiter.
Das klingt jetzt etwas komisch aber die eigene Firma unterscheidet sich nur in einem von anderen Firmen. Sie ist kein Kunde.

Achte darauf dass einige Relationen Optional sein können. Person zu Mitarbeiter zum Beispiel.
Mitarbeiter muss eine Person sein Person aber kein Mitarbeiter.

Überleg Dir genau welche Attribute für alle Personen gelten und welche nur für Mitarbeiter. Gleiches gilt für Firma und Kunde.

Verbinde Person und Projekt noch mit einer Relation 'benötigt für' oder so. Später musst Du hier bei der Löschweitergabe aufpassen.
Je nach Anforderung kann die Relation Obligatorisch oder Optional sein.

In deiner ‚Miniwelt‘ haben Mitarbeiter kein Zuhause. Deswegen brauchen sie nur die Adresse ihrer Firma.

Sonst sieht es nicht schlecht aus.
Gruß Charly

PS: Damit dürftest Du jetzt alles für dein ERM haben, oder?
 
Werbung:
Zurück
Oben