Databasesystem 01

  • Watn eigentlich data
  • Wir haben ein Definiertes Tabellenstrukt, das unsere Datenform vorgibt
  • Die meissten sachen die wir tagtätlich nutzen interagieren im Hintergrund mit einer Datenbank
    • Praktisch alles was im Internet erreichbar ist macht irgendwas mit einer Datenbank, wenns daten speichert
  • Queries müssen dementsprechend sehr schnell bzw. was instant verarbeitet werden, damit man als User kein großen Slowdown spürt

Wasn nen Databasesystem?

  • Naja da ist dann ne menge von daten
  • Hauptsächlich eine Sammlung an Tabellenstrukturen die miteinander verwandt bzw. verbunden sind
  • Das wird von einem Sog. Datenbankmanagementsystem geregelt
  • Dieses Programm kann anfragen entgegennehmen und damit mit daten interagieren und sie auch ggf. zurückgeben
  • Wir haben allerdings auch "Application-Programs" die Transaktionen bzw. queries eröffnen / ausführen
    • Transaktionen schreiben oder schreiben und lesen daten
    • Queries lesen nur daten bzw, fragen diese ab

Core design Prinzipien von Datenbanksystemen

  • Alle daten müssen in der Datenbank hinterlegt werden
    • Diese müssen alle das richtige schema beibehalten
    • ggf. Redundancy
  • Wir müssen Operationen darauf ausführen können
    • Daten abfragen bzw. queries
    • Daten Updaten bzw. storage & manipulation
  • Es muss Permanenter Speicher realisiert sein, damit wir auch länger was speichern können
  • Wir müssen die daten Katogalisieren, sprich wir müssen alles irgendwie managen und durchsuchen können

User Requirements für Datenbanksysteme

  • Wir wollen ja unsere Daten sinnvoll verwalten können
  • Dafür brauchen wir dinge, wie z.b. ein User Interface
    • Die sollten je nach "kompetenz" der Nutzer verschieden viel können
    • Verschiedene Nutzer brauchen auch verschiedene ansichten der Selbem daten / brauchen nicht die selben daten
  • So brauchen wir z.b. auch sachen wie ein Account-System das uns dabei hilft die User voneinander zu unterscheiden

Wie modellieren wir unsere Daten

  • Wir haben bestimmte constraints
  • Diese constrainst müssen so gewählt werden, dass unsere Realisierung da gut reinpasst
  • Diese müssen auch durch Operationen einfach und sinnvoll modifiziert bzw. bearbeitet werden können
  • Dann haben wir Operationen mit denen wir
    • Daten modifizieren
    • Daten abrufen können
  • Wir machen das halt via Queries, die das DBMS dann halt abarbeiten kann

Datenmodelle können wir in einige Kategorien aufteien

  • Konzeptuell
    • Auf dieser ebene gehen wir mal grundlegend davon aus, dass der user irgendwie nicht nen tiefes verständnis für DBMS dinge hat
    • Wir modellieren alles auf einer Ebene, wie wir als "menschen" Daten verstehen
    • Wir nennen das auch Entity-based Data, weil sie klassisch auch auf Objekten basiert
  • Physikalisch
    • Physikalisch betrachten wir, wie die Daten auf den Speichermedien gespeichert werden
  • Implementation
    • Hier können wir konzeptuell sachen modellieren und in einer Ebene die zwischen die ersten beiden fällt modellieren
    • Sowas wie ein Relationelles Datenbankmodell
  • NoSQL
    • Andernfalls haben wir ja auch noch die utopische vorstellung von selbst-dokumentierenden Code
    • Das ist lustig und fundamental doof und kann nich tpassieren, aber NoSQL glaubt immernoch dran

Schma vs Instanz

Schema

  • Ein Schema speichert daten in Tables, data types etc.
  • E.g. wir speichern den kram als virtuelle dinge, die man in einem Diagramm darstellen kann

Instanz

  • Die Instanz ist das was am ende auf dem Computer läuft
  • Hier werden die tatsächlichen Daten gespeichert und überwacht

Three Schema Architecture

  • Wir haben Internale Schema
    • Beschreibt die Physikalische speicherebene
    • Speichert typisch alles auch direkt im Speicher
  • Conceptual Schema
    • Hier werden die Constraintes etc. modelliert
    • Verwendet wird hier eher Konzeptuelles zeugs
  • External Level
    • Hier werden die Nutzer views beschrieben
    • Hier wird der kram verwendet, der auch im Conceptual Schema da ist
  • Mappings
    • hier werden die schema level miteinander verbunden
    • Das hier sind meisstens Interne schema

Data Indipendence

  • Daten sind unabhängig voneinander
  • Die daten werden voneinander abhängig, weil wir mappings nutzen
  • Allerdings können wir oft an den unteren ebenen was ändern, ohne das die oberen levels sich verändern

Database Modelling

  • Wenn wir daten dann modellieren können wir das auch einigermaßen aufteilen
  • Wir schauen das wir alles irgendwie repräsentiert bekommen, damit das alles funktional passt

Entity Relationshop Model

  • Das ER Modell hat ein paar grundlagen
  • Wir haben die Entities
    • Die können alle möglichen dinge darstellen
  • Relationshops
    • Mit diesen können wir die Verbindung zwischen zwei oder mehr Entities klar machen
    • Es gibt natürlich auch noch verschiedene Relationship-Models

Cardinality

  • Es gibt verschiedene arten von Relationen
  • 1:1
  • 2:2
  • M:N

Total and Partial Participation in Relationships

  • Wir können einige arten von Relationships ausdrücken
  • Wie iwr gerade schon genannt haben
  • Aber grob zusammengefasst gibt es totale participation und partielle participation
  • Hier ist der name sehr aussagend denke ich

MinMax Constraints

  • Es gibt ausserdem auch min und maximal constraints
  • wie "es kann mindestens 3 und maximal 10 leute geben, die einkaufen gehen"

Weak Entity Types

  • Weak entities sind dinger die keinen eigenen Key haben, und deswegen yeah.