Hilfe bei Microsoft Access?

1 Antwort

I. Konzeptionelle Modellierung & Normalisierung

  1. 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).
  1. 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).
  1. ER-Modell (Textform)
  2. Entitäten und Attribute:
  3. – Gebäude (GebID PK; Straße; PLZ; Ort)
  4. – Wohnung (WohnID PK; GebID FK; Etage; Lage; Fläche; ZimmerAnzahl)
  5. – Raum (RaumID PK; WohnID FK; Typ; Länge; Breite)
  6. – Mieter (MietID PK; Anrede; Vorname; Nachname; Geburtsdatum)
  7. – Hausmeister (HMID PK; Anrede; Vorname; Nachname)
  8. – Vermietung (VermID PK; WohnID FK; MietID FK; HMID FK; Beginn; Kaltmiete)
  9. Beziehungen:
  10. Gebäude 1 – ∞ Wohnung
  11. Wohnung 1 – ∞ Raum
  12. Wohnung 1 – ∞ Vermietung – ∞ Mieter
  13. Vermietung – ∞ Hausmeister
  14. Damit ist alles in der 3. Normalform:
  15. • Jedes Nicht-Schlüssel-Attribut hängt nur vom ganzen Primärschlüssel ab.
  16. • Keine transitiven Abhängigkeiten.

II. Physische Umsetzung in Access

  1. Tabellen & Felder (alle Autowert-PK, alle FK als Zahl-Typ, Datum als Datum, Währung als Währung, Text als Kurzer Text)
  2. – Tabelle „Gebäude“:
  3. • GebID
  4. • Straße
  5. • PLZ
  6. • Ort
  7. – Tabelle „Wohnung“:
  8. • WohnID
  9. • GebID
  10. • Etage
  11. • Lage
  12. • Fläche
  13. • ZimmerAnzahl
  14. – Tabelle „Raum“:
  15. • RaumID
  16. • WohnID
  17. • Typ
  18. • Länge
  19. • Breite
  20. – Tabelle „Mieter“:
  21. • MietID
  22. • Anrede
  23. • Vorname
  24. • Nachname
  25. • Geburtsdatum
  26. – Tabelle „Hausmeister“:
  27. • HMID
  28. • Anrede
  29. • Vorname
  30. • Nachname
  31. – Tabelle „Vermietung“:
  32. • VermID
  33. • WohnID
  34. • MietID
  35. • HMID
  36. • Beginn
  37. • Kaltmiete
  38. Fehlende Räume ergänzen
  39. – Wurgwitzer Ring 12 (WohnID z. B. 3): Bad (6,0 × 4,8 m) + weiteres Zimmer (z. B. Schlafzimmer) eintragen.
  40. – Freitaler Straße 44 links (EG, 65 m²): bereits Küche & Wohnzimmer vorhanden; ggf. Flur ergänzen.
  41. – 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 …).
  42. Beziehungen & referenzielle Integrität
  43. – Gebäude.GebID → Wohnung.GebID
  44. – Wohnung.WohnID → Raum.WohnID
  45. – Wohnung.WohnID → Vermietung.WohnID
  46. – Mieter.MietID → Vermietung.MietID
  47. – Hausmeister.HMID → Vermietung.HMID
  48. In der Access-Beziehungsansicht: alle FK verbinden und „Referentielle Integrität“ aktivieren.
  49. Formular „Neue Wohnung“
  50. – Hauptformular: Datensatzquelle = „Wohnung“.
  51. – Unterformular: Datensatzquelle = „Raum“, verknüpft über WohnID.
  52. – So kann man beim Anlegen einer Wohnung direkt alle zugehörigen Räume eintragen.
  53. Vier neue Wohnungen (Meißen und Umgebung)
  54. Für jede der vier neuen Wohnungsadressen:
  55. – Datensatz in „Wohnung“ anlegen (jeweils mit GebID der neuen oder vorhandenen Gebäude).
  56. – Je nach Zimmerzahl 2–4 Datensätze in „Raum“ anlegen (Küche, Bad, Wohnzimmer, Schlafzimmer etc.).

III. Abfragen und Erweiterungen

  1. Alle Wohnungen, die Hausmeister Kramer länger als 25 Jahre betreut
  2. 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;
  1. Noch freie Wohnungen beiden Hausmeistern zuweisen
  2. – Freie Wohnungen ermitteln: Abfrage „Wohnung“ ohne passenden „Vermietung“-Eintrag.
  3. – Für jeden gefundenen Datensatz zwei Anfüge-Abfragen, die je einen Datensatz in „Vermietung“ mit HMID von Kramer und Langer anlegen.
  4. Hausmeister Langer in Ruhestand → Starke ersetzen
  5. Aktualisierungsabfrage:
UPDATE Vermietung
SET HMID =
  (SELECT HMID FROM Hausmeister WHERE Nachname="Starke")
WHERE HMID =
  (SELECT HMID FROM Hausmeister WHERE Nachname="Langer");
  1. Noch freie Mietwohnungen in Meißen vermieten
  2. – Wohnung1: Mieter = Frau Schneider, Beginn = 15.04.2022
  3. – Wohnung2: Mieter = Herr Keller, Beginn = Heute + 4 Monate
  4. – Wohnung3: Mieter = Familie Müller, Beginn = nächster Quartalsanfang
  5. – Wohnung4: Kurzzeitmiete als Reserve (eintragen, aber kein MietID)
  6. → für jede einfügen: Abfrageentwurf → „Anfügeabfrage“ → Tabelle Vermietung
  7. Neuer Mieter zieht ein (Wurgwitzer Ring)
  8. 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);
  1. Meldesystem für Reparatur/Defekt
  2. – Tabelle „Meldung“: MeldID PK; WohnID FK; HMID FK; Datum; Priorität; Status; Beschreibung; Material.
  3. – Formular „Meldung“: Dropdowns für Wohnung und zuständigen Hausmeister, Freitext für Beschreibung.
  4. – Abfrage „Offene Meldungen“: Sortierung
  5. Priorität DESC, Datum ASC.
  6. Renovierungsarbeiten erfassen
  7. – Tabelle „Renovierung“: RenID PK; WohnID FK; Beschreibung; GeplantAb; GeplantBis; Status.
  8. – Formular analog zu „Meldung“.
  9. Heizungs-Ausfall bei Herrn Müller
  10. – Neuer Datensatz in „Meldung“:
  11. • WohnID = Müller’s Wohnung
  12. • HMID = zuständiger Hausmeister
  13. • Datum = Heute
  14. • Priorität = Hoch
  15. • Status = Offen
  16. • Beschreibung = „Heizung ausgefallen“
  17. Bericht „Mietstatus aller Wohnungen“
  18. – Neuer Report: Gruppieren nach Gebäude, dann Wohnung.
  19. – Felder: WohnID, Etage, Lage, aktueller Mieter (oder „frei“), Beginn, Kaltmiete.
  20. – Bedingte Formatierung: Freie Wohnungen farblich hervorheben.
  21. Export ins SQL-Format
  22. – 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

Meepewo 
Beitragsersteller
 07.05.2025, 21:41

Wow Vielen Dank für die Umfangreiche Antwort!❤️