-- n:m-Verknüpfung Bankbuchung <-> Belege mit zugewiesenem Betrag CREATE TABLE IF NOT EXISTS bank_transaction_belege ( id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY, bank_tx_id INT UNSIGNED NOT NULL, beleg_id INT UNSIGNED NOT NULL, betrag DECIMAL(12,2) NOT NULL DEFAULT 0.00, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uq_tx_beleg (bank_tx_id, beleg_id), FOREIGN KEY (bank_tx_id) REFERENCES bank_transactions(id) ON DELETE CASCADE, FOREIGN KEY (beleg_id) REFERENCES belege(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; -- Bestehende 1:1-Verknüpfungen migrieren INSERT IGNORE INTO bank_transaction_belege (bank_tx_id, beleg_id, betrag) SELECT bt.id, bt.beleg_id, ABS(bt.wert) FROM bank_transactions bt WHERE bt.beleg_id IS NOT NULL; -- Neuer Status 'teilweise' ALTER TABLE bank_transactions MODIFY COLUMN status ENUM('offen','teilweise','gebucht','ignoriert') NOT NULL DEFAULT 'offen'; -- Altes Einzelfeld entfernen ALTER TABLE bank_transactions DROP COLUMN beleg_id;