Datenbankdesign und -modellierung (Fortgeschrittene)
Antwort:
3NF eliminiert transitive Abhängigkeiten, während BCNF alle funktionalen Abhängigkeiten eliminiert, bei denen der Determinante kein Superkey ist. BCNF ist eine strengere Form von 3NF. Sie würden BCNF für eine höhere Datenintegrität wählen, wenn die Tabelle überlappende Kandidatenschlüssel hat oder wenn ein Nicht-Schlüssel-Attribut einen Teil eines Kandidatenschlüssels bestimmt. Andernfalls ist 3NF oft ausreichend und weniger komplex zu erreichen.
Was ist Denormalisierung und wann ist sie angebracht? Geben Sie ein Beispiel.
Antwort:
Denormalisierung ist der Prozess der absichtlichen Einführung von Redundanz in eine Datenbank, um die Leseleistung zu verbessern, oft durch die Kombination von Daten aus mehreren Tabellen in einer. Sie ist angebracht, wenn die Leseleistung kritisch ist und der Aufwand für Joins zu hoch ist, oder für Reporting/Data Warehousing. Beispiel: Speichern des 'customer_name' direkt in einer 'orders'-Tabelle, obwohl er in 'customers' existiert.
Beschreiben Sie das Konzept eines Surrogatschlüssels im Vergleich zu einem natürlichen Schlüssel. Was sind die Vor- und Nachteile jedes einzelnen?
Antwort:
Ein Surrogatschlüssel ist ein künstlich generierter, eindeutiger Identifikator (z. B. ein automatisch inkrementierender Integer), während ein natürlicher Schlüssel aus den Geschäftsdaten selbst abgeleitet wird (z. B. ISBN für ein Buch). Surrogatschlüssel bieten Einfachheit, Stabilität (ändern sich nie) und Leistung. Natürliche Schlüssel bieten geschäftliche Bedeutung, können aber komplex sein, sich im Laufe der Zeit ändern und möglicherweise zusammengesetzt sein. Surrogatschlüssel werden im Allgemeinen für Primärschlüssel bevorzugt.
Erklären Sie den Unterschied zwischen einem Sternschema und einem Schneeflockenschema im Data Warehousing.
Antwort:
Ein Sternschema hat eine zentrale Faktentabelle, die von denormalisierten Dimensionstabellen umgeben ist. Es ist einfacher, schneller für Abfragen und leichter zu verstehen. Ein Schneeflockenschema normalisiert Dimensionstabellen in mehrere zusammenhängende Tabellen und bildet eine schneeflockenähnliche Struktur. Es reduziert Datenredundanz, erhöht aber die Abfragekomplexität aufgrund von mehr Joins.
Was ist ein Index und wie verbessert er die Abfrageleistung? Wann kann ein Index nachteilig sein?
Antwort:
Ein Index ist eine Datenstruktur, die die Geschwindigkeit von Datenabrufvorgängen auf einer Datenbanktabelle verbessert. Er funktioniert, indem er eine sortierte Liste von Werten aus einer oder mehreren Spalten erstellt, wodurch die Datenbank Zeilen schnell lokalisieren kann, ohne die gesamte Tabelle durchsuchen zu müssen. Indizes können bei Schreibvorgängen (INSERT, UPDATE, DELETE) nachteilig sein, da sie aktualisiert werden müssen, was den Overhead und den Speicherplatz erhöht.
Diskutieren Sie die Kompromisse zwischen OLTP (Online Transaction Processing) und OLAP (Online Analytical Processing) Datenbankdesign.
Antwort:
OLTP-Systeme sind für Transaktionen mit hohem Volumen, gleichzeitigen, kurzen Transaktionen (Einfügungen, Aktualisierungen, Löschungen) optimiert und legen Wert auf Datenintegrität und Normalisierung. OLAP-Systeme sind für komplexe analytische Abfragen über große Datensätze optimiert und priorisieren die Leseleistung und verwenden oft denormalisierte Schemata (Stern/Schneeflocke). Sie bedienen unterschiedliche Geschäftsanforderungen, was zu unterschiedlichen Designphilosophien führt.
Wie handhaben Sie Many-to-Many-Beziehungen im Design einer relationalen Datenbank? Geben Sie ein Beispiel.
Antwort:
Many-to-Many-Beziehungen werden durch die Einführung einer Vermittlungs- (oder "Junction" / "Assoziations"-) Tabelle gehandhabt. Diese Tabelle enthält Fremdschlüssel, die auf die Primärschlüssel der beiden zusammenhängenden Tabellen verweisen, und bildet einen zusammengesetzten Primärschlüssel. Beispiel: 'Students' und 'Courses' haben eine Many-to-Many-Beziehung, die durch eine 'StudentCourses'-Tabelle mit 'student_id' und 'course_id' gelöst wird.
Was ist Datenintegrität und welche Mechanismen werden verwendet, um sie in einer Datenbank zu erzwingen?
Antwort:
Datenintegrität bezieht sich auf die Genauigkeit, Konsistenz und Zuverlässigkeit von Daten über ihren gesamten Lebenszyklus hinweg. Mechanismen zur Erzwingung sind: Entitätsintegrität (Primärschlüssel, Sicherstellung eindeutiger Zeilen), Referentielle Integrität (Fremdschlüssel, Aufrechterhaltung von Beziehungen zwischen Tabellen), Domänenintegrität (CHECK-Constraints, Datentypen, Sicherstellung gültiger Werte) und Benutzerdefinierte Integrität (Trigger, Stored Procedures für komplexe Geschäftsregeln).
Erklären Sie das Konzept eines 'Covering Index'. Wie profitiert die Abfrageleistung davon?
Antwort:
Ein Covering Index ist ein Index, der alle von einer Abfrage benötigten Spalten enthält. Das bedeutet, dass die Datenbank alle notwendigen Daten direkt aus dem Index abrufen kann, ohne auf die tatsächlichen Tabellenzeilen zugreifen zu müssen. Dies verbessert die Leistung erheblich, indem die Festplatten-I/O reduziert wird, da die Abfrage vollständig durch das Scannen des Index erfüllt werden kann.
Wie entscheiden Sie beim Entwurf einer Datenbank, welche Attribute Teil eines zusammengesetzten Primärschlüssels sein sollen und welche separate Attribute sein sollen?
Antwort:
Ein zusammengesetzter Primärschlüssel wird verwendet, wenn die Eindeutigkeit eines Datensatzes nicht durch ein einzelnes Attribut garantiert werden kann, sondern eine Kombination aus zwei oder mehr erfordert. Sie entscheiden basierend auf der natürlichen Eindeutigkeit der Entität. Wenn einzelne Attribute nicht inhärent eindeutig sind, ihre Kombination jedoch, ist ein zusammengesetzter Schlüssel angebracht. Andernfalls sind separate Attribute oder ein Surrogatschlüssel besser geeignet.