Redundanz: mehrfache Speicherung derselben Information in einer Datenbank
Erhöhter Speicherplatzbedarf
Inkonsistenzen bei Änderungen (wenn Daten nicht überall aktualisiert werden)
Erhöhter Wartungsaufwand
funktionale Abhängigkeit:
Wert eines Attributs B kann eindeutig durch den Wert eines Attributes A bestimmt werden
Notation: A –> B
z.B. in high_score: player_id –> {player_name, player_email}
voll funktionale Abhängigkeit: alle Attribute der Abhängigkeit müssen gegeben sein, um es zu bestimmen, z.B. für high_scores: {player_id, game_id} –> score
transitive Abhängigkeit: wenn A –> B und B –> C, dann A –> C ⇒ wenn das in der 3. NF gilt, muss die Tabelle mit A, B und C in zwei Tabellen aufgespaltet werden
Normalisierung: Prozess zur Strukturierung von Datenbanken, um Redundanz zu eliminieren
Teil der Sprache, welcher ermöglicht, Datenstrukturen und verwandte Elemente zu beschreiben, zu ändern oder zu entfernen
in SQL: CREATE TABLE, ALTER TABLE, DROP TABLE
DQL (Data Query Language):
Teil der Sprache, welcher das Auslesen von Daten ermöglicht
in SQL: SELECT
DML (Data Manipulation Language):
Teil der Sprache, der sich mit allen Auswahl-/Einfüge-/Änderungs- und Löschoperationen beschäftigt
in SQL: UPDATE, DELETE FROM, INSERT INTO
CREATE TABLE games ( game_id INT PRIMARY KEY, game_name VARCHAR NOT NULL, game_type VARCHAR NOT NULL, manufacturer_id VARCHAR NOT NULL, purchase_date DATE NOT NULL, maintenance_cycle VARCHAR NOT NULL, current_status VARCHAR NOT NULL, location VARCHAR NOT NULL, price_per_play FLOAT NOT NULL, FOREIGN KEY (manufacturer_id) REFERENCES manufacturers(manufacturer_id));
Bedingung keine Spalte leer ⇒ domänenspezifische Integritätsbedingung (NOT NULL)
Integritätsbedingungen
= Bedingungen zum einwandfreien Benutzen der Datenbank
semantische
keine Eingabefehler
einheitliche Bezeichnung (z.B. G01 != G001)
operationale
keine Fehler bei gleichzeitigem Zugriff
keine Fehler bei Transaktionen (DirtyRead, LostUpdate)
referentielle
Datensätze zu Primärschlüsseln und Fremdschlüsseln müssen existieren
bei einer Löschung eines Datensatzes auch zugehörige Datensätze löschen wenn möglich und sinnvoll oder notwendig (SQL: ON DELETE CASCADE, ON DELETE SET NULL, ON DELETE SET DEFAULT)
domänenspezifisch (Daten liegen in einem bestimmten Bereich)
Datensätze, welche als NOT NULL markiert sind, sind nicht leer
Datensätze, welche eine maximale Länge (SQL: VARCHAR(255)) haben, sind auch nicht länger
etc.
Aufgabe 5
SELECT name, country FROM manufacturers;SELECT * FROM games WHERE current_status = 'Maintenance';SELECT MAX(price_per_play), game_name FROM games;SELECT players.first_name, players.last_name FROM players JOIN high_scores ON players.player_id = high_scores.player_idWHERE high_scores.rank_position = 1;SELECT players.first_name, players.last_name, games.game_nameFROM players JOIN high_scores ON players.player_id = high_scores.player_idJOIN games ON high_scores.game_id = games.game_id WHERE high_scores.rank_position = 1;