Implementierung von Datenbanksystemen - Exam.pdf

Implementierung von Datenbanksystemen - Exam
Implementierung von Datenbanksystemen - Exam Aufgabe 1) Im Rahmen der Vorlesung 'Implementierung von Datenbanksystemen' im Studiengang 'Informatik' an der Universität Erlangen-Nürnberg wurde die Rolle von Datenbanken in Unternehmen intensiv behandelt. Datenbanksysteme stellen das Rückgrat der Informationsverarbeitung in Unternehmen dar und ermöglichen eine effiziente Verwaltung großer Datenmengen ...

© StudySmarter 2024, all rights reserved.

Implementierung von Datenbanksystemen - Exam

Aufgabe 1)

Im Rahmen der Vorlesung 'Implementierung von Datenbanksystemen' im Studiengang 'Informatik' an der Universität Erlangen-Nürnberg wurde die Rolle von Datenbanken in Unternehmen intensiv behandelt. Datenbanksysteme stellen das Rückgrat der Informationsverarbeitung in Unternehmen dar und ermöglichen eine effiziente Verwaltung großer Datenmengen sowie die Unterstützung von Entscheidungsprozessen. Unternehmen setzen Datenbanken in verschiedenen Bereichen ein, darunter:

  • Speicherung und Verwaltung von Kundendaten (Customer Relationship Management, CRM)
  • Betrieb von ERP-Systemen (Enterprise Resource Planning)
  • Analyse großer Datenmengen (Big Data Analytics)
  • Sicherung und Wiederherstellung von Daten (Backup und Recovery)
  • Unterstützung bei der Einhaltung von gesetzlichen Vorschriften (Compliance)

a)

(a) Erkläre das Konzept und die Bedeutung von Customer Relationship Management (CRM) in Unternehmen und wie Datenbanksysteme zur Verwaltung von Kundendaten verwendet werden.

Lösung:

Customer Relationship Management (CRM) ist ein Konzept und eine Unternehmensstrategie, die darauf abzielt, die Beziehungen zu Kunden zu verwalten und zu verbessern. Das Hauptziel von CRM ist es, langfristige und profitable Kundenbeziehungen aufzubauen, indem man Kundenbedürfnisse besser versteht und darauf reagiert. Das CRM-System bietet eine zentrale Plattform, auf der alle Informationen über Kunden gesammelt, gespeichert und analysiert werden.

  • Kundendaten erfassen und speichern: Ein CRM-System ermöglicht es Unternehmen, detaillierte Informationen über ihre Kunden zu speichern, einschließlich Kontaktdaten, Historie der Interaktionen, Kaufverhalten und Vorlieben.
  • Kundensegmentierung: Unternehmen können ihre Kunden in verschiedene Segmente einteilen, um gezielte Marketingkampagnen und personalisierte Angebote zu erstellen.
  • Verkaufsaktivitäten verfolgen: CRM-Systeme helfen Verkäufern, ihre Verkaufsaktivitäten zu verfolgen, vom ersten Kontakt bis zum Abschluss eines Geschäfts.
  • Kundendienst verbessern: Kundendienstteams können auf alle relevanten Kundendaten zugreifen, um Anfragen schneller zu bearbeiten und besseren Service zu bieten.
  • Analyse und Berichterstellung: Mithilfe von CRM-Systemen können Unternehmen Berichte und Analysen erstellen, um Trends zu erkennen und datengestützte Entscheidungen zu treffen.

Bedeutung von Datenbanksystemen in CRM:

  • Zentrale Datenspeicherung: Datenbanksysteme bieten eine zentrale Plattform, auf der alle Kundendaten gespeichert und organisiert werden. Dadurch wird sichergestellt, dass alle Abteilungen eines Unternehmens auf dieselben aktuellen Informationen zugreifen können.
  • Datenintegrität und Sicherheit: Datenbanksysteme gewährleisten die Integrität und Sicherheit der gespeicherten Daten durch Mechanismen wie Datenbanktransaktionen, Datensicherungen und Zugriffskontrollen.
  • Effiziente Datensuche und -abfrage: Mit leistungsstarken Abfragetools können Unternehmen schnell relevante Informationen aus großen Datenmengen abrufen.
  • Skalierbarkeit: Datenbanksysteme sind skalierbar und können problemlos mit wachsenden Datenmengen umgehen, was für Unternehmen, die expandieren, von entscheidender Bedeutung ist.
  • Integration mit anderen Systemen: Datenbanksysteme ermöglichen die Integration mit anderen Unternehmenssystemen wie ERP (Enterprise Resource Planning) und BI (Business Intelligence), was eine nahtlose Datenverarbeitung und -analyse ermöglicht.

b)

(b) Angenommen, ein Unternehmen plant die Einführung eines neuen ERP-Systems. Beschreibe die Rolle von Datenbanken in einem ERP-System und diskutiere, welche Herausforderungen bei der Datenmigration und -integration auftreten können.

Lösung:

Rolle von Datenbanken in einem ERP-System:

Ein ERP-System (Enterprise Resource Planning) ist eine integrierte Softwarelösung, die verschiedene Geschäftsprozesse und -funktionen innerhalb eines Unternehmens steuert und koordiniert. Die Rolle der Datenbanken in einem ERP-System ist von zentraler Bedeutung, da sie als Backbone für die Speicherung, Verwaltung und Verarbeitung der Unternehmensdaten dienen. Hier sind die spezifischen Rollen, die Datenbanken in einem ERP-System spielen:

  • Zentrale Datenspeicherung: Datenbanken bieten eine zentrale und konsistente Plattform, auf der sämtliche Unternehmensdaten gespeichert werden, wie z.B. Buchhaltung, Personalwesen, Beschaffung, Lagerhaltung und Produktion.
  • Echtzeit-Datenzugriff: Durch den Einsatz von Datenbanken können verschiedene Abteilungen in Echtzeit auf aktuelle Daten zugreifen, was die Entscheidungsfindung und Effizienz verbessert.
  • Datenkonsistenz und -integrität: Datenbanken gewährleisten die Konsistenz und Integrität der Daten durch den Einsatz von Transaktionsmanagement, Datenvalidierung und referenzieller Integrität.
  • Berichterstattung und Analysen: Datenbanken ermöglichen es Unternehmen, umfassende Berichte und Analysen zu erstellen, die für das Management und die Optimierung von Geschäftsprozessen notwendig sind.
  • Automatisierung von Prozessen: ERP-Systeme automatisieren viele Geschäftsprozesse, und Datenbanken spielen eine entscheidende Rolle bei der Speicherung und Verarbeitung der Daten, die solche Automatisierungen ermöglichen.

Herausforderungen bei der Datenmigration und -integration:

Die Einführung eines neuen ERP-Systems bringt mehrere Herausforderungen mit sich, insbesondere bei der Datenmigration und -integration. Hier sind einige der wichtigsten Herausforderungen:

  • Datenqualität: Bevor Daten in das neue ERP-System migriert werden, müssen sie auf Konsistenz, Vollständigkeit und Genauigkeit geprüft werden. Schlechte Datenqualität kann zu Fehlern und Ineffizienzen führen.
  • Datenmapping: Die vorhandenen Datenstrukturen müssen in die neuen Datenstrukturen des ERP-Systems umgewandelt werden. Dies erfordert ein detailliertes Verständnis der Datenschemata beider Systeme.
  • Datentransformation: In vielen Fällen müssen die Daten während der Migration transformiert werden, um die Anforderungen des neuen ERP-Systems zu erfüllen. Dies kann komplex und zeitaufwendig sein.
  • Schnittstellen und Integration: Das neue ERP-System muss nahtlos mit anderen bestehenden Systemen und Anwendungen integriert werden. Dies erfordert die Entwicklung von Schnittstellen und Middleware-Lösungen.
  • Downtime und Geschäftsunterbrechungen: Während der Migration können Systemausfälle oder -verzögerungen auftreten, die den Geschäftsbetrieb beeinträchtigen. Eine sorgfältige Planung und Durchführung sind erforderlich, um Unterbrechungen zu minimieren.
  • Schulung und Change Management: Mitarbeiter müssen in der Nutzung des neuen ERP-Systems geschult werden, und es muss ein effektives Change Management betrieben werden, um die Akzeptanz und effiziente Nutzung des Systems sicherzustellen.

c)

(c) Bei der Analyse großer Datenmengen im Bereich 'Big Data Analytics' spielen Datenbanken eine zentrale Rolle. Erkläre, wie relationale Datenbanken und NoSQL-Datenbanken in diesem Zusammenhang eingesetzt werden. Veranschauliche Deine Antwort mit einem konkreten Beispiel.

Lösung:

Rolle von Datenbanken bei Big Data Analytics:

Im Bereich Big Data Analytics werden sowohl relationale Datenbanken als auch NoSQL-Datenbanken eingesetzt, um große Datenmengen zu speichern, zu verwalten und zu analysieren. Jede dieser Datenbanktypen hat ihre eigenen Stärken und Einsatzbereiche.

  • Relationale Datenbanken:
    • Relationale Datenbanken wie MySQL, PostgreSQL und Oracle basieren auf einem strukturierten Schema und verwenden SQL (Structured Query Language) für die Abfrage und Verwaltung der Daten. Sie sind besonders gut für Anwendungen geeignet, die starke Konsistenz, ACID-Eigenschaften (Atomicity, Consistency, Isolation, Durability) und komplexe Abfragen erfordern.
    • Beispiel: Ein Unternehmen, das Kundendaten analysiert, könnte eine relationale Datenbank nutzen, um strukturierte Daten wie Kundeninformationen, Bestellhistorie und Transaktionsdaten zu speichern. Mit SQL können detaillierte Abfragen durchgeführt werden, wie beispielsweise das Auffinden von Kunden, die in den letzten sechs Monaten mehr als X Euro ausgegeben haben.
  • NoSQL-Datenbanken:
    • NoSQL-Datenbanken wie MongoDB, Cassandra und HBase sind für unstrukturierte oder semi-strukturierte Daten konzipiert und bieten hohe Skalierbarkeit sowie Flexibilität. Sie unterstützen verschiedene Datenmodelle wie Dokument-, Spalten-, Schlüssel-Wert- und Graphendatenbanken und sind besonders gut für Anwendungen geeignet, die große Datenmengen und schnelle Schreib-/Lesevorgänge erfordern.
    • Beispiel: Ein Social-Media-Unternehmen könnte eine NoSQL-Datenbank wie MongoDB verwenden, um große Mengen an Benutzerinteraktionen, Beiträgen und Kommentaren zu speichern und zu analysieren. Diese Datenbank kann unstrukturierte Daten wie Text, Bilder und Videos effizient speichern und ermöglicht schnelle Analysen, um Muster in Benutzerinteraktionen zu erkennen.

Zur Veranschaulichung wollen wir uns ein Beispiel ansehen, in dem sowohl relationale als auch NoSQL-Datenbanken eingesetzt werden:

Beispiel: Eine E-Commerce-Plattform

  • Relationale Datenbank: Die Plattform verwendet MySQL, um strukturierte Daten wie Kundeninformationen, Produktkatalog und Bestellungen zu speichern. Mit SQL-Abfragen können genaue Analysen durchgeführt werden, z.B. die Identifizierung von Top-verkauften Produkten und Umsatzberichten.
  • NoSQL-Datenbank: Zusätzlich verwendet die Plattform MongoDB, um unstrukturierte Daten wie Produktbewertungen, Benutzerkommentare und Suchanfragen zu speichern. Diese Daten können verwendet werden, um sentimentelle Analysen durchzuführen und personalisierte Empfehlungen an die Benutzer zu senden.

Durch die Kombination der Stärken beider Datenbanktypen kann die E-Commerce-Plattform umfassende Big Data Analytics durchführen und gleichzeitig sowohl strukturierte als auch unstrukturierte Daten effizient verwalten.

d)

(d) Datenbanksysteme unterstützen die Einhaltung von gesetzlichen Vorschriften (Compliance). Beschreibe, welche gesetzlichen Anforderungen Unternehmen typischerweise erfüllen müssen und wie Datenbanksysteme dabei helfen können. Gehe auf mindestens zwei konkrete Vorschriften ein.

Lösung:

Unterstützung von Datenbanksystemen bei der Einhaltung von gesetzlichen Vorschriften (Compliance):

Unternehmen müssen eine Vielzahl gesetzlicher Vorschriften einhalten, um Compliance zu gewährleisten. Datenbanksysteme spielen eine wesentliche Rolle bei der Unterstützung dieser Anforderungen, indem sie sicherstellen, dass Daten sicher gespeichert, verwaltet und abgerufen werden können. Nachfolgend werden zwei konkrete Vorschriften und die Rolle von Datenbanksystemen bei der Einhaltung dieser Vorschriften beschrieben.

  • DSGVO (Datenschutz-Grundverordnung):
  • Die DSGVO ist eine Verordnung der Europäischen Union zum Schutz personenbezogener Daten und zur Wahrung der Privatsphäre von EU-Bürgern. Sie stellt strenge Anforderungen an die Verarbeitung, Speicherung und den Schutz personenbezogener Daten.
  • Rolle von Datenbanksystemen:
  • Datensicherheit: Datenbanksysteme bieten verschiedene Sicherheitsmechanismen wie Verschlüsselung, Zugriffskontrollen und Audit-Logs, um sicherzustellen, dass personenbezogene Daten geschützt sind und nur autorisierte Personen darauf zugreifen können.
  • Datenintegrität: Durch den Einsatz von Transaktionsmanagement und Datenvalidierungsregeln gewährleisten Datenbanksysteme die Integrität der gespeicherten Daten, sodass Daten nicht unbefugt geändert oder gelöscht werden können.
  • Datenspeicherung und Datenlöschung: Datenbanksysteme unterstützen Funktionen zur sicheren Speicherung und Löschung personenbezogener Daten, sodass Unternehmen die Anforderungen der DSGVO in Bezug auf Datenretention und das Recht auf Löschung („Recht auf Vergessenwerden“) erfüllen können.
  • SOX (Sarbanes-Oxley Act):
  • Der Sarbanes-Oxley Act (SOX) ist ein US-amerikanisches Gesetz, das nach den Finanzskandalen in den frühen 2000er Jahren eingeführt wurde. Es stellt Anforderungen an die Finanzberichterstattung und die interne Kontrolle von Unternehmen, um die Transparenz und Genauigkeit der Finanzberichte zu gewährleisten und Betrug zu verhindern.
  • Rolle von Datenbanksystemen:
  • Auditierbarkeit: Datenbanksysteme können umfangreiche Audit-Logs führen, in denen alle Änderungen an Finanzdaten und die Zugriffe auf diese Daten protokolliert werden. Dies ermöglicht eine Nachverfolgbarkeit und Überprüfung der Datenintegrität.
  • Zugriffskontrollen: Datenbanksysteme bieten Mechanismen zur feingranularen Zugriffskontrolle, sodass nur autorisierte Personen Finanzdaten einsehen oder ändern können. Dies hilft, unbefugten Zugriff und Manipulationen zu verhindern.
  • Berichte und Analysen: Datenbanksysteme unterstützen die Erstellung von Berichten und Analysen, die für die Finanzberichterstattung und die Einhaltung von SOX erforderlich sind. Diese Berichte können automatisch generiert und regelmäßig überprüft werden.

Zusammenfassend lässt sich sagen, dass Datenbanksysteme durch ihre Sicherheitsmechanismen, Datenintegrität und Auditierbarkeit Unternehmen erheblich dabei unterstützen können, gesetzliche Vorschriften wie die DSGVO und SOX einzuhalten. Dies trägt nicht nur zur rechtlichen Konformität bei, sondern schützt auch die Integrität und Sicherheit der Unternehmensdaten.

Aufgabe 2)

Gegeben sind zwei Relationen Studenten und Prüfungen:

Studenten(StudentID, Name, Semester)Die Relation Studenten enthält die Attribute StudentID, Name und Semester.

Prüfungen(StudentID, Prüfungsname, Note)Die Relation Prüfungen enthält die Attribute StudentID, Prüfungsname und Note.

Nun sollen verschiedene Anfragen auf diesen Relationen formuliert werden.

a)

(i) Relationale Algebra: Schreibe die Anfrage in der Relationalen Algebra, um alle Name und Semester der Studenten zu finden, die im Fach 'Datenbanken' eine Note besser als 3,0 erreicht haben. Dabei soll keine redundante Information vorhanden sein (jede Kombination aus Name und Semester soll nur einmal auftauchen).

Lösung:

Um die Anfrage in relationaler Algebra zu formulieren, folgen wir diesen Schritten:

  • Zunächst filtern wir die Prüfungen-Relation, um alle Einträge mit dem Prüfungsname 'Datenbanken' und einer Note besser als 3,0 zu erhalten.
  • Dann projizieren wir das StudentID-Attribut dieser gefilterten Relation.
  • Schließlich führen wir einen natürlichen Join mit der Studenten-Relation basierend auf StudentID durch, und projizieren dann die Attribute Name und Semester, wobei redundante Kombinationen eliminiert werden.

Hier ist die Anfrage in relationaler Algebra:

 <pi>(Name, Semester) (<Studenten ")( ⭐ (<StudentID})) (<sigma> (Prüfungsname='Datenbanken' AND Note<3.0) (Prüfungen))

b)

(ii) Schlüsselkonzepte: Diskutiere die Bedeutung von Primärschlüsseln und Fremdschlüsseln in den obigen Relationen. Zeige sowohl ein Beispiel für einen Primärschlüssel als auch für einen Fremdschlüssel aus den gegebenen Relationen auf. Warum sind diese Schlüsselkonzepte wichtig für die Datenintegrität?

Lösung:

Die Schlüsselkonzepte von Primärschlüsseln und Fremdschlüsseln sind fundamental für das Design und die Verwaltung von Datenbanken, da sie die Datenintegrität und die Verknüpfbarkeit von Daten sicherstellen.

  • Primärschlüssel: Ein Primärschlüssel ist ein Attribut oder eine Kombination von Attributen, das jeden Datensatz in einer Relation eindeutig identifiziert. Es darf keine Nullwerte enthalten und jeder Wert muss eindeutig sein.

Beispiel: In der Relation Studenten ist StudentID ein Primärschlüssel, da jede StudentID einen Studenten eindeutig identifiziert.

Studenten(StudentID, Name, Semester)
  • Fremdschlüssel: Ein Fremdschlüssel ist ein Attribut oder eine Kombination von Attributen, das einen Datensatz in einer Relation mit einem entsprechenden Primärschlüssel in einer anderen Relation verknüpft. Es repräsentiert eine Beziehung zwischen den Daten in verschiedenen Relationen.

Beispiel: In der Relation Prüfungen ist StudentID ein Fremdschlüssel, da es auf die StudentID im Primärschlüssel der Studenten-Relation verweist.

Prüfungen(StudentID, Prüfungsname, Note)
  • Wichtigkeit dieser Schlüsselkonzepte:
    • Datenintegrität: Primär- und Fremdschlüssel gewährleisten die Konsistenz und Integrität der Daten in der Datenbank. Ein Primärschlüssel stellt sicher, dass jeder Datensatz eindeutig und identifizierbar ist.
    • Referentielle Integrität: Fremdschlüssel helfen, die Beziehungen zwischen verschiedenen Relationen aufrechtzuerhalten und sicherzustellen, dass Verknüpfungen zwischen den Daten korrekt und aktuell sind. Sie verhindern das Vorhandensein von Waisen-Datensätzen (Datensätze, die auf nicht existierende Datensätze verweisen).
    • Datenverknüpfung: Durch die Verknüpfung von Daten mit Fremdschlüsseln können komplexe Anfragen und Analysen über mehrere Relationen hinweg durchgeführt werden. Dies ermöglicht eine umfassendere und logisch zusammenhängende Darstellung der Daten.

Aufgabe 3)

Angenommen, Du verwaltest eine einfache Datenbank für eine Universität. Die Datenbank enthält zwei Tabellen: Studenten und Kurse. Die Schema dieser Tabellen sind wie folgt:

  • Studenten(student_id INT, name VARCHAR(100), geburtsdatum DATE, studiengang VARCHAR(100))
  • Kurse(kurs_id INT, name VARCHAR(100), lehrender VARCHAR(100))
Verwende SQL-Befehle und Joins, um die folgenden Aufgaben durchzuführen.

a)

Erstelle eine SQL-Abfrage, die die Namen aller Studenten zusammen mit den Namen der Kurse, die sie belegen, abruft. Verwenden dafür Sie einen INNER JOIN zwischen den Tabellen Studenten und Kurse, indem Du die student_id und kurs_id spalten verwendest.

Lösung:

Um die Namen aller Studenten zusammen mit den Namen der Kurse, die sie belegen, abzurufen, kannst Du die folgenden Tabellen um eine dritte Tabelle erweitern, die die Informationen darüber enthält, welche Studenten welche Kurse belegen. Diese Tabelle könnte etwa 'Einschreibungen' heißen und das Schema aussehen wie folgt:

  • Einschreibungen(student_id INT, kurs_id INT)

Hier ist der SQL-Code, um die gewünschten Informationen mithilfe eines INNER JOIN zu erhalten:

 SELECT Studenten.name AS student_name, Kurse.name AS kurs_name FROM Studenten INNER JOIN Einschreibungen ON Studenten.student_id = Einschreibungen.student_id INNER JOIN Kurse ON Einschreibungen.kurs_id = Kurse.kurs_id; 

Im obigen SQL-Code:

  • Vereinst Du die Tabelle 'Studenten' mit der Tabelle 'Einschreibungen' mittels der gemeinsamen Spalte 'student_id'.
  • Vereinst Du die resultierende Tabelle mit der Tabelle 'Kurse' mittels der gemeinsamen Spalte 'kurs_id'.
  • Wählst Du die Namen der Studenten und der Kurse aus den entsprechenden Tabellen aus und benennst die auswählten Spalten mit Aliasen 'student_name' und 'kurs_name' um, um die Ergebnisse verständlicher zu machen.

Das Ergebnis wird eine Liste von Studenten und den entsprechenden Kursen enthalten, die sie belegen.

b)

Schreibe einen SQL-Befehl, der einen neuen Studenten mit den folgenden Details in die Tabelle Studenten einfügt: student_id: 1001, name: 'Max Mustermann', geburtsdatum: '1995-06-15', studiengang: 'Informatik'.

Lösung:

Um einen neuen Studenten mit den angegebenen Details in die Tabelle Studenten einzufügen, verwendest Du den INSERT INTO Befehl in SQL. Hier ist der SQL-Befehl, um dies zu erreichen:

 INSERT INTO Studenten (student_id, name, geburtsdatum, studiengang) VALUES (1001, 'Max Mustermann', '1995-06-15', 'Informatik'); 

Im obigen SQL-Befehl:

  • Gibst Du an, in welche Tabelle die Daten eingefügt werden sollen (Studenten).
  • Listest Du die Spalten auf, in die die Werte eingefügt werden sollen (student_id, name, geburtsdatum, studiengang).
  • Gibst Du die entsprechenden Werte für jede Spalte in der VALUES Klausel an.

c)

Ein Kursname wird falsch angezeigt. Der Kurs mit der kurs_id 3 sollte den Namen 'Algorithmen' haben, wird jedoch als 'Alhorythmen' geführt. Schreibe eine SQL-Abfrage, die diesen Fehler in der Tabelle Kurse korrigiert.

Lösung:

Um den Fehler im Kursnamen zu korrigieren, kannst Du den UPDATE Befehl in SQL verwenden. Hier ist der SQL-Befehl, um den Kursnamen für die kurs_id 3 zu aktualisieren:

 UPDATE Kurse SET name = 'Algorithmen' WHERE kurs_id = 3; 

Im obigen SQL-Befehl:

  • Gibst Du an, welche Tabelle aktualisiert werden soll (Kurse).
  • Setzt Du die Spalte name auf den korrekten Wert 'Algorithmen'.
  • Verwendest Du die WHERE Klausel, um sicherzustellen, dass nur der Kurs mit kurs_id 3 aktualisiert wird.

d)

Schreibe eine SQL-Abfrage, um alle Studenten anzuzeigen, die älter als 25 Jahre alt sind. Verwende dafür die Spalte geburtsdatum der Tabelle Studenten und berechne das Alter der Studenten. (Tipp: Verwende eine SQL-Funktion wie DATEDIFF, um das Alter zu berechnen). Zeige nur die student_id und den Namen der betroffenen Studenten an.

Lösung:

Um alle Studenten anzuzeigen, die älter als 25 Jahre sind, kannst Du die SQL-Funktion DATEDIFF zusammen mit der aktuellen Datumsfunktion CURDATE() verwenden, um das Alter der Studenten zu berechnen. Hier ist der SQL-Befehl, um dies zu erreichen:

 SELECT student_id, name FROM Studenten WHERE DATEDIFF(CURDATE(), geburtsdatum) / 365 > 25; 

Im obigen SQL-Befehl:

  • Wählst Du die student_id und den name aus der Tabelle Studenten aus.
  • Verwendest Du die DATEDIFF Funktion, um die Differenz in Tagen zwischen dem aktuellen Datum (CURDATE()) und dem geburtsdatum der Studenten zu berechnen.
  • Teilst Du die Differenz durch 365, um das Alter in Jahren zu erhalten.
  • Filterst Du die Ergebnisse, um nur die Studenten anzuzeigen, die älter als 25 Jahre sind.

Aufgabe 4)

Du hast eine Datenbankrelation STUDENT_ASSIGNMENT mit den folgenden Attributen: (Student_ID, Student_Name, Assignment_ID, Assignment_Title, Assignment_Grade). Gegeben sind die folgenden funktionalen Abhängigkeiten (FDs):

  • Student_ID -> Student_Name
  • Assignment_ID -> Assignment_Title
  • (Student_ID, Assignment_ID) -> Assignment_Grade
Analysiere und normalisiere die Tabelle mittels Normalformen.

a)

Bestimme, ob sich die gegebene Datenbankrelation in der ersten Normalform (1NF) befindet. Falls sie sich nicht in der ersten Normalform befindet, erläutere welche Schritte notwendig wären, um die erste Normalform zu erreichen.

Lösung:

  • Analyse der 1NF: Eine Relation befindet sich in der ersten Normalform (1NF), wenn alle Attributwerte atomar sind, das bedeutet, dass jedes Attribut nur einen einzelnen Wert enthält und nicht weiter in Teilwerte zerlegt werden kann. Schauen wir uns die Relation STUDENT_ASSIGNMENT und ihre Attribute (Student_ID, Student_Name, Assignment_ID, Assignment_Title, Assignment_Grade) an:
    • Student_ID: Eindeutige Identifikationsnummer eines Studenten, atomar.
    • Student_Name: Name des Studenten, atomar.
    • Assignment_ID: Eindeutige Identifikationsnummer einer Aufgabe, atomar.
    • Assignment_Title: Titel der Aufgabe, atomar.
    • Assignment_Grade: Note der Aufgabe, atomar.
  • Alle Attribute enthalten atomare Werte, somit ist die Relation STUDENT_ASSIGNMENT in der ersten Normalform (1NF).

b)

Zeige, wie die gegebene Datenbankrelation schrittweise in die Boyce-Codd-Normalform (BCNF) überführt werden kann. Beschreibe jeden Schritt und die dazu notwendigen Modifikationen, die an der Datenbankrelation vorgenommen werden müssen.

Lösung:

  • Schritt 1: Überprüfung der 1NFWie bereits festgestellt, befindet sich die gegebene Datenbankrelation STUDENT_ASSIGNMENT in der ersten Normalform (1NF), da alle Attributwerte atomar sind.
  • Schritt 2: Überführung in die zweite Normalform (2NF)
    • Eine Relation befindet sich in der zweiten Normalform (2NF), wenn sie in der 1NF ist und jedes nicht-prime Attribut vollständig vom gesamten Primärschlüssel abhängt. Bei der Relation STUDENT_ASSIGNMENT müssen wir sicherstellen, dass jede funktionale Abhängigkeit vollständig ist:
    • Primärschlüssel: (Student_ID, Assignment_ID)
    • Funktionale Abhängigkeiten:
      • Student_ID -> Student_Name: Diese Abhängigkeit weist darauf hin, dass Student_Name nur von Student_ID abhängt und nicht vom gesamten Primärschlüssel. Daher machen wir folgendes:
      • Wir trennen die STUDENT_ASSIGNMENT-Tabelle in zwei Tabellen:
    STUDENT(Student_ID, Student_Name)ASSIGNMENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade)
  • Assignment_ID -> Assignment_Title: Diese Abhängigkeit weist darauf hin, dass Assignment_Title nur von Assignment_ID abhängt und nicht vom gesamten Primärschlüssel. Daher machen wir folgendes:
  • Wir trennen die STUDENT_ASSIGNMENT-Tabelle weiter in:
  • ASSIGNMENT(Assignment_ID, Assignment_Title)STUDENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade)
  • Jetzt haben wir drei Tabellen:
  • STUDENT(Student_ID, Student_Name)ASSIGNMENT(Assignment_ID, Assignment_Title)STUDENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade)
  • Schritt 3: Überprüfung der dritten Normalform (3NF)
    • Eine Relation befindet sich in der dritten Normalform (3NF), wenn sie in der 2NF ist und keine transitiven Abhängigkeiten existieren. Es gibt keine weiteren nicht-schlüsselabhängigen Attribute, die von Schlüsseln anderer Tabellen abhängen.
    • STUDENT(Student_ID, Student_Name): Keine weiteren Änderungen notwendig.
    • ASSIGNMENT(Assignment_ID, Assignment_Title): Keine weiteren Änderungen notwendig.
    • STUDENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade): Keine weiteren Änderungen notwendig.
  • Schritt 4: Überführung in die Boyce-Codd-Normalform (BCNF)
    • Eine Relation befindet sich in der BCNF, wenn für jede nicht-triviale funktionale Abhängigkeit X -> Y, X ein Superschlüssel ist. Wir prüfen die bestehenden funktionalen Abhängigkeiten:
    • STUDENT(Student_ID, Student_Name): Student_ID -> Student_Name; Student_ID ist hier ein Superschlüssel.
    • ASSIGNMENT(Assignment_ID, Assignment_Title): Assignment_ID -> Assignment_Title; Assignment_ID ist hier ein Superschlüssel.
    • STUDENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade): (Student_ID, Assignment_ID) -> Assignment_Grade; (Student_ID, Assignment_ID) ist hier ein Superschlüssel.
    • Alle funktionalen Abhängigkeiten sind schon in der BCNF erfüllt, daher sind keine weiteren Änderungen notwendig.
  • Endresultat:Die endgültige übergeführte Relationenschema sieht aus wie folgt:
    • STUDENT(Student_ID, Student_Name)ASSIGNMENT(Assignment_ID, Assignment_Title)STUDENT_ASSIGNMENT(Student_ID, Assignment_ID, Assignment_Grade)
      Sign Up

      Melde dich kostenlos an, um Zugriff auf das vollständige Dokument zu erhalten

      Mit unserer kostenlosen Lernplattform erhältst du Zugang zu Millionen von Dokumenten, Karteikarten und Unterlagen.

      Kostenloses Konto erstellen

      Du hast bereits ein Konto? Anmelden