Was ist der Unterschied zwischen Entitäten identifizieren und Beziehungen
festlegen und der Anforderungsanalyse? Was ist der Bezug zwischen beiden?
Antwort
• Anforderungsanalyse:
→ Erfasst fachliche Anforderungen
→ Liefert ein erstes fachlich-technisches Modell
• Entitäten identifizieren & Beziehungen festlegen:
→ Konkretisieren dieses Modell
→ Dient dem logischen Datenbankentwurf
→ Ergebnis: konzeptionelles Datenmodell
• Bezug:
→ Entwurfsphase baut direkt auf der Anforderungsanalyse auf
- Was sind Unterschiede und Gemeinsamkeiten von UML-Klassendiagramm und
ER-Diagramm?
Erstellen Sie eine View ViewTiereInBehandlung, die folgende Informationen aus den Tabellen Tier, Behandlungen und Halter zusammenfasst:
• Zeigen Sie mindestens folgende Attribute: Tiername, Art, Rasse, Alter, Geschlecht, Behandlungsart, Datum der Behandlung, Nachname des Halters
• Sortieren Sie die Ergebnisliste aufsteigend nach dem Nachnamen des Halters.
Fragen Sie dublettenfrei den Namen und die Art aus der Tabelle Tier mit einem
entsprechenden SQL-Statement ab.
SELECT DISTINCT Name, Art FROM Tier;
Erläutern Sie die Vorteile der „Joined Subclass Table“-Strategie.
Frage 1
Formulieren Sie ein SQL-Statement, das eine Verbundmenge (JOIN) nutzt, um eine nach Typ sortierte Liste aller PKW zu ermitteln,
die von deutschen Herstellern sind und
deren Baujahr nach 2012 liegt.
Formulieren Sie ein SQL-Statement, das nur die in Behandlung befindlichen Tiere anzeigt, mit folgenden Angaben:
Tierart
Tiername
Alter
Kurzdiagnose
Datum
SELECT Typ AS `NAME`
FROM PKW
INNER JOIN Hersteller ON PKW.Hersteller = Hersteller.Name
WHERE Firmensitz = 'Deutschland' AND Baujahr > '2012'
ORDER BY Typ;
Zuordnen eines konzeptionelles Datenmodell in das physikalische
Datenmodell
Nehmen Sie Stellung zur Aussage, dass SQL eine standardisierte Sprache ist.
Was ist ein „Lost Update“ und wie kann er verhindert werden?
Ein Lost Update ist ein Isolationsphänomen, das bei gleichzeitiger Ausführung (Nebenläufigkeit) mehrerer Transaktionen auf denselben Daten entsteht.
Dabei überschreibt eine Transaktion unbemerkt die Änderungen einer anderen, weil beide auf denselben Ausgangswert zugreifen und danach updaten.
Beispiel:
Zwei Anwendungen lesen denselben Wert und führen danach jeweils ein UPDATE aus. Das zweite UPDATEüberschreibt die Änderung der ersten Transaktion – der erste Update-Vorgang geht somit „verloren“.
Vermeidung:
Ein höherer Isolationslevel, z. B. READ COMMITTED, kann Lost Updates verhindern.
Dabei werden nur bereits bestätigte (committed) Daten gelesen, wodurch sich parallele Änderungen nicht mehr unbemerkt überschreiben.
Wenn du möchtest, kann ich auch eine SQL-Transaktion mit Isolationslevel als Beispiel formulieren.
Die Schnittmenge (INTERSECT) ist nicht in allen DBMS verfügbar. Wie kann
diese Operation über eine WHERE-Bedingung simuliert werden?
Wie bei INTERSECT selbst wird vorausgesetzt, dass die Tabelle A und Tabelle B
die gleiche Struktur haben.
SELECT DISTINCT tablea.field
FROM tablea
WHERE tablea.field
IN ( SELECT tableb.field FROM tableb);
PKT Martin-Notation, erklären wie diese aufgebaut ist.
Name der Entität wird über dem Rechteck notiert. Der Primärschlüssel wird im
oberen Bereich des Rechteckes notiert. Alle Anderen Attribute im unteren Bereich.
Auch Krähenfußnotation genannt
Erklären sie die Chen-Notation und wie diese aufgebaut ist
Die Entität wird durch ein Rechteck dargestellt. Die Attribute jeweils mit einem Oval
welche mit der zugehörigen Entität verbunden ist. Primärschlüssel werden durch
Unterstreichen des Attributes gekennzeichnet:
Beschreiben Sie das UML Klassendiagramm
Die Entität wird als Klasse mit Attributen modelliert. Primärschlüssel werden als
Eigenschaft des Attributes in geschweiften Klammern hinter dem Namen notiert.
Ein Schaubild war gegeben, SQL-Statement erstellen, um einen
Datensatz einzufügen
Ähnlich der Musterklausur, 2 Tabellen war gegeben, was muss beachtet
werden wenn aus der 2 Tabelle etwas gelöscht werden soll (referenzielle
Integrität)
Sie ist eine Eigenschaft einer Datenbank, dass alle verwendeten Fremdschlüssel
auch tatsächlich als Primärschlüssel in einer anderen Tabelle verwendet werden und
damit eine gültige Referenz auf einen anderen Datensatz existiert. Alles in Allem
müssen also alle beteiligten Datensätze welche einen Bezug zum gelöschten
Datensatz aufweisen überprüft und ggf auch gelöscht werden sofern sie keinen Sinn
mehr ergeben.
Lost Update erklären und wie dieses verhindert werden kann
Lost Update entsteht durch Nebenläufigkeit von Transaktionen, also gleichzeitige oder ungeordnete Ausführung.
Zwei Transaktionen lesen denselben Wert, ändern ihn und speichern ihn – dabei überschreibt eine Änderung die andere, ohne dass es bemerkt wird.
Beispiel: Anwendung 1 erhöht den Preis, Anwendung 2 senkt ihn – Ergebnis: Änderung von Anwendung 1 geht verloren.
Vermeidung: durch festgelegte Isolationslevel, z. B.:
READ COMMITTED
REPEATABLE READ
SERIALIZABLE
3 Tabellen waren gegeben, SQL-Statement erstellen, wie diese in eine
Single-Tabelle überführt werden können.
SELECT
Tier.TierID,
Tier.Art,
Tier.Rasse,
Tier.Alter,
Tier.Geschlecht,
Halter.HalterID,
Halter.Vorname,
Halter.Nachname,
Behandlung.BehandlungID,
Behandlung.Kurzdiagnose,
Behandlung.Datum
FROM Tier
JOIN Halter ON Tier.HalterID = Halter.HalterID
JOIN Behandlung ON Tier.TierID = Behandlung.TierID
ORDER BY Behandlung.BehandlungID;
Was versteht man unter referentielle Integrität?
damit eine gültige Referenz auf einen anderen Datensatz existiert.
3 Tabellen miteinander verbinden und gruppieren (Tier, Halter, Behandlung)
SELECT *
JOIN Halter
USING TierID (oder ON Tier.TierID=Halter.TierID)
JOIN Behandlung
USING TierID (oder ON Halter.TierID=Behandlung.TierID)
GROUP BY Behandlung
;
Gemeinsamkeiten / Unterschiede UML-Klassendiagramm und E/R-Diagramme
LEFT JOIN aufzeichnen und erklären
Führt die Datensätze zusammen für welche das Verbundkriterium erfüllt ist. ALLE
Spalten ALLER Tabellen sind im Ergebnis enthalten. Darüber hinaus werden alle
Datensätze der links vom JOIN Statement genannten Tabelle in das Ergebnis
übernommen, Die aus der rechten Tabelle übernommenen Spalten werden mit
NULL aufgefüllt
SELECT * FROM Artikel LEFT JOIN Film ON Artikel.ArtikelID=Film.ArtikelID;
Hier werden die Tabellen Artikel und Film, bei welchen die ArtikelID’s gleich sind
zusammengefügt und ausgefüllt, die anderen Spalten von der Tabelle Film bleiben
leer
Erläutern von Entität, Attribut, Spalte und Tabelle (6 Punkte)
Entität: Eine Entität ist eine eigenständige Einheit, z. B. ein Geschäftsobjekt, die
unter anderen gleichartigen Einheiten eindeutig identifiziert werden kann. Jeder in
der Datenbank gespeicherte Datensatz ist eine Entität.
Attribut: Konkrete Eigenschaften von Entitäten werden als deren Attribute
beschrieben.
Spalte: Jede Spalte einer Tabelle speichert den Wert für ein bestimmtes Attribut, mit
dessen Namen sie bezeichnet wird.
Tabelle: Eine Tabelle ist eine Veranschaulichung einer Relation, in der die Werte
stehen, die zu einer Relation gehören
Ein klassisches Transaktion Statement aufzeichen
Wichtigkeit und Eigenschaften von Konsistenz erklären und was das bedeutet
für Datenbanken
Die in einer Datenbank gespeicherten Datensätze müssen fachlich korrekt und
widerspruchsfrei sein. Es müssen dabei sowohl fachliche Bedingungen als auch
technische Bedingungen wie die referentielle Integrität erfüllt werden. Die
Bewahrung der Konsistenz der Daten bzw. die Verhinderung von Inkonsistenz ist
eine der zentralen Aufgaben eines Datenbankmanagementsystems. Unter Anderem
lässt sich durch Transaktionen im Falle eines Fehlers die Konsistenz erhalten (Das
C von ACID)
Was sind die Vorteile und Nachteile der Table per Class Strategie?
Distinct Statement aus einer Tabelle erstellen:
SELECT DISTINCT Continent FROM Country;
Identische Datensätze im Ergebnis einer SQL Anfrage können mit DISTINCT
zusammengefasst werden. Wird vor allem dann angewandt, wenn die Anzahl von
eindeutigen Ergebnisdatensätzen benötigt wird
SQL als Standardabfragesprache einordnen
Gerne! Hier ist eine klar strukturierte und schön formulierte Zusammenfassung:
Structured Query Language (SQL) ist eine international standardisierte Programmiersprache (ISO 9075) für relationale Datenbanken.
Sie dient als universelle Schnittstelle zur Erstellung, Abfrage und Verwaltung von Daten und Zugriffsrechten.
Data Manipulation Language (DML): Daten abfragen und ändern
Data Definition Language (DDL): Tabellen und Strukturen erstellen/ändern
Transaction Control Language (TCL): Transaktionen steuern
Data Control Language (DCL): Zugriffsrechte verwalten
Anwendungen sollen unabhängig vom eingesetzten DBMS entwickelt und betrieben werden können.
Syntax und Befehle sind weitgehend gleich, allerdings gibt es:
Unterschiede bei Datentypen und Funktionen (z. B. nicht jedes DBMS unterstützt INTERSECT oder MINUS)
Unterschiede in der Leistung (Ausführungsgeschwindigkeit)
Wenn du willst, kann ich dir daraus eine prüfungstaugliche Merkliste oder Karteikarten-Version machen.
Alle Beziehungen
• 1:1-Beziehung: Genau eine Entität steht in Beziehung mit genau einer anderen
Entität. Bsp.: Eine Familie wohnt in genau einer Wohnung, in einer Wohnung wohnt
genau eine Familie.
• 1:N-Beziehung: Genau eine Entität steht in Beziehung mit mehreren anderen
Entitäten, die alle vom gleichen Typ sind. Bsp.: Ein Kind hat genau eine Mutter, eine
Mutter kann jedoch 1 oder mehr Kinder haben.
• N:M-Beziehung: Mehrere Entitäten eines Typs stehen in Beziehung mit mehreren
anderen Entitäten, die alle vom gleichen Typ sind. Bsp.: Ein Dozent betreut mehrere
Studenten, und ein Student wird durch mehrere Dozenten betreut
Beschreibe das
-Ein Halter hat mindestens 1 Tier
-1 Tier hat mindestens 1 Behandlung // 1 Behandlung ist genau einem Tier
zugeordnet
-1 Behandlung wurden beliebig viele Medikamente, mindestens 1 eingesetzt.
-1 Medikament ist für keine oder beliebig viele Behanldungen einsetzbar
Was ist ein non-repeatable Read und wie kann es verhindert werden?
Ein Non-repeatable Read ist ein Isolationsphänomen und bezeichnet einen Effekt,
bei dem ein mehrmaliges Lesen derselben Daten einer Datenbank innerhalb einer
Anfrage jeweils unterschiedliche Ergebnisse zurückliefert. Dieser Effekt kann durch
das Fordern der Isolationslevel „Repeatable Read“ oder „Serialize“ verhindert
werden.
Welche Verbünde gibt es?
INNER JOIN mit ON Verbundkriterium
INNER JOIN mit USING(spalten); wird eingesetzt, wenn die Spalten des
Verbundkriteriums gleich benannt sind
NATURAL JOIN: Variante vom INNER JOIN
LEFT JOIN / RIGHT JOIN
Erläutern Sie die drei wichtigsten Strategien zur Abbildung von Vererbung in relationalen Datenbanken:
Single Table, Table per Class und Joined Subclass Table. Gehen Sie auf Aufbau, Besonderheiten und Vor- bzw. Nachteile ein.
1. Single-Table-Strategie
Alle Klassen der Vererbungshierarchie werden in einer einzigen Tabelle gespeichert.
Nicht benötigte Spalten werden leer (NULL) gelassen.
Eine Unterscheidung erfolgt über ein Discriminator-Attribut.
Vorteil: Einfach, schnell abzufragen.
Nachteil: Viele NULL-Werte und Redundanz möglich.
Tabelle Artikel enthält Spalten für Filme und Musik, z. B. Regisseur, Künstler, Laufzeit, etc.
2. Table-per-Class-Strategie
Für jede konkrete Klasse wird eine eigene Tabelle erstellt.
Alle relevanten Attribute werden vollständig in der jeweiligen Tabelle gespeichert.
Abstrakte Klassen haben keine eigene Tabelle.
Vorteil: Kein Join nötig, schneller Zugriff auf Objekte einer Klasse.
Nachteil: Duplizierte Attribute in mehreren Tabellen, schwer zu vereinheitlichen.
Tabelle Film mit eigenen Attributen + nochmal Name, Preis, Verfügbarkeit – ebenso in MusikAlbum.
3. Joined-Subclass-Table-Strategie
Jede Klasse – auch abstrakte – bekommt eine eigene Tabelle.
Unterklassen enthalten nur ihre spezifischen Attribute + Fremdschlüssel zur Oberklasse.
Zum Lesen/Schreiben wird ein JOIN über alle relevanten Tabellen benötigt.
Vorteil: Minimale Redundanz, logisch sauber.
Nachteil: Komplexere Abfragen durch mehrere JOINS.
Artikel enthält allgemeine Attribute, Film und MusikAlbum verweisen per Fremdschlüssel (ArtikelID) darauf.
Isolationsphänomenenaller erklären
Die werden im skript nämlich echt schlecht erklärt (EDIT: Super Tipp, unbedingt
anschauen!!!)
-https://www.youtube.com/watch?v=jD0c4X0tSc8&t=114s
-https://www.youtube.com/watch?v=5ZEchu2WnD4
-https://www.youtube.com/watch?v=d5QNpsezNTs&t=29s
-https://www.youtube.com/watch?v=_UQ9Pu2W7Zg&t=18s
Gegeben sind zwei SELECT-Statements, die eine Abbuchung und eine Zubuchung vorbereiten.
Wie kann sichergestellt werden, dass beide Vorgänge zuverlässig und fehlerfrei ausgeführt werden – also entweder gemeinsam erfolgreich sind oder gar nicht?
Damit wird garantiert, dass beide INSERTs nur dann dauerhaft gespeichert werden, wenn beide erfolgreich ausgeführt wurden.
Kommt es zu einem Fehler (z. B. durch Verletzung einer Bedingung), kann mit ROLLBACK alles zurückgesetzt werden.
Vorteil:
Die Datenintegrität bleibt gewahrt – es gibt keinen Teilzustand, bei dem nur die Abbuchung oder nur die Zubuchung erfolgt ist.
Was ist Optionalität
Die Optionalität beschreibt, ob eine Beziehung zwingend (MUSS) oder freiwillig (KANN) besteht.
Sie gibt also an, ob eine Entität mit einer anderen verknüpft sein muss oder darf.
Die erste Zahl gibt den Minimalwert an (0 = optional, 1 = verpflichtend)
Die zweite Zahl gibt den Maximalwert an (z. B. 1 oder n)
Mann 0,1 ⇄ 0,1 Frau
→ Ein Mann kann mit 0 oder 1 Frau verheiratet sein – und umgekehrt.
→ Beziehung ist optional auf beiden Seiten.
Mann 0,0 ⇄ 0,0 Frau
→ Es besteht keine Beziehung – rein theoretisches Beispiel.
Ausbilder 1,m ⇄ 1,n Gruppe
→ Ein Ausbilder muss mindestens eine Gruppe unterrichten
→ Jede Gruppe muss mindestens einen Ausbilder haben
→ Die Beziehung ist verpflichtend auf beiden Seiten
Optionalität wird in ER-Diagrammen grafisch dargestellt und ist wichtig für die Datenbankstruktur und die Kardinalität der Beziehungen.
Kriterien der 1 Normalform
Eine Relation befindet sich in der ersten Normalform, wenn alle Attribute nur
einfache Attributwerte aufweisen (Bezeichnung: atomar). Zur Bildung der ersten
Normalform müssen die nicht-atomaren Attribute umgewandelt werden. Dies kann
durch Einfügen zusätzlicher Zeilen, Spalten oder neuer Relationen erfolgen.
Außerdem muss jeder einzelne Datensatz über einen eindeutigen Primärschlüssel
identifizierbar sein.
Was ist UNION und UNION ALL wozu werden sie verwendet und was sind die
Voraussetzungen
Hierbei handelt es sich um Mengenoperationen, da diese als Ergebnis wiederum
Mengen liefern, können mit ihrer Hilfe Ergebnismengen mehrerer SELECT-Anfragen
bereinigt und anschließend weiterverarbeitet werden.
UNION: Duplikatfreie Vereinigung
UNION ALL: Bei Vereinigung werden Duplikate nicht bereinigt
Was unterscheidet die 2 von der 3 Normalform
Die 2. Normalform kann nur von Tabellen mit zusammengesetzten Primärschlüssel
erreicht werden.
Wenn sie in der ersten Normalform ist und jedes Nichtschlüsselattribut immer
abhängig vom gesamten zusammengesetzten Primärschlüssel und nicht nur von
einem Teil des Schlüssels ist.
Die 3. Normalform kann sowohl mit zusammengesetzten als auch mit einfachen
Primärschlüssel erreicht werden. Kriterien der ersten Normalform und ggf der
Zweiten Normalform müssen erfüllt sein.
Darüber hinaus gilt für die 3. folgende Bedingung: Jedes Nichtschlüsselattribut hängt
direkt vom Schlüsselattribut ab. Es gibt keine funktionalen Abhängigkeiten zwischen
Attributen, die nicht Teil des Primärschlüssel sind.
Wozu dienen Normalformen, erläutern Sie.
Die Normalform einer Datenbank ist ein Maß für die Struktur einer Datenbank. Sie
gibt Hinweise dazu, wie redundant Daten in einer Datenbank gespeichert sind.
Daten enthalten Redundanz, wenn man Teile von ihnen weglassen kann, ohne dass
es zu einem Informationsverlust kommen würde. Falls Daten in einer Datenbank
redundant abgelegt sind, ist das Risiko von Inkonsistenzen hoch. Daher sollte bei
der Erstellung der Struktur der Datenbanktabellen auf möglichst geringe Redundanz
geachtet werden. Je höher die Normalform, desto weniger redundant liegen die
Daten vor. Zur Bestimmung einer Normalform wird die Struktur von Attributen einer
Relation und deren Abhängigkeiten untereinander betrachtet
Spezifisches Isolationsphänomen einordnen und erklären was passiert + wie
man das vermeiden kann.
Unerwünschte Effekte, die entstehen, wenn mehrere Transaktionen gleichzeitig auf dieselben Daten zugreifen.
🔁 Lost Update
Zwei Transaktionen ändern denselben Datensatz – die Änderung der ersten wird von der zweiten überschrieben.
→ Vermeidung: READ COMMITTED
🧪 Dirty Read
Eine Transaktion liest Daten, die eine andere Transaktion verändert, aber noch nicht bestätigt (committed)hat.
🔂 Non-Repeatable Read
Eine Transaktion liest denselben Datensatz mehrfach, erhält aber unterschiedliche Werte, weil zwischenzeitlich eine andere Transaktion den Wert geändert hat.
→ Vermeidung: REPEATABLE READ
👻 Phantom Read
Eine Transaktion liest mehrmals mit gleichem Kriterium, aber es erscheinen neue oder fehlende Datensätze, weil eine andere Transaktion Datensätze hinzugefügt oder gelöscht hat.
→ Vermeidung: SERIALIZABLE
Ein Isolation Level bestimmt, wie stark Transaktionen voneinander abgeschirmt werden.
Es ist ein Kompromiss zwischen Datenkonsistenz und Parallelität und wird vom DBMS konfiguriert.
Wenn du magst, mache ich dir daraus noch eine Lernkarte oder eine Tabelle.
Sie sollen eine gegebene objektorientierte Vererbungshierarchie in einem relationalen Datenbankschema abbilden.
a) Abbildung per
Joined-Subclass-Strategie
Erstellen Sie Tabellen für eine Oberklasse Fahrzeug und die Unterklassen Auto und Motorrad.
Achten Sie auf sinnvolle Primär- und Fremdschlüsselbeziehungen.
Nur Fahrzeug enthält gemeinsame Attribute wie FahrzeugID, Marke, Baujahr.
b) Abbildung per
Table-per-Class-Strategie
Erstellen Sie für jede konkrete Klasse eine eigene Tabelle (Auto, Motorrad), die alle benötigten Attribute enthält.
Eine Tabelle Fahrzeug ist nicht erforderlich, da es sich um eine abstrakte Klasse handelt.
Erstellen Sie eine Tabelle mit folgenden Spalten:
b: BOOLEAN
v: VARCHAR
i: INTEGER
d: DATE
Fügen Sie einen Beispiel-Datensatz in diese Tabelle ein.
Gegeben sind zwei Tabellen: Tier und Besitzer.
In der Tabelle Besitzer soll der Primärschlüssel BesitzerID gelöscht werden – aber nicht die Spalte selbst.
In der Tabelle Tier ist BesitzerID als Fremdschlüssel vorhanden.
Was ist zu tun, worauf muss man achten, und wie lauten die SQL-Befehle dazu?
Wenn ein Primärschlüssel gelöscht werden soll, der in einer anderen Tabelle als Fremdschlüssel verwendet wird, muss zuerst die Fremdschlüsselbeziehung aufgelöst werden.
Dies dient der Erhaltung der referenziellen Integrität.
Fremdschlüssel aus Tier entfernen
→ Erst die Verbindung trennen, bevor man den Primärschlüssel löscht.
Primärschlüssel aus Besitzer löschen
→ Die Spalte bleibt erhalten, nur die Primärschlüsseleigenschaft wird entfernt.
Tabelle mit Tieren und Tiernamen gegeben: SQL Statement formulieren, um
alle Tiere deren NAMEN mit “MA” anfangen zu ziehen.
SELECT name, tiere
FROM tabellenname
WHERE name like ’MA%’
Tabelle mit Autos war gegeben: Gib alle Autos aus die mehr PS haben, als die
durchschnittlichen PS aller Autos
FROM Autos
WHERE PS >
(SELECT AVG(PS) FROM Autos)
Beschreibe ACID-Eigenschaften
Atomarität (engl.: atomicity): Eine Transaktion ist atomar. Sie wird nur vollständig
oder gar nicht ausgeführt, in keinem Fall jedoch nur teilweise.
Konsistenz (engl.: consistency): Eine Transaktion erhält die Konsistenz der
Datenbank. Sie überführt den Datenbestand von einem konsistenten Zustand in
einen anderen konsistenten Zustand.
Isoliertheit (engl.: isolation): Transaktionen beeinflussen sich nicht gegenseitig,
parallele Transaktionen werden so umgesetzt, also ob sie nacheinander
stattgefunden hätten. Somit ist die gleichzeitige Ausführung mehrerer Transaktionen
und ein Mehrbenutzerbetrieb gewährleistet.
Dauerhaftigkeit (engl.: durability): Wurde eine Transaktion erfolgreich
abgeschlossen, sind die dadurch bewirkten Änderungen dauerhaft in der Datenbank
gespeichert.
Nenne Vorteile der Single Table Strategie
Vorteile:
Sehr schnell lesender und schreibender Zugriff auf Daten, da nur eine Tabelle
gelesen werden muss.
Für das Lesen und Schreiben auf der Datenbank reicht jeweils genau ein SQL-
Statement aus
Effizienter Zugriff auf Beziehungen zwischen Klassen der Vererbungshierarchie.
Tabelle erstellen mit Create Table
CREATE TABLE Kunde
(
KundeID INTEGER, Name VARCHAR(500), Vorname VARCHAR(500), KundenNR
VARCHAR(15)
);
Gegeben waren zwei Tabellen: Tiere und Behandlung. Man sollte ein SQL
Statement schreiben, mit dem die Tiere, die in Behandlung sind, ausgegeben
werden mit der entsprechenden Diagnose, Name etc. -> Verbund aus zwei
Tabellen (Verbubdkriterium definieren)
FROM
Tiere INNER JOIN Behandlung On tiere.tiereid=behandlung.tiereid
Stimmt das Statement, dass man ein DBMS einfach so austauschen kann und
wenn ja/nein warum?
Gerne! Hier ist die kompakte und schöne Zusammenfassung des Textes:
Obwohl SQL international standardisiert ist, unterscheidet sich die konkrete Umsetzung je nach DBMS.
Die Syntax ist zwar ähnlich, aber:
Datentypen und Funktionen variieren
Ausführungsgeschwindigkeiten sind unterschiedlich
Ein Wechsel des DBMS ist aufwendig, da alle SQL-Befehle neu getestet werden müssen
➡️ Fazit: SQL bietet eine gemeinsame Basis, aber keine vollständige Kompatibilität zwischen DBMS-Systemen.
2. Erstellen Sie nun einen Primary Key für die Spalte BestellungID
3. Geben Sie das SQL Statement zum einfügen des Datensatzes an
4. Ermitteln sie den durchschnittlichen Rechnungsbetrag aller
Bestellungen aus 2013
1.
CREATE TABLE Bestellung
BestellungID varchar(50),
KundenID varchar(50),
Versandart varchar (250),
Rechnungsbetrag decimal (10,2),
Lieferstatus varchar (500),
Bestelldatum date,
Lieferdatum date,
2.
ALTER TABLE Bestellung ADD PRIMARY KEY BestellungID;
3.
INSERT INTO Bestellung (BestellungID, KundenID, Versandart, Rechnungsbetrag,
Lieferstatus, Bestelldatum) VALUES (B12, K12, DHL, 23.99, bestellt, 2014-12-01);
Geben Sie eine Liste aller BestellungID aus, deren Rechnungsbetrag
kleiner gleich dem durchschnittlichen Rechnungsbetrag ist.
SELECT BestellungID FROM Bestellung WHERE Rechnungsbetrag <= (SELECT
AVG(Rechnungsbetrag) FROM Bestellung);
6. Geben Sie eine dublettenfreie Liste aus, in der BestellungID und die
Stadt des Kunden ausgegeben wird.
SELECT DISTINCT BestellungID, Ort FROM Bestellung JOIN Kunde USING
KundeID;
7. Geben sie eine dublettenfreie Liste aus, in der KundeID und Name des
Kunden aus der min. Eine Bestellung bereits geliefert bekommen hat.
SELECT DISTINCT KundeID, Name FROM Bestellung JOIN Kunde USING
KundeID
WHERE Lieferdatum = `geliefert`;
Zuletzt geändertvor 11 Tagen