Hilfe bei Microsoft Access?
Guten Tag, ich benötige Hilfe bei einer Schulaufgabe mit Access. Ich habe die Aufgabe als Bild angehängt. Das erste Aufgabenblatt habe ich schon gelöst, aber zum Verständnis mit rein genommen. Ich weiß wirklich nicht mehr weiter und freue mich über Antworten
1 Antwort
I. Konzeptionelle Modellierung & Normalisierung
- Aktueller Zustand & Normalform
- 1NF: Erfüllt (alle Werte atomar).
- 2NF: Nicht erfüllt (Adresse, Mieter- und Hausmeisterdaten hängen nur von Teilen des zusammengesetzten Schlüssels ab und werden mehrfach gespeichert).
- 3NF: Nicht erfüllt (z. B. hängen Hausmeister- und Adressdaten transitiv über Wohnung).
- Probleme
- Redundanz: Straße, PLZ, Ort, Mieter- und Hausmeister-Daten mehrfach in jedem Raum-Datensatz.
- Update-Anomalie: Änderung der Straße muss in allen Zeilen erfolgen.
- Lösch-Anomalie: Löschen des letzten Raums löscht alle Infos zur Wohnung.
- Einfüge-Anomalie: Neue Wohnung ohne Räume kann nicht gespeichert werden (kein Raum-Eintrag möglich).
- ER-Modell (Textform)
- Entitäten und Attribute:
- – Gebäude (GebID PK; Straße; PLZ; Ort)
- – Wohnung (WohnID PK; GebID FK; Etage; Lage; Fläche; ZimmerAnzahl)
- – Raum (RaumID PK; WohnID FK; Typ; Länge; Breite)
- – Mieter (MietID PK; Anrede; Vorname; Nachname; Geburtsdatum)
- – Hausmeister (HMID PK; Anrede; Vorname; Nachname)
- – Vermietung (VermID PK; WohnID FK; MietID FK; HMID FK; Beginn; Kaltmiete)
- Beziehungen:
- Gebäude 1 – ∞ Wohnung
- Wohnung 1 – ∞ Raum
- Wohnung 1 – ∞ Vermietung – ∞ Mieter
- Vermietung – ∞ Hausmeister
- Damit ist alles in der 3. Normalform:
- • Jedes Nicht-Schlüssel-Attribut hängt nur vom ganzen Primärschlüssel ab.
- • Keine transitiven Abhängigkeiten.
II. Physische Umsetzung in Access
- Tabellen & Felder (alle Autowert-PK, alle FK als Zahl-Typ, Datum als Datum, Währung als Währung, Text als Kurzer Text)
- – Tabelle „Gebäude“:
- • GebID
- • Straße
- • PLZ
- • Ort
- – Tabelle „Wohnung“:
- • WohnID
- • GebID
- • Etage
- • Lage
- • Fläche
- • ZimmerAnzahl
- – Tabelle „Raum“:
- • RaumID
- • WohnID
- • Typ
- • Länge
- • Breite
- – Tabelle „Mieter“:
- • MietID
- • Anrede
- • Vorname
- • Nachname
- • Geburtsdatum
- – Tabelle „Hausmeister“:
- • HMID
- • Anrede
- • Vorname
- • Nachname
- – Tabelle „Vermietung“:
- • VermID
- • WohnID
- • MietID
- • HMID
- • Beginn
- • Kaltmiete
- Fehlende Räume ergänzen
- – Wurgwitzer Ring 12 (WohnID z. B. 3): Bad (6,0 × 4,8 m) + weiteres Zimmer (z. B. Schlafzimmer) eintragen.
- – Freitaler Straße 44 links (EG, 65 m²): bereits Küche & Wohnzimmer vorhanden; ggf. Flur ergänzen.
- – Neue 3-Zimmer- und 4-Zimmer-Wohnung auf Freitaler Straße: in „Wohnung“ anlegen, dann 3 bzw. 4 Einträge in „Raum“ (z. B. Küche, Wohnzimmer, Bad, Schlafzimmer, Arbeitszimmer …).
- Beziehungen & referenzielle Integrität
- – Gebäude.GebID → Wohnung.GebID
- – Wohnung.WohnID → Raum.WohnID
- – Wohnung.WohnID → Vermietung.WohnID
- – Mieter.MietID → Vermietung.MietID
- – Hausmeister.HMID → Vermietung.HMID
- In der Access-Beziehungsansicht: alle FK verbinden und „Referentielle Integrität“ aktivieren.
- Formular „Neue Wohnung“
- – Hauptformular: Datensatzquelle = „Wohnung“.
- – Unterformular: Datensatzquelle = „Raum“, verknüpft über WohnID.
- – So kann man beim Anlegen einer Wohnung direkt alle zugehörigen Räume eintragen.
- Vier neue Wohnungen (Meißen und Umgebung)
- Für jede der vier neuen Wohnungsadressen:
- – Datensatz in „Wohnung“ anlegen (jeweils mit GebID der neuen oder vorhandenen Gebäude).
- – Je nach Zimmerzahl 2–4 Datensätze in „Raum“ anlegen (Küche, Bad, Wohnzimmer, Schlafzimmer etc.).
III. Abfragen und Erweiterungen
- Alle Wohnungen, die Hausmeister Kramer länger als 25 Jahre betreut
- SQL (in Abfrageentwurf auf SQL-Ansicht umstellen):
SELECT W.WohnID,
V.Beginn,
DateDiff("yyyy", V.Beginn, Date()) AS Jahre
FROM (Vermietung AS V
INNER JOIN Hausmeister AS H
ON V.HMID = H.HMID)
INNER JOIN Wohnung AS W
ON V.WohnID = W.WohnID
WHERE H.Nachname = "Kramer"
AND DateDiff("yyyy", V.Beginn, Date()) > 25;
- Noch freie Wohnungen beiden Hausmeistern zuweisen
- – Freie Wohnungen ermitteln: Abfrage „Wohnung“ ohne passenden „Vermietung“-Eintrag.
- – Für jeden gefundenen Datensatz zwei Anfüge-Abfragen, die je einen Datensatz in „Vermietung“ mit HMID von Kramer und Langer anlegen.
- Hausmeister Langer in Ruhestand → Starke ersetzen
- Aktualisierungsabfrage:
UPDATE Vermietung
SET HMID =
(SELECT HMID FROM Hausmeister WHERE Nachname="Starke")
WHERE HMID =
(SELECT HMID FROM Hausmeister WHERE Nachname="Langer");
- Noch freie Mietwohnungen in Meißen vermieten
- – Wohnung1: Mieter = Frau Schneider, Beginn = 15.04.2022
- – Wohnung2: Mieter = Herr Keller, Beginn = Heute + 4 Monate
- – Wohnung3: Mieter = Familie Müller, Beginn = nächster Quartalsanfang
- – Wohnung4: Kurzzeitmiete als Reserve (eintragen, aber kein MietID)
- → für jede einfügen: Abfrageentwurf → „Anfügeabfrage“ → Tabelle Vermietung
- Neuer Mieter zieht ein (Wurgwitzer Ring)
- SQL-Beispiel (in einer Anfüge-Abfrage):
INSERT INTO Vermietung (WohnID, MietID, HMID, Beginn, Kaltmiete)
VALUES
(3,
(SELECT MietID FROM Mieter WHERE Nachname="Weber"),
(SELECT HMID FROM Hausmeister WHERE Nachname="Langer"),
#15.03.2022#,
[Kaltmiete]*1.065);
- Meldesystem für Reparatur/Defekt
- – Tabelle „Meldung“: MeldID PK; WohnID FK; HMID FK; Datum; Priorität; Status; Beschreibung; Material.
- – Formular „Meldung“: Dropdowns für Wohnung und zuständigen Hausmeister, Freitext für Beschreibung.
- – Abfrage „Offene Meldungen“: Sortierung
- Priorität DESC, Datum ASC.
- Renovierungsarbeiten erfassen
- – Tabelle „Renovierung“: RenID PK; WohnID FK; Beschreibung; GeplantAb; GeplantBis; Status.
- – Formular analog zu „Meldung“.
- Heizungs-Ausfall bei Herrn Müller
- – Neuer Datensatz in „Meldung“:
- • WohnID = Müller’s Wohnung
- • HMID = zuständiger Hausmeister
- • Datum = Heute
- • Priorität = Hoch
- • Status = Offen
- • Beschreibung = „Heizung ausgefallen“
- Bericht „Mietstatus aller Wohnungen“
- – Neuer Report: Gruppieren nach Gebäude, dann Wohnung.
- – Felder: WohnID, Etage, Lage, aktueller Mieter (oder „frei“), Beginn, Kaltmiete.
- – Bedingte Formatierung: Freie Wohnungen farblich hervorheben.
- Export ins SQL-Format
- – Ribbon „Externe Daten“ → „ODBC-Datenbank“ (oder „Textdatei“) → Export-Typ „SQL“ wählen.
– Access generiert eine .sql-Datei mit CREATE-TABLE und INSERT-Statements.
Woher ich das weiß:eigene Erfahrung