1.4 Übungsaufgaben

Aufgabe

Aufgabe 1-4: Projektverwaltung

Eine Stadtverwaltung möchte alle ressortübergreifenden Projekte in einer Datenbank erfassen.

Anforderungsdefinition

Die Datenbank soll Auskunft geben, welche Projekte aktuell laufen beziehungsweise bereits abgeschlossen sind, welcher Mitarbeiter das Projekt leitet beziehungsweise zuletzt geleitet hat und welche weiteren Mitarbeiter beteiligt sind beziehungsweise waren.

Jedem Projekt muss stets ein Projektleiter zugewiesen sein. Für alle beteiligten Mitarbeiter muss außerdem das Ressort angegeben sein, in dem sie arbeiten.

Daten
  • Für jedes Projekt sollen die Projektbezeichnung, eine Kurzbeschreibung, das Start- und das Abschlussdatum, der Projektleiter sowie alle weiteren Projektmitarbeiter verfügbar sein.
  • Für jeden Mitarbeiter sollen Personalnummer, Vor- und Nachname sowie das Ressort, in dem er arbeitet, verfügbar sein.
  • In der Datenbank sollen alle Ressorts der Stadt verfügbar sein, auch wenn ein Ressort bisher noch keinen Mitarbeiter für ein solches Projekt abgestellt hat.
Aufgaben
  1. Erstellen Sie ein ER-Modell. Lösung
    Lösung
    img/Abb_1_43_ERM_Projektverwaltung.svg
    Abb. 1-43: Entity-Relationship-Diagramm Projektverwaltung
  2. Überführen Sie das ER-Modell in ein Relationenmodell. Lösung
    Lösung
    • Projekt(ID, Bezeichnung, Beschreibung, Beginn, Abschluss, ↑Mitarbeiter_ID_Projektleiter)
    • Mitarbeiter(ID, Personalnummer, Vorname, Nachname, ↑Ressort_ID)
    • Ressort(ID, Bezeichnung)
    • Mitarbeiter_arbeitet_an_Projekt(↑Mitarbeiter_ID, ↑Projekt_ID)
    Abb. 1-44: Relationen Projektverwaltung.
  3. Formulieren Sie die SQL-Anweisungen zum Erstellen der Tabellen. Lösung
    Lösung
    • SQL
      CREATE TABLE Ressort(
      ID INTEGER NOT NULL,
      Bezeichnung VARCHAR(30),
      PRIMARY KEY(ID));
      Abb. 1-45: Tabelle Ressort
    • Die Tabelle Ressort muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Mitarbeiter(
      ID INTEGER NOT NULL,
      Personalnummer INTEGER,
      Vorname VARCHAR(30),
      Nachname VARCHAR(30),
      Ressort_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Ressort_ID) REFERENCES Ressort(ID));
      Abb. 1-45: Tabelle Mitarbeiter
    • Die Tabelle Mitarbeiter muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Projekt(
      ID INTEGER NOT NULL,
      Bezeichnung VARCHAR(30),
      Beschreibung VARCHAR(500),
      Beginn DATE,
      Abschluss DATE,
      Mitarbeiter_ID_Projektleiter INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Mitarbeiter_ID_Projektleiter) REFERENCES Mitarbeiter(ID));
      Abb. 1-45: Tabelle Projekt
    • Die Tabellen Mitarbeiter und Projekt müssen vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Mitarbeiter_arbeitet_an_Projekt(
      Mitarbeiter_ID INTEGER NOT NULL,
      Projekt_ID INTEGER NOT NULL,
      PRIMARY KEY(Mitarbeiter_ID, Projekt_ID),
      FOREIGN KEY(Mitarbeiter_ID) REFERENCES Mitarbeiter(ID),
      FOREIGN KEY(Projekt_ID) REFERENCES Projekt(ID));
      Abb. 1-48: Tabelle Mitarbeiter_arbeitet_an_Projekt
Aufgabe

Aufgabe 1-5: Rechnungsverwaltung

Ein Handelsunternehmen möchte seine Kundenrechnungen in einer Datenbank erfassen.

img/Abb_1_49_Rechnung.jpg
Abb. 1-49: Kundenrechnung
Aufgaben
  1. Abb. 1-49 zeigt beispielhaft eine Kundenrechnung. Erstellen Sie auf dieser Grundlage ein ER-Modell. Lösung
    Lösung
    img/Abb_1_50_ERM_Rechnungsverwaltung.svg
    Abb. 1-50: Entity-Relationship-Diagramm Rechnungsverwaltung
  2. Überführen Sie das ER-Modell in ein Relationenmodell. Lösung
    Lösung
    • Ort(ID, Name, Plz)
    • Kunde(ID, KdNr, Vorname, Nachname, Strasse, HausNr, ↑Ort_ID)
    • Rechnung(ID, RechnungsNr, Rechnungsdatum, ↑Kunde_ID)
    • Artikel(ID, ArtNr, Bezeichnung, Listenpreis)
    • Rechnungsposition(ID, PosNr, Anzahl, ↑Artikel_ID, ↑Rechnung_ID)
    Abb. 1-51: Relationen Projektverwaltung.
  3. Formulieren Sie die SQL-Anweisungen zum Erstellen der Tabellen. Lösung
    Lösung
    • SQL
      CREATE TABLE Ort(
      ID INTEGER NOT NULL,
      Name VARCHAR(30),
      Plz VARCHAR(5),
      PRIMARY KEY(ID));
      Abb. 1-52: Tabelle Ort
    • SQL
      CREATE TABLE Kunde(
      ID INTEGER NOT NULL,
      KdNr INTEGER,
      Vorname VARCHAR(30),
      Nachname VARCHAR(30),
      Strasse VARCHAR(30),
      HausNr VARCHAR(5),
      Ort_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Ort_ID) REFERENCES Ort(ID));
      Abb. 1-53: Tabelle Kunde
    • SQL
      CREATE TABLE Rechnung(
      ID INTEGER NOT NULL,
      RechnungsNr INTEGER,
      Rechnungsdatum DATE,
      Kunde_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Kunde_ID) REFERENCES Kunde(ID));
      Abb. 1-54: Tabelle Rechnung
    • SQL
      CREATE TABLE Artikel(
      ID INTEGER NOT NULL,
      ArtikelNr INTEGER,
      Bezeichnung VARCHAR(30),
      Listenpreis Decimal(11, 2),
      PRIMARY KEY(ID));
      Abb. 1-55: Tabelle Artikel
    • SQL
      CREATE TABLE Rechnungsposition(
      ID INTEGER NOT NULL,
      PosNr INTEGER,
      Anzahl INTEGER,
      Artikel_ID INTEGER NOT NULL,
      Rechnung_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Artikel_ID) REFERENCES Artikel(ID),
      FOREIGN KEY(Rechnung_ID) REFERENCES Rechnung(ID));
      Abb. 1-56: Tabelle Rechnungsposition
Aufgabe

Aufgabe 1-6: Fertigung

Ein Maschinenbau-Unternehmen möchte seine Fertigung in einer zentralen Datenbank verwalten.

Anforderungsdefinition

Das Unternehmen hat verschiedene Fertigungsstraßen eingerichtet, in denen jeweils genau ein Produkt hergestellt wird. Manche Produkte werden nicht mehr hergestellt, andere sind dagegen so gefragt, dass sie sogar in mehreren Fertigungsstraßen gefertigt werden.

Eine Fertigungsstraße setzt sich aus verschiedenen Fertigungsstationen zusammen. Eine Fertigungsstation gehört stets zu genau einer Fertigungsstraße.

An einer Fertigungsstation arbeiten in der Regel mehrere Mitarbeiter. In der Planungsphase ist es jedoch auch möglich, dass ihr noch kein Mitarbeiter zugeordnet ist. Ein Mitarbeiter ist höchstens einer Fertigungsstation zugeordnet.

In einer Fertigungsstation können für die einzelnen Arbeitsschritte Maschinen zum Einsatz kommen. Jede Maschine wird in höchstens einer Fertigungsstation verwendet werden. Maschinen, die gerade nicht in einer Fertigungsstraße eingesetzt sind, werden eingelagert, bis sie wieder in einer Fertigungsstraße benötigt bzw. verkauft oder verschrottet werden.

Für jede Maschine wird außerdem erfasst, welche Mitarbeiter prinzipiell in der Lage sind, sie zu bedienen. Es besteht auch die Möglichkeit, dass eine neu angeschaffte Maschine zunächst noch von keinem Mitarbeiter bedient werden kann. Es gibt auch Mitarbeiter, die (noch) nicht in der Lage sind, eine Maschine zu bedienen. Andere wiederum haben Schulungen für verschiedene Maschinen erhalten.

Daten
  • Für jedes Produkt soll eine Artikelnummer und eine Bezeichnung verfügbar sein.
  • Für jede Fertigungsstraße soll ein Kürzel und eine Bezeichnung verfügbar sein.
  • Für jede Fertigungsstation soll ein Kürzel und eine Bezeichnung verfügbar sein.
  • Für jede Maschine soll eine Anlagennummer und eine Bezeichnung verfügbar sein.
  • Für jeden Mitarbeiter sollen Personalnummer sowie Vor- und Nachname verfügbar sein.
Aufgaben
  1. Erstellen Sie ein ER-Modell. Lösung
    Lösung
    img/Abb_1_49_ERM_Fertigung.svg
    Abb. 1-57: Entity-Relationship-Diagramm Fertigung
  2. Überführen Sie das ER-Modell in ein Relationenmodell. Lösung
    Lösung
    • Fertigungsstrasse(ID, Bezeichnung, Kuerzel, ↑Produkt_ID)
    • Produkt(ID, Artikelnummer, Bezeichnung)
    • Fertigungsstation(ID, Bezeichnung, Kuerzel, ↑Fertigungsstrasse_ID)
    • Maschine(ID, Anlagennummer, Bezeichnung, ↑Fertigungsstation_ID)
    • Mitarbeiter(ID, Personalnummer, Vorname, Nachname, ↑Fertigungsstation_ID)
    • Mitarbeiter_kann_bedienen_Maschine(↑Mitarbeiter_ID, ↑Maschine_ID)
    Abb. 1-58: Relationen Fertigung.
  3. Formulieren Sie die SQL-Anweisungen zum Erstellen der Tabellen. Lösung
    Lösung
    • SQL
      CREATE TABLE Produkt(
      ID INTEGER NOT NULL,
      Artikelnummer INTEGER,
      Bezeichnung VARCHAR(30),
      PRIMARY KEY(ID));
      Abb. 1-59: Tabelle Produkt
    • Die Tabelle Produkt muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Fertigungsstrasse(
      ID INTEGER NOT NULL,
      Bezeichnung VARCHAR(30),
      Kuerzel VARCHAR(10),
      Produkt_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Produkt_ID) REFERENCES Produkt(ID));
      Abb. 1-60: Tabelle Fertigungsstrasse
    • Die Tabelle Fertigungsstrasse muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Fertigungsstation(
      ID INTEGER NOT NULL,
      Bezeichnung VARCHAR(30),
      Kuerzel VARCHAR(10),
      Fertigungsstrasse_ID INTEGER NOT NULL,
      PRIMARY KEY(ID),
      FOREIGN KEY(Fertigungsstrasse_ID) REFERENCES Fertigungsstrasse(ID));
      Abb. 1-61: Tabelle Fertigungsstation
    • Die Tabelle Fertigungsstation muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Mitarbeiter(
      ID INTEGER NOT NULL,
      Personalnummer INTEGER,
      Vorname VARCHAR(30),
      Nachname VARCHAR(30),
      Fertigungsstation_ID INTEGER,
      PRIMARY KEY(ID),
      FOREIGN KEY(Fertigungsstation_ID) REFERENCES Fertigungsstation(ID));
      Abb. 1-62: Tabelle Mitarbeiter
    • Die Tabelle Fertigungsstation muss vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Maschine(
      ID INTEGER NOT NULL,
      Anlagennummer INTEGER,
      Bezeichnung VARCHAR(30),
      Fertigungsstation_ID INTEGER,
      PRIMARY KEY(ID),
      FOREIGN KEY(Fertigungsstation_ID) REFERENCES Fertigungsstation(ID));
      Abb. 1-63: Tabelle Maschine
    • Die Tabellen Mitarbeiter und Maschine müssen vorhanden sein, bevor diese Tabelle erzeugt werden kann.

      SQL
      CREATE TABLE Mitarbeiter_kann_bedienen_Maschine(
      Mitarbeiter_ID INTEGER NOT NULL,
      Maschine_ID INTEGER NOT NULL,
      PRIMARY KEY(Mitarbeiter_ID, Maschine_ID),
      FOREIGN KEY(Mitarbeiter_ID) REFERENCES Mitarbeiter(ID),
      FOREIGN KEY(Maschine_ID) REFERENCES Maschine(ID));
      Abb. 1-64: Tabelle Mitarbeiter_kann_bedienen_Maschine
Aufgabe

Aufgabe 1-7: Abiturprüfung Wirtschaftsinformatik 2010/11

Abb_1_65_Abi_WI_10-11_1-1.jpg
Abb. 1-65: Aufgabe 1 – 1.1
Lösung
Lösung
  • 1.1.1

    img/Abb_1_57a_Abi_WI_10-11_1-1-1_Loesung.svg
    Abb. 1-66: Aufgabe 1 – 1.1.1 (Lösungsvorschlag)
  • 1.1.2

    • Kueche(Kuechennr, Bezeichnung, ↑MitarbeiterNr)
    • Mitarbeiter(MitarbeiterNr, Nachname, Vorname)
    • Moebel(Moebelnr, Bezeichnung, Abmessungen, Preis, ↑Herstellernr, ↑Kategorienr)
    • Kueche_besteht_aus_Moebel(↑Kuechennr, ↑Moebelnr)
    • Hersteller(Herstellernr, Firma, Sitz)
    • Kategorie(Kategorienr, Bezeichnung)
    Abb. 1-67: Aufgabe 1 – 1.1.2 (Lösungsvorschlag)
    • Kueche(ID, Kuechennr, Bezeichnung, ↑Mitarbeiter_ID)
    • Mitarbeiter(ID, , MitarbeiterNr, Nachname, Vorname)
    • Moebel(ID, Moebelnr, Bezeichnung, Abmessungen, Preis, ↑Hersteller_ID, ↑Kategorie_ID)
    • Kueche_besteht_aus_Moebel(↑Kueche_ID, ↑Moebel_ID)
    • Hersteller(ID, Herstellernr, Firma, Sitz)
    • Kategorie(ID, Kategorienr, Bezeichnung)
    Abb. 1-68: Aufgabe 1 – 1.1.2 (Lösungsvorschlag II)
  • 1.1.3

    Referenzielle Integrität bedeutet, dass sich die in einer verweisenden Tabelle enthaltenen Fremdschlüsselwerte auf genau einen Datensatz der Tabelle beziehen, auf die verwiesen wird.

    Zum Beispiel erfordert die referenzielle Integrität, dass in der Tabelle Kueche in der Spalte Mitarbeiter_ID ausschließlich solche Werte gespeichert sind, die auf genau einen Datensatz der Tabelle Mitarbeiter verweisen. Somit exisitert für jeden dieser Werte in der Tabelle Mitarbeiter ein Datensatz, der genau diesen Wert als Primärschlüssel besitzt.

    Abb. 1-69: Aufgabe 1 – 1.1.3 (Lösungsvorschlag)
Aufgabe

Aufgabe 1-8: Abiturprüfung Wirtschaftsinformatik 2011/12

Abb_1_70_Abi_WI_11-12_1-1.jpg
Abb. 1-70: Aufgabe 1 – 1.1
Lösung
Lösung
img/Abb_1_58a_Abi_WI_11-12_1-1_Loesung.svg
Abb. 1-71: Aufgabe 1 – 1.1 (Lösungsvorschlag)
Aufgabe

Aufgabe 1-9: Abiturprüfung Wirtschaftsinformatik 2012/13

Immobilie(immobilienNr, bezeichnung, grundmiete)

Abb_1_72_Abi_WI_12-13_1-3.jpg
Abb. 1-72: Aufgabe 1 – 1.3
Lösung
Lösung
  • Immobilien(immobilienNr, bezeichnung, grundmietpreis, ↑kategorieNr, ↑adressenNr)
  • Immobilie_enthaelt_Sonderausstattung(↑immobilienNr, ↑Sonderausstattung_ID)
  • Sonderausstattung(ID, bezeichnung, mietaufschlag)
Abb. 1-73: Aufgabe 1 – 1.3 (Lösungsvorschlag)