Asphaltrechner Planende SQL-Struktur
-- Charset/Engine Empfehlung
-- SET NAMES utf8mb4;
-- Engine: InnoDB
CREATE TABLE planende_temperatur_type (
temperatur_type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
UNIQUE KEY uq_planende_temperatur_type_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE planende_schicht_type (
schicht_type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
UNIQUE KEY uq_planende_schicht_type_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE planende_asphaltbeton_mischgutsorte_type (
mischgutsorte_type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(150) NOT NULL,
UNIQUE KEY uq_planende_mischgutsorte_type_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE planende_bezeichnung_type (
bezeichnung_type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
UNIQUE KEY uq_planende_bezeichnung_type_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE planende_bitumensorte_type (
bitumensorte_type_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
UNIQUE KEY uq_planende_bitumensorte_type_name (name)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- “Mix” / Datensatz pro Kombination + RC-Gehalt
CREATE TABLE planende_mischung (
mischung_id BIGINT AUTO_INCREMENT PRIMARY KEY,
temperatur_type_id INT NOT NULL,
schicht_type_id INT NOT NULL,
mischgutsorte_type_id INT NULL, -- in deiner Datei aktuell leer, aber zukunftssicher
bezeichnung_type_id INT NOT NULL,
bitumensorte_type_id INT NULL, -- in Datei teils NULL
rc_gehalt DECIMAL(5,3) NOT NULL, -- 0.000 .. 0.900
-- optional: “Total” ist nur eine Text-Konkatenation -> NICHT speichern (ableitbar)
CONSTRAINT fk_mischung_temperatur FOREIGN KEY (temperatur_type_id)
REFERENCES planende_temperatur_type (temperatur_type_id),
CONSTRAINT fk_mischung_schicht FOREIGN KEY (schicht_type_id)
REFERENCES planende_schicht_type (schicht_type_id),
CONSTRAINT fk_mischung_mischgutsorte FOREIGN KEY (mischgutsorte_type_id)
REFERENCES planende_asphaltbeton_mischgutsorte_type (mischgutsorte_type_id),
CONSTRAINT fk_mischung_bezeichnung FOREIGN KEY (bezeichnung_type_id)
REFERENCES planende_bezeichnung_type (bezeichnung_type_id),
CONSTRAINT fk_mischung_bitumen FOREIGN KEY (bitumensorte_type_id)
REFERENCES planende_bitumensorte_type (bitumensorte_type_id),
-- jede Kombination soll nur 1x vorkommen
UNIQUE KEY uq_planende_mischung (
temperatur_type_id,
schicht_type_id,
mischgutsorte_type_id,
bezeichnung_type_id,
bitumensorte_type_id,
rc_gehalt
)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Kennzahlen/Indikatoren (MÖK, GWP, KEA...)
CREATE TABLE planende_indikator_type (
indikator_type_id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(40) NOT NULL, -- z.B. 'MOEK21', 'GWP', 'KEA_RE', ...
name VARCHAR(150) NOT NULL, -- sprechender Name
einheit VARCHAR(80) NOT NULL, -- z.B. 'UBP', 'kg CO2-eq', 'kWh Oil-eq'
UNIQUE KEY uq_planende_indikator_type_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Basis/Skalierung: weil deine Datei die Kennzahlen doppelt enthält (Faktor 1000)
-- Beispiel: pro_tonne vs pro_kg (du kannst die Namen auch anders nennen)
CREATE TABLE planende_basis_type (
basis_type_id INT AUTO_INCREMENT PRIMARY KEY,
code VARCHAR(40) NOT NULL, -- z.B. 'PRO_TONNE', 'PRO_KG'
name VARCHAR(150) NOT NULL,
faktor_zu_prokg DECIMAL(12,6) NOT NULL, -- z.B. 1.000000 für pro_kg, 1000.000000 für pro_tonne
UNIQUE KEY uq_planende_basis_type_code (code)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
-- Faktenwerte: (mischung, indikator, basis) -> wert
CREATE TABLE planende_wert (
mischung_id BIGINT NOT NULL,
indikator_type_id INT NOT NULL,
basis_type_id INT NOT NULL,
wert DECIMAL(20,9) NOT NULL,
PRIMARY KEY (mischung_id, indikator_type_id, basis_type_id),
CONSTRAINT fk_wert_mischung FOREIGN KEY (mischung_id)
REFERENCES planende_mischung (mischung_id),
CONSTRAINT fk_wert_indikator FOREIGN KEY (indikator_type_id)
REFERENCES planende_indikator_type (indikator_type_id),
CONSTRAINT fk_wert_basis FOREIGN KEY (basis_type_id)
REFERENCES planende_basis_type (basis_type_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;