Hi Matt,
ich bin kein Freund von Änderung an bestehenden Tabellen. Das macht Update so unübersichtlch und erfordert mehr Handarbeit. Ich packe zusätzlich notwendige Felder immer lieber in separate Tabellen und verlinke über die ID. Das ändert aber nix an den uneinhitlichn Datenfeldern.
Ich habe mir auch mal Gedanken gemacht, wie man ein standardisiertes System schaffen kann und trotzdem jede Flexibiltät für praktisch jedes Szenario erhalten kann. Als Beispiel mal eine Tabelle zu den Zahlarten.
Über das Feld payment_module kann man bei Bedarf eine besonder Logik für eine Zahlart einbinden und ggf. aktivieren. Notwendig ist eine zweite Tabelle für die Übersetzungen. Auch hier könnte man einheitlich verfahren indem man eine Tabelle mdf_translations erstellt und hierin alle Übesetzungen für alle Tabellen speichert (Primärschlüssel Tabellenname/lfd.ID, z. B. mdf_payment_types/2: invoice)
CREATE TABLE mdf_payment_types (
payment_id INT(11) NOT NULL AUTO_INCREMENT,
payment_code VARCHAR(50) COLLATE latin1_german1_ci NOT NULL,
discount_percent DECIMAL(10,0) NOT NULL DEFAULT '0',
discount_days INT(11) NOT NULL DEFAULT '0',
payment_module VARCHAR(100) COLLATE latin1_german1_ci NOT NULL,
payment_modul_active tinyint(1) NOT NULL DEFAULT '0',
payment_active tinyint(1) NOT NULL DEFAULT '0',
external_payment_method VARCHAR(30) COLLATE latin1_german1_ci NOT NULL,
external_payment_terms VARCHAR(30) COLLATE latin1_german1_ci NOT NULL,
parent_payment_id INT(11) NOT NULL DEFAULT '0',
PRIMARY KEY (payment_id)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_german1_ci;
INSERT INTO mdf_payment_types (payment_id, payment_code, discount_percent, discount_days, payment_module, payment_modul_active, payment_active, external_payment_method, external_payment_terms, parent_payment_id) VALUES(1, 'Vorkasse', 2, 0, '', 0, 1, 'Überweisung', 'Vorkasse', 0);
INSERT INTO mdf_payment_types (payment_id, payment_code, discount_percent, discount_days, payment_module, payment_modul_active, payment_active, external_payment_method, external_payment_terms, parent_payment_id) VALUES(2, 'Rechnung', 2, 10, '', 0, 1, 'Überweisung', 'Rechnung 10Tage 2%', 0);
INSERT INTO mdf_payment_types (payment_id, payment_code, discount_percent, discount_days, payment_module, payment_modul_active, payment_active, external_payment_method, external_payment_terms, parent_payment_id) VALUES(3, 'Paypal', 0, 0, 'paypal.php', 1, 1, 'Paypal', 'Paypal', 0);
INSERT INTO mdf_payment_types (payment_id, payment_code, discount_percent, discount_days, payment_module, payment_modul_active, payment_active, external_payment_method, external_payment_terms, parent_payment_id) VALUES(4, 'Bar bei Abholung', 0, 0, '', 0, 1, 'Barzahlung', 'sofort', 0);