Logische Entwurfsebene
Entitäten
- Jede Entität wird in einem eigenen Relationenschema (Tabelle) abgebildet
- Attribute werden zu Spalten
Relationen
- n:m-Beziehungen in einem Relationenschema: Primärschlüssel aus Primärschlüsseln der betiligten Entitäten.
- 1:1-, 1:n-, n:1-Beziehungen: ohne eigene Tabelle → werden an Tabellen einer der Entitäten angefügt
n:m als Tabelle
1:n als Tabelle
1:1 als Tabelle
relationales Modell
Kurzschreibweise: pokemon(pokedex-Nr., Name, Kategorie, ↑Trainer-ID)
→ Primary-Key = Attribut
→ Foreign-Key = ↑Fremdattribut
Datentypen
- Integer (4, 20, 420)
- Float (4.3, 10.9) ← Wichtig: nur Punkt und kein Komma → sonst ein Char/ String
- Boolean (True/ False)
- Char/ Zeichenkette (Hallo, 10,4)
- Date (YYYY-MM-DD)
Datentypen in SQL-Lite
- NULL: Der Wert ist NULL
- Integer: Der Wert ist eine Ganzzahl (1, 4, 3)
- Real: Gleitkommazahl/ Floating Point (0.3, 10.6, 100.69)
- Numeric: definiert eine numerische Spalte, in der der Wert ein festes Dezimalkomma hat (Irgendwie gleich wie Datentyp Real)
- Text: Text String. ("Hallo")
- Blob: Daten werden genauso gespeichert, wie sie eingegeben wurden
Ein Problem, über das ich gestolpert bin:
Bei der Sortierung von Datensätzen in einer Datenbank, wo die Daten Gleitkommazahlen sind (10,4 , 20,9), jedoch als String und mit KOMMA gespeichert wurden, werden diese nicht richtig sortiert bei einer SQL-Anfrage. Es wird nur nach der erste Zahl sortiert, wobei als Ergebnis 9,7 > 10,4, da 9 größer als 1 ist. Bei Datentyp Float besteht dieses Problem nicht und es kann auch eindeutig zwischen Zahlen mit der gleichen ersten Stelle differenziert werden.