[S12L2] DB Schema Flashcards

1
Q

Was ist SQLite Studio?

A

-Ein GUI Programm um mit SQLite DBs zu arbeiten

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was ist eine Datenbank? (Eine Datei, Ordner, Code?)

A

-Hängt davon ab welches Datenbank Management System man benutzt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Was ist ein Database Management System?

A
  • Software um Datenbanken zu erstellen und zu managen
  • Das Interface zwischen Programmierer und Datenbank
  • Oft abgekürzt als DBMS oder RDBMS
  • SQLite, Postgres, MySQL, Oracle
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was ist SQLite?

A
  • Eine leightweight DBMS

- Daten werden in einer einzigen Datei in Binärcode gespeichert

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Wie verbindet man SQLite Studio mit der Datenbank um diese zu sehen und in der RDBMS zu managen?

A

-Einfach die Datei öffnen

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist ein Database Schema?

A
  • Eine Blaupause der Datenbank
  • Definition welche Tabllen vorhanden sind und welche Columns sie haben
  • Datentypen und Constraints der Daten werden definiert(Unique etc)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was ist ein PrimaryKey?

A
  • In jedem Table gibt es für jede Row einen eindeutigen PrimaryKey oft als ID
  • Ist dafür da um den einzelnen Datensatz zu identifizieren
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was sind Datentypen für eine Datenbank?

A
  • String
  • Number
  • Float
  • BLOB
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Contraints?

A
  • Einschränkungen der Daten
  • Unique
  • NOT NULL
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Wie kann man mit SQLite Studio eine neue Datenbank erschaffen?

A

-Auf das + Symbol drücken

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Wie könnte ein SQL Code aussehen um ein neuen Table anzulegen?

A
CREATE TABLE students (
    id      INTEGER    PRIMARY KEY AUTOINCREMENT,
    name    TEXT (128) UNIQUE
                       NOT NULL,
    section INTEGER    NOT NULL,
    email   TEXT (128) 
);
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was sind Knex Migrations?

A
  • Dateien welche die Veränderungen der Datenbank aufzeigen
  • Helfen dabei das DB Schema intakt zu halten
  • DB Updated werden atomar, nachvollziehbar und verhindern bugs
  • Sind die git commits nur für DB Schema Updates
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Wie initialisiert man eine knex datei?

A

knex init

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche Angaben benötigt knex?

A
  • client: ‘sqlite3’
  • Gibt an welchen Driver für welchen Datenbanktyp benutzt werden soll um seine Sprache zu sprechen
  • conection: { filename: ‘path’}
  • Gibt den Pfad zur DB Datei an
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Wie erstellt man eine DB Migrationsdatei mit knex?

A

npx knex migrate:make create-user-table

-Danach wird ein Migration Folder mit der hash datei der Migration erstellt

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Was beinhaltet eine knex Migrationsdatei?

A

-Anweisungen welche Änderungen in dieser Migration getätigt worden sind und mit welchen Query geup oder gedowngradet werden kann

17
Q

WIe kann eine Migration mit knex ausgeführt werden?

A

npx knex migrate:latest

18
Q

Wie kann man mit knex eine Migration downgraden?

A

npx knex migrate:rollback

19
Q

Was sind knex seeds?

A

-Beispieldaten mit denen man die Datenbank bereits befüllen kann

20
Q

Wie erstellt man eine knex seed Datei?

A

npx knex seed:make 01-users

21
Q

Haben Seeds auch wie Migrations einen Timestamp im Namen und sind sortiert?

A

Nein, man muss durch den Dateinamen die Sortierung selber machen:

  • 01-users
  • 02-users
22
Q

Was ist der Unterschied in seeds zwischen .del() und .truncate()

A

-truncate() setzte ebenfall die IDs zurück

23
Q

Wie führt man eine population der Datenbank mit einem knex seed aus?

A

npx knex seed:run

24
Q

Was bedeutet Schema im Zusammenhang mit Datenbank?

A

-Struktur der Datenbank (Tables, Columns)

25
Q

Ist SQLite eine nicht genutzte Datenbank?

A
  • SQLite ist die meistgenutzte Datenbank der Welt

- Alle modernen Browser und IOs/Android benutzten SQLite unter der Haupe um Bookmarks und Dinge zu speichern

26
Q

Was sind die Hauptfeature von SQLite?

A

-Leichtgewichtigkeit

27
Q

Wozu gibt es Datenbank Contraints?

A

-Fehler in der Datenbank sollen vermeidet werden

28
Q

Sollte man einen Namen einer Person als PrimaryKey nehmen?

A
  • Nein, mehrere Personen können den gleichen Namen haben

- Daher immer eine ID als Integer mit autoinkrement als PrimaryKey nehmen

29
Q

Solte man eine Email einer Person als PrimaryKey nehmen?

A
  • Nein, eine Email kann und muss ab und zu geändert werden
  • Alte Datensätze die auf die alte Email zeigen wären dann falsch
  • Daher immer eine ID als Integer mit autoinkrement als PrimaryKey nehmen
30
Q

Was bedeutet NOT NULL in einer Datenbank?

A

-Das Feld kann nicht leer sein

31
Q

Wie kann man eine SQLite Datenbank managen?

A
  • Mit SQLite Studio

- Über JavaScript mit knex.js

32
Q

Was sind die Vorteile von Migration?

A
  • Erlaubt es uns Schemaupdates zu versionieren

- Auch alter Code kann mit der Datenbank, wie sie 3 Jahre gespeichert werden und wiederhergestellt werden