Umtec Technologie AG

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;