CREATE TABLE [Umlageschlüssel] ( [Id_Umlageschlüssel] BIGINT IDENTITY(1,1) NOT NULL, [Gebäude] BIGINT NULL, [Typ] BIGINT NOT NULL, [Bezeichnung] VARCHAR(100) NULL, [Einheit] VARCHAR(10) NULL, [Nachkomma] INTEGER NULL, [BasiswertFest] BIT NULL, CONSTRAINT [Pk_Umlageschlüssel] PRIMARY KEY ([Id_Umlageschlüssel]) ) GO CREATE TABLE [Kontakt] ( [Id_Kontakt] BIGINT IDENTITY(1,1) NOT NULL, [Gebäude] BIGINT NOT NULL, [Art] BIGINT NOT NULL, [Anrede] VARCHAR(60) NULL, [Firma] VARCHAR(60) NULL, [Firma2] VARCHAR(60) NULL, [Vorname] VARCHAR(60) NULL, [Name] VARCHAR(60) NULL, [Adresse] BIGINT NULL, CONSTRAINT [Pk_Kontakt] PRIMARY KEY ([Id_Kontakt]) ) GO CREATE TABLE [Bankkonto] ( [Id_Bankkonto] BIGINT IDENTITY(1,1) NOT NULL, [Konto] BIGINT NOT NULL, [Kontonummer] VARCHAR(10) NOT NULL, [BLZ] VARCHAR(10) NOT NULL, [IBAN] VARCHAR(22) NOT NULL, [BIC] VARCHAR(9) NOT NULL, CONSTRAINT [Pk_Bankkonto] PRIMARY KEY ([Id_Bankkonto]) ) GO CREATE TABLE [KommunikationRef] ( [Kontakt] BIGINT NOT NULL, [Kommunikation] BIGINT NOT NULL, CONSTRAINT [Pk_KommunikationRef] PRIMARY KEY ([Kontakt],[Kommunikation]) ) GO CREATE TABLE [Ablage] ( [Id_Ablage] BIGINT IDENTITY(1,1) NOT NULL, [Typ] BIGINT NOT NULL, [Übergeordnet] BIGINT NULL, [Bezeichnung] VARCHAR(50) NOT NULL, CONSTRAINT [Pk_Ablage] PRIMARY KEY ([Id_Ablage]) ) GO CREATE TABLE [Buchung] ( [Id_Buchung] INTEGER NOT NULL, [Periode] BIGINT NOT NULL, [Konto] BIGINT NOT NULL, [Gegenkonto] BIGINT NOT NULL, [Bankbuchung] BIGINT NULL, [Einheit] BIGINT NULL, [Kontakt] BIGINT NULL, [Dokument] BIGINT NULL, [Datum] DATETIME NULL, [Wertstellung] DATETIME NULL, [Belegnummer] VARCHAR(25) NULL, [Buchungstext] VARCHAR(100) NULL, [ZeitraumVon] DATETIME NULL, [ZetraumBis] DATETIME NULL, CONSTRAINT [Pk_Buchung] PRIMARY KEY ([Id_Buchung]) ) GO CREATE TABLE [Dokument] ( [Id_Dokument] BIGINT IDENTITY(1,1) NOT NULL, [Schrank] BIGINT NOT NULL, [Ablage] BIGINT NOT NULL, [Art] BIGINT NOT NULL, [Mail] BIGINT NULL, [Buchhaltung] BIT NOT NULL, [Ausgeglichen] BIT NOT NULL, [Kontakt] BIGINT NULL, [Nummer] VARCHAR(25) NULL, [Datum] DATETIME NULL, [Beschreibung] VARCHAR(255) NULL, [Fulltext] VARCHAR(100) NULL, [Archivpfad] VARCHAR(255) NULL, [From] BIGINT NULL, [Text] VARCHAR(100) NULL, [HTML] VARCHAR(100) NULL, CONSTRAINT [Pk_Dokument] PRIMARY KEY ([Id_Dokument]) ) GO CREATE TABLE [EinheitAnteil] ( [Id_EinheitAnteil] INTEGER NOT NULL, [Einheit] BIGINT NOT NULL, [Umlageschlüssel] BIGINT NOT NULL, [Datum] DATETIME NULL, [Wert] DECIMAL(18,3) NULL, [Kommentar] VARCHAR(255) NULL, CONSTRAINT [Pk_EinheitAnteil] PRIMARY KEY ([Id_EinheitAnteil]) ) GO CREATE TABLE [Kommunikation] ( [Id_Kommunikation] BIGINT IDENTITY(1,1) NOT NULL, [Kontakt] BIGINT NOT NULL, [Art] BIGINT NOT NULL, [Wert] VARCHAR(100) NULL, CONSTRAINT [Pk_Kommunikation] PRIMARY KEY ([Id_Kommunikation]) ) GO CREATE TABLE [Einheit] ( [Id_Einheit] BIGINT IDENTITY(1,1) NOT NULL, [Gebäude] BIGINT NOT NULL, [Etage] BIGINT NOT NULL, [Lage] BIGINT NOT NULL, [Art] BIGINT NOT NULL, [Bezeichnung] VARCHAR(100) NULL, [Fläche] DECIMAL(18,2) NOT NULL, [Heizfläche] DECIMAL(18,2) NOT NULL, [AnzahlRäume] INTEGER NOT NULL, CONSTRAINT [Pk_Einheit] PRIMARY KEY ([Id_Einheit]) ) GO CREATE TABLE [Konfig] ( [Id_Konfig] BIGINT IDENTITY(1,1) NOT NULL, [Kategorie] BIGINT NULL, [Name] VARCHAR(25) NULL, [Wert] VARCHAR(100) NULL, CONSTRAINT [Pk_Konfig] PRIMARY KEY ([Id_Konfig]) ) GO CREATE TABLE [Adresse] ( [Id_Adresse] BIGINT IDENTITY(1,1) NOT NULL, [Strasse] VARCHAR(60) NULL, [Plz] VARCHAR(10) NULL, [Ort] VARCHAR(60) NULL, [Land] BIGINT NULL, CONSTRAINT [Pk_Adresse] PRIMARY KEY ([Id_Adresse]) ) GO CREATE TABLE [Land] ( [Id_Land] BIGINT IDENTITY(1,1) NOT NULL, [Land] VARCHAR(50) NOT NULL, CONSTRAINT [Pk_Land] PRIMARY KEY ([Id_Land]) ) GO CREATE TABLE [Eigenschaft] ( [Tag] BIGINT NOT NULL, [Wert] BIGINT NOT NULL, [Dokument] BIGINT NOT NULL, [Kontakt] BIGINT NOT NULL, CONSTRAINT [Pk_Eigenschaft] PRIMARY KEY ([Tag],[Wert],[Dokument],[Kontakt]) ) GO CREATE TABLE [Periode] ( [Id_Periode] BIGINT IDENTITY(1,1) NOT NULL, [Gebäude] BIGINT NOT NULL, [Typ] BIGINT NOT NULL, [Beginn] DATETIME NULL, [Ende] DATETIME NULL, CONSTRAINT [Pk_Periode] PRIMARY KEY ([Id_Periode]) ) GO CREATE TABLE [Konto] ( [Id_Konto] BIGINT IDENTITY(1,1) NOT NULL, [Gebäude] BIGINT NULL, [Art] BIGINT NOT NULL, [Nummer] VARCHAR(10) NULL, [Bezeichnung] VARCHAR(100) NULL, [LetzteBuchung] DATETIME NULL, [Notizen] VARCHAR(100) NULL, [StdUmlSchl] BIGINT NULL, CONSTRAINT [Pk_Konto] PRIMARY KEY ([Id_Konto]) ) GO CREATE TABLE [EigenschaftWert] ( [IdEigenschaftWert] BIGINT IDENTITY(1,1) NOT NULL, [Referenz] BIGINT NOT NULL, [Wert] VARCHAR(255) NOT NULL, CONSTRAINT [Pk_EigenschaftWert] PRIMARY KEY ([IdEigenschaftWert]) ) GO CREATE TABLE [Gebäude] ( [Id_Gebäude] BIGINT IDENTITY(1,1) NOT NULL, [Matchcode] VARCHAR(100) NULL, [Adresse] BIGINT NOT NULL, [Notizen] VARCHAR(100) NULL, CONSTRAINT [Pk_Gebäude] PRIMARY KEY ([Id_Gebäude]) ) GO CREATE TABLE [BankBuchung] ( [Id_Bankbuchung] BIGINT IDENTITY(1,1) NOT NULL, [Bankkonto] BIGINT NOT NULL, [Kontonummer] VARCHAR(10) NOT NULL, [Bankleitzahl] VARCHAR(8) NOT NULL, [IBAN] VARCHAR(22) NOT NULL, [BIC] VARCHAR(9) NOT NULL, [Betrag] DECIMAL(18,2) NOT NULL, [Buchungstext] VARCHAR(27) NULL, [Betrag_Währung] VARCHAR(3) NOT NULL, [Buchungstag] DATETIME NULL, [Begünstigter_Absender_Bankleitzahl] VARCHAR(11) NULL, [Begünstigter_Absender_Kontonummer] VARCHAR(30) NULL, [Begünstigter_Absender_Name] VARCHAR(27) NULL, [Internet] VARCHAR(1) NULL, [Kategorie] VARCHAR(35) NULL, [Kommentar] VARCHAR(255) NULL, [Kostenstelle] VARCHAR(35) NULL, [Laufende_Nummer] INTEGER NULL, [Marker] VARCHAR(1) NULL, [Originalbetrag] DECIMAL(18,2) NULL, [Originalbetrag_Währung] VARCHAR(3) NULL, [Primanota] INTEGER NULL, [Saldo] DECIMAL(18,2) NULL, [Saldo_Währung] VARCHAR(3) NULL, [Storno] VARCHAR(1) NULL, [Storno_Originalbetrag] DECIMAL(18,2) NULL, [Splittbuchung_Auftraggeber_Name] VARCHAR(27) NULL, [Splittbuchung_Kategorie] VARCHAR(35) NULL, [Splittbuchung_Kostenstelle] VARCHAR(35) NULL, [Splittbuchung_Originalbetrag] DECIMAL(18,2) NULL, [Splittbuchung_Unterkategorie] VARCHAR(35) NULL, [Splittbuchung_Verwendungszweckzeile_1] VARCHAR(27) NULL, [Textschlüssel] INTEGER NULL, [Unterkategorie] VARCHAR(35) NULL, [Verwendungszweckzeile_1] VARCHAR(100) NULL, [Verwendungszweckzeile_2] VARCHAR(100) NULL, [Verwendungszweckzeile_3] VARCHAR(100) NULL, [Verwendungszweckzeile_4] VARCHAR(100) NULL, [Verwendungszweckzeile_5] VARCHAR(100) NULL, [Verwendungszweckzeile_6] VARCHAR(100) NULL, [Verwendungszweckzeile_7] VARCHAR(100) NULL, [Verwendungszweckzeile_8] VARCHAR(100) NULL, [Verwendungszweckzeile_9] VARCHAR(100) NULL, [Verwendungszweckzeile_10] VARCHAR(100) NULL, [Verwendungszweckzeile_11] VARCHAR(100) NULL, [Verwendungszweckzeile_12] VARCHAR(100) NULL, [Verwendungszweckzeile_13] VARCHAR(100) NULL, [Verwendungszweckzeile_14] VARCHAR(100) NULL, [Wertstellungstag] DATETIME NULL, [Steuersatz] DECIMAL(18,2) NULL, [SteuersatzWaehr] VARCHAR(1) NULL, [Steuerbetrag] DECIMAL(18,2) NULL, [SteuerbetragWaehr] VARCHAR(3) NULL, [Fibu_Nr] VARCHAR(1) NULL, [Splittbuchung_Steuersatz] DECIMAL(3,2) NULL, [Splittbuchung_SteuersatzWaehr] VARCHAR(1) NULL, [Splittbuchung_Steuerbetrag] DECIMAL(18,2) NULL, [Splittbuchung_SteuerbetragWaehr] VARCHAR(3) NULL, [Splittbuchung_Fibu_Nr] VARCHAR(255) NULL, [Abweichender_Auftraggeber] VARCHAR(50) NULL, [Ende_zu_Ende_Referenz] VARCHAR(50) NULL, [Kundenreferenz] VARCHAR(50) NULL, [Mandatsreferenz] VARCHAR(15) NULL, [Purpose_Code] VARCHAR(50) NULL, [Rückgabegrund] VARCHAR(50) NULL, [Rückgabegrund_Code] VARCHAR(5) NULL, [Entgelt_fremd] DECIMAL(18,2) NULL, [Entgelt_fremd_Währung] VARCHAR(3) NULL, [Entgelt_eigen] DECIMAL(18,2) NULL, [Entgelt_eigen_Währung] VARCHAR(3) NULL, [Zinskompensationsbetrag] DECIMAL(18,2) NULL, [Zinskompensationsbetrag_Währung] VARCHAR(3) NULL, [Ursprungsbetrag] DECIMAL(18,2) NULL, [Ursprungsbetrag_Währung] VARCHAR(3) NULL, [Gläubiger_Identifikation] VARCHAR(50) NULL, [Soll] DECIMAL(18,2) NULL, [Haben] DECIMAL(18,2) NULL, CONSTRAINT [PK_BankBuchungen] PRIMARY KEY ([Id_Bankbuchung]) ) GO CREATE INDEX [Idx_Beschreibung] ON [Dokument] ([Beschreibung]) GO CREATE INDEX [Idx_EigenschaftWert] ON [EigenschaftWert] ([Referenz],[Wert]) GO CREATE INDEX [Idx_Ablage] ON [Dokument] ([Schrank],[Ablage]) GO CREATE INDEX [Idx_Nummer] ON [Dokument] ([Nummer]) GO CREATE INDEX [Idx_KontoNummer] ON [Konto] ([Gebäude],[Nummer]) GO CREATE INDEX [Idx_KontoBezeichnung] ON [Konto] ([Gebäude],[Bezeichnung]) GO CREATE INDEX [Idx_Konfig] ON [Konfig] ([Kategorie],[Name]) GO CREATE INDEX [Idx_Gebäude] ON [Gebäude] ([Matchcode]) GO CREATE INDEX [Idx_KontaktName] ON [Kontakt] ([Name],[Vorname]) GO CREATE INDEX [Idx_Kontakt] ON [Kontakt] ([Firma],[Firma2],[Name]) GO CREATE INDEX [Idx_KontoArt] ON [Konto] ([Gebäude],[Art]) GO CREATE INDEX [Ids_KontaktFirma] ON [Kontakt] ([Firma],[Firma2]) GO ALTER TABLE [Periode] ADD CONSTRAINT [Konfig_Periode] FOREIGN KEY ([Typ]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [BankBuchung] ADD CONSTRAINT [Bankkonto_BankBuchung] FOREIGN KEY ([Bankkonto]) REFERENCES [Bankkonto] ([Id_Bankkonto]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Konto] ADD CONSTRAINT [Konfig_Konto] FOREIGN KEY ([Art]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Dokument] ADD CONSTRAINT [Konfig_Dokument] FOREIGN KEY ([Art]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Kontakt] ADD CONSTRAINT [Konfig_Kontakt] FOREIGN KEY ([Art]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Einheit] ADD CONSTRAINT [Konfig_Einheit] FOREIGN KEY ([Etage]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Kommunikation] ADD CONSTRAINT [Konfig_Kommunikation] FOREIGN KEY ([Art]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Einheit] ADD CONSTRAINT [Konfig_Einheit_1] FOREIGN KEY ([Lage]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Bankkonto] ADD CONSTRAINT [Konto_Bankkonto] FOREIGN KEY ([Konto]) REFERENCES [Konto] ([Id_Konto]) GO ALTER TABLE [Einheit] ADD CONSTRAINT [Konfig_Einheit_2] FOREIGN KEY ([Art]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Eigenschaft] ADD CONSTRAINT [EigenschaftWert_Eigenschaft] FOREIGN KEY ([Wert]) REFERENCES [EigenschaftWert] ([IdEigenschaftWert]) GO ALTER TABLE [Eigenschaft] ADD CONSTRAINT [Konfig_Eigenschaft] FOREIGN KEY ([Tag]) REFERENCES [Konfig] ([Id_Konfig]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Eigenschaft] ADD CONSTRAINT [Dokument_Eigenschaft] FOREIGN KEY ([Dokument]) REFERENCES [Dokument] ([Id_Dokument]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Umlageschlüssel] ADD CONSTRAINT [Konfig_Umlageschlüssel] FOREIGN KEY ([Typ]) REFERENCES [Konfig] ([Id_Konfig]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Eigenschaft] ADD CONSTRAINT [Kontakt_Eigenschaft] FOREIGN KEY ([Kontakt]) REFERENCES [Kontakt] ([Id_Kontakt]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Kontakt] ADD CONSTRAINT [Gebäude_Kontakt] FOREIGN KEY ([Gebäude]) REFERENCES [Gebäude] ([Id_Gebäude]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Dokument] ADD CONSTRAINT [Dokument_Dokument] FOREIGN KEY ([Mail]) REFERENCES [Dokument] ([Id_Dokument]) GO ALTER TABLE [KommunikationRef] ADD CONSTRAINT [Kontakt_KommunikationRef] FOREIGN KEY ([Kontakt]) REFERENCES [Kontakt] ([Id_Kontakt]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [EigenschaftWert] ADD CONSTRAINT [Konfig_EigenschaftWert] FOREIGN KEY ([Referenz]) REFERENCES [Konfig] ([Id_Konfig]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [KommunikationRef] ADD CONSTRAINT [Kommunikation_KommunikationRef] FOREIGN KEY ([Kommunikation]) REFERENCES [Kommunikation] ([Id_Kommunikation]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Dokument] ADD CONSTRAINT [Ablage_Dokument] FOREIGN KEY ([Ablage]) REFERENCES [Ablage] ([Id_Ablage]) GO ALTER TABLE [Kontakt] ADD CONSTRAINT [Adresse_Kontakt] FOREIGN KEY ([Adresse]) REFERENCES [Adresse] ([Id_Adresse]) GO ALTER TABLE [Gebäude] ADD CONSTRAINT [Adresse_Gebäude] FOREIGN KEY ([Adresse]) REFERENCES [Adresse] ([Id_Adresse]) GO ALTER TABLE [Einheit] ADD CONSTRAINT [Gebäude_Einheit] FOREIGN KEY ([Gebäude]) REFERENCES [Gebäude] ([Id_Gebäude]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [EinheitAnteil] ADD CONSTRAINT [Einheit_EinheitAnteil] FOREIGN KEY ([Einheit]) REFERENCES [Einheit] ([Id_Einheit]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [EinheitAnteil] ADD CONSTRAINT [Umlageschlüssel_EinheitAnteil] FOREIGN KEY ([Umlageschlüssel]) REFERENCES [Umlageschlüssel] ([Id_Umlageschlüssel]) GO ALTER TABLE [Umlageschlüssel] ADD CONSTRAINT [Gebäude_Umlageschlüssel] FOREIGN KEY ([Gebäude]) REFERENCES [Gebäude] ([Id_Gebäude]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Adresse] ADD CONSTRAINT [Land_Adresse] FOREIGN KEY ([Land]) REFERENCES [Land] ([Id_Land]) GO ALTER TABLE [Konto] ADD CONSTRAINT [Gebäude_Konto] FOREIGN KEY ([Gebäude]) REFERENCES [Gebäude] ([Id_Gebäude]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Periode] ADD CONSTRAINT [Gebäude_Periode] FOREIGN KEY ([Gebäude]) REFERENCES [Gebäude] ([Id_Gebäude]) GO ALTER TABLE [Konto] ADD CONSTRAINT [Umlageschlüssel_Konto] FOREIGN KEY ([StdUmlSchl]) REFERENCES [Umlageschlüssel] ([Id_Umlageschlüssel]) GO ALTER TABLE [Buchung] ADD CONSTRAINT [Dokument_Buchung] FOREIGN KEY ([Dokument]) REFERENCES [Dokument] ([Id_Dokument]) ON DELETE SET NULL ON UPDATE SET NULL GO ALTER TABLE [Buchung] ADD CONSTRAINT [Kontakt_Buchung] FOREIGN KEY ([Kontakt]) REFERENCES [Kontakt] ([Id_Kontakt]) ON DELETE SET NULL ON UPDATE SET NULL GO ALTER TABLE [Dokument] ADD CONSTRAINT [Schrank_Dokument] FOREIGN KEY ([Schrank]) REFERENCES [Ablage] ([Id_Ablage]) GO ALTER TABLE [Konfig] ADD CONSTRAINT [Konfig_Konfig] FOREIGN KEY ([Kategorie]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Ablage] ADD CONSTRAINT [Konfig_Ablage] FOREIGN KEY ([Typ]) REFERENCES [Konfig] ([Id_Konfig]) GO ALTER TABLE [Buchung] ADD CONSTRAINT [Konto_Buchung] FOREIGN KEY ([Konto]) REFERENCES [Konto] ([Id_Konto]) GO ALTER TABLE [Buchung] ADD CONSTRAINT [Periode_Buchung] FOREIGN KEY ([Periode]) REFERENCES [Periode] ([Id_Periode]) ON DELETE CASCADE ON UPDATE CASCADE GO ALTER TABLE [Buchung] ADD CONSTRAINT [Gegenkonto_Buchung] FOREIGN KEY ([Gegenkonto]) REFERENCES [Konto] ([Id_Konto]) GO ALTER TABLE [Buchung] ADD CONSTRAINT [Einheit_Buchung] FOREIGN KEY ([Einheit]) REFERENCES [Einheit] ([Id_Einheit]) GO ALTER TABLE [Buchung] ADD CONSTRAINT [BankBuchung_Buchung] FOREIGN KEY ([Bankbuchung]) REFERENCES [BankBuchung] ([Id_Bankbuchung]) GO