fallstudie_datenmanagement_.../verbund/zielschema.sql
Markus Grüne 67df3e87d0 Initial: Quelldaten Verbund (XL) + DWH (XL) + README
verbund/: 8 Quelldateien (4 Praxen, 4 Formate) + zielschema.sql
          + gold_cluster.csv (Goldstandard für Auswertung)
dwh/: OLTP-Schema + Testdaten XL (~1990 Behandlungen)
      + Star- und Snowflake-Zielschema

README beschreibt Datei-Inhalte, Lade-Beispiele für PostgreSQL und
DuckDB, sowie Team-Repo-Konvention (eigene Git-Plattform der Wahl).
2026-05-15 11:48:53 +02:00

58 lines
2.1 KiB
SQL

-- ============================================================
-- VetKliniken-Verbund Hessen — Zielschema für Datenintegration
-- Gemeinsame Struktur für die konsolidierte Verbund-Datenbank
--
-- Drei Quellpraxen liefern ihre Daten in unterschiedlichen
-- Formaten: Juckstadt (CSV, Semikolon), Waldrand (CSV, Komma,
-- englisch), Schmidt (CSV Kunden + JSON Behandlungen).
--
-- Ziel: Alle Quellen in dieses einheitliche Schema überführen.
-- ============================================================
DROP TABLE IF EXISTS verbund_behandlung CASCADE;
DROP TABLE IF EXISTS verbund_kunde CASCADE;
DROP TABLE IF EXISTS verbund_praxis CASCADE;
CREATE TABLE verbund_praxis (
praxis_id SERIAL PRIMARY KEY,
kurzname VARCHAR(20) NOT NULL UNIQUE,
name VARCHAR(100) NOT NULL,
plz VARCHAR(10),
ort VARCHAR(50)
);
CREATE TABLE verbund_kunde (
kunde_id SERIAL PRIMARY KEY,
praxis_id INTEGER NOT NULL REFERENCES verbund_praxis(praxis_id),
quell_id VARCHAR(30) NOT NULL,
anrede VARCHAR(20),
vorname VARCHAR(50),
nachname VARCHAR(50) NOT NULL,
strasse VARCHAR(100),
plz VARCHAR(10),
ort VARCHAR(50),
telefon_e164 VARCHAR(20),
email VARCHAR(100),
erfasst_am DATE,
dublette_von INTEGER REFERENCES verbund_kunde(kunde_id),
UNIQUE (praxis_id, quell_id)
);
CREATE TABLE verbund_behandlung (
behandlung_id SERIAL PRIMARY KEY,
praxis_id INTEGER NOT NULL REFERENCES verbund_praxis(praxis_id),
quell_id VARCHAR(30) NOT NULL,
kunde_id INTEGER REFERENCES verbund_kunde(kunde_id),
datum DATE NOT NULL,
tier_name VARCHAR(50),
tierart VARCHAR(20),
diagnose TEXT,
betrag_eur NUMERIC(10,2),
UNIQUE (praxis_id, quell_id)
);
-- Stammdaten der drei Verbundpraxen
INSERT INTO verbund_praxis (kurzname, name, plz, ort) VALUES
('JUCK', 'Tierarztpraxis Canini', '35500', 'Juckstadt'),
('WALD', 'Kleintierpraxis Waldrand','35466', 'Rabenau'),
('SCHM', 'Tierarztzentrum Schmidt', '35578', 'Wetzlar');