From e73cee1e231d8ae10d8bf84de112569ee4f54dde Mon Sep 17 00:00:00 2001 From: Developer01 Date: Tue, 30 Jun 2026 17:05:16 +0200 Subject: [PATCH] =?UTF-8?q?IDB=20=C3=9Cberarbeitung?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../2026-06-30_Attribute und Objekte.sql | 288 ++++++++++++++++++ 1 file changed, 288 insertions(+) create mode 100644 00_DB_SETUP_SINGLE/01_DD_IDB/Für Marvin zur Erstellung neuer Objekte oder Struktur/2026-06-30_Attribute und Objekte.sql diff --git a/00_DB_SETUP_SINGLE/01_DD_IDB/Für Marvin zur Erstellung neuer Objekte oder Struktur/2026-06-30_Attribute und Objekte.sql b/00_DB_SETUP_SINGLE/01_DD_IDB/Für Marvin zur Erstellung neuer Objekte oder Struktur/2026-06-30_Attribute und Objekte.sql new file mode 100644 index 0000000..ce74588 --- /dev/null +++ b/00_DB_SETUP_SINGLE/01_DD_IDB/Für Marvin zur Erstellung neuer Objekte oder Struktur/2026-06-30_Attribute und Objekte.sql @@ -0,0 +1,288 @@ +CREATE TABLE TBIDB_LANGUAGE +( + GUID TINYINT NOT NULL IDENTITY (1, 1), + LANG_CODE VARCHAR(10) NOT NULL, + CREATE_DEFAULT_ENTRY BIT NOT NULL DEFAULT 0, + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(30), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_LANGUAGE PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_LANGUAGE UNIQUE (LANG_CODE) +) +GO +CREATE TRIGGER TBIDB_LANGUAGE_AFT_UPD ON TBIDB_LANGUAGE +FOR UPDATE +AS + UPDATE TBIDB_LANGUAGE SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_LANGUAGE.GUID = INSERTED.GUID +GO +--Sprachen anlegen +INSERT INTO TBIDB_LANGUAGE (LANG_CODE,CREATE_DEFAULT_ENTRY) VALUES ('de-DE',1); +INSERT INTO TBIDB_LANGUAGE (LANG_CODE,CREATE_DEFAULT_ENTRY) VALUES ('en-EN',1); +GO + + +CREATE TABLE TBIDB_ATTRIBUTE +( + GUID INTEGER NOT NULL IDENTITY (1, 1), + TITLE VARCHAR(100) NOT NULL, + TYP_ID TINYINT NOT NULL, + MULTI_CONTEXT BIT NOT NULL DEFAULT 0, + VIEW_SEQUENCE INTEGER NOT NULL DEFAULT 0, + VIEW_VISIBLE BIT NOT NULL DEFAULT 1, + SYS_ATTRIBUTE BIT NOT NULL DEFAULT 0, + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(100) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(100), + CHANGED_WHEN DATETIME, + DELETED BIT NOT NULL DEFAULT 0, + DELETED_WHO VARCHAR(100), + DELETED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_ATTRIBUTE PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_ATTRIBUTE UNIQUE (TITLE), + CONSTRAINT FK_TYP_ID FOREIGN KEY (TYP_ID) REFERENCES TBIDB_ATTRIBUTE_TYPE (GUID) +) +GO +CREATE TRIGGER TBIDB_ATTRIBUTE_AFT_UPD ON TBIDB_ATTRIBUTE +FOR UPDATE +AS + UPDATE TBIDB_ATTRIBUTE SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_ATTRIBUTE.GUID = INSERTED.GUID +GO +---Übersetzung der Attributbezeichnung +CREATE TABLE TBIDB_ATTRIBUTE_LANGUAGE +( + GUID BIGINT NOT NULL IDENTITY (1, 1), + ATTRIBUTE_ID INT NOT NULL, + LANGUAGE_ID TINYINT NOT NULL, + TERM_ID BIGINT NOT NULL, + COMMENT VARCHAR(500), + ADDED_WHO VARCHAR(100) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(100), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_ATT_LANGUAGE PRIMARY KEY(GUID), + CONSTRAINT UN_TBIDB_ATT_LANGUAGE UNIQUE(ATTRIBUTE_ID,LANGUAGE_ID), + CONSTRAINT FK_ATTRIBUTE_ID FOREIGN KEY(ATTRIBUTE_ID) REFERENCES TBIDB_ATTRIBUTE(GUID), + CONSTRAINT FK_LANGUAGE_ID FOREIGN KEY(LANGUAGE_ID) REFERENCES TBIDB_LANGUAGE(GUID), + CONSTRAINT FK_TERM_ID FOREIGN KEY(TERM_ID) REFERENCES TBIDB_TERM_VALUE_NVARCHAR(GUID) +) +GO +CREATE TRIGGER TBIDB_ATT_LANGUAGE_AFT_UPD ON TBIDB_ATTRIBUTE_LANGUAGE +FOR UPDATE +AS + UPDATE TBIDB_ATTRIBUTE_LANGUAGE SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_ATTRIBUTE_LANGUAGE.GUID = INSERTED.GUID +GO + +CREATE OR ALTER TRIGGER [dbo].[TBIDB_ATTRIBUTE_AFT_INS] ON [dbo].[TBIDB_ATTRIBUTE] +FOR INSERT +AS + DECLARE + @ATTRIBUTE_ID INTEGER, + @TYP_ID INTEGER, + @ADDED_WHO VARCHAR(50), + @TITLE VARCHAR(100), + @ADD_DEFAULT BIT, + @LANG_ID INTEGER, + @LANG_CODE VARCHAR(5) + SELECT + @ATTRIBUTE_ID = GUID, + @TYP_ID = TYP_ID, + @ADDED_WHO = ADDED_WHO, + @TITLE = TITLE + FROM INSERTED + + SELCT + DECLARE @NEW_TERM_ID BIGINT + EXEC PRIDB_NEW_TERM 'NVARCHAR',@TITLE,'',@TERM_ID = @NEW_TERM_ID OUTPUT; + + DECLARE cursorIDBLANGUAGE_ATTR CURSOR FOR + select GUID,LANG_CODE from TBIDB_LANGUAGE where CREATE_DEFAULT_ENTRY = 1 + OPEN cursorIDBLANGUAGE_ATTR + FETCH NEXT FROM cursorIDBLANGUAGE_ATTR INTO @LANG_ID,@LANG_CODE + WHILE @@FETCH_STATUS = 0 + BEGIN + INSERT INTO [dbo].[TBIDB_ATTRIBUTE_LANGUAGE] + ([ATTRIBUTE_ID] + ,[LANGUAGE_ID] + ,[TERM_ID] + ,[ADDED_WHO]) + VALUES + (@ATTRIBUTE_ID + ,@LANG_ID + ,@NEW_TERM_ID + ,@ADDED_WHO); + --AUSKOMMENTIERT weil noch zur Diskussion - wir legen ja nur noch über Procedures an + --EXEC PRIDB_CREATE_VIEW_DOC_DATA @LANG_CODE,'DEFAULT' + --EXEC PRIDB_CREATE_VIEW_DOC_DATA @LANG_CODE,'' + FETCH NEXT FROM cursorIDBLANGUAGE_ATTR INTO @LANG_ID,@LANG_CODE + END +CLOSE cursorIDBLANGUAGE_ATTR +DEALLOCATE cursorIDBLANGUAGE_ATTR +--################################# +--Business Entity - Geschäftseinheit oder Bereich +--################################# +CREATE TABLE TBIDB_BUSINESS_ENTITY +( + GUID INTEGER NOT NULL IDENTITY (1, 1), + TITLE VARCHAR(500) NOT NULL, + PARENT_ENT_ID INTEGER NOT NULL DEFAULT 0, + INHERITS_ATTRIBUTES BIT NOT NULL DEFAULT 1, + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(30), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_BUSINESS_ENTITY PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_BUSINESS_ENTITY UNIQUE (TITLE) +) +GO +CREATE TRIGGER TBIDB_BUSINESS_ENTITY_AFT_UPD ON TBIDB_BUSINESS_ENTITY +FOR UPDATE +AS + UPDATE TBIDB_BUSINESS_ENTITY SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_BUSINESS_ENTITY.GUID = INSERTED.GUID +GO +INSERT INTO TBIDB_BUSINESS_ENTITY (TITLE) VALUES ('DEFAULT'); + +--Attribut zu Geschäftsbereich +CREATE TABLE TBIDB_BE_ATTRIBUTE +( + GUID BIGINT NOT NULL IDENTITY (1, 1), + BE_ID INTEGER NOT NULL, + ATTR_ID INTEGER NOT NULL, + --DEFAULT_SEARCH_ATTRIBUTE BIT NOT NULL DEFAULT 0, DAS KANN WEG :) + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(100) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(100), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_BE_ATTRIBUTE PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_BE_ATTRIBUTE UNIQUE (BE_ID,ATTR_ID), + CONSTRAINT FK_IDB_BEATT_BEID FOREIGN KEY (BE_ID) REFERENCES TBIDB_BUSINESS_ENTITY (GUID), + CONSTRAINT FK_IDB_BEATT_AID FOREIGN KEY (ATTR_ID) REFERENCES TBIDB_ATTRIBUTE (GUID), +) +GO +CREATE TRIGGER TBIDB_BE_ATTRIBUTE_AFT_UPD ON TBIDB_BE_ATTRIBUTE +FOR UPDATE +AS + UPDATE TBIDB_BE_ATTRIBUTE SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_BE_ATTRIBUTE.GUID = INSERTED.GUID +GO + + +--######################################################################### +--Hier schon mal die IDB_TYPEN_DEFINITION weil es auch in den Komplex passt +CREATE TABLE TBIDB_OBJECT_KIND +( + GUID TINYINT NOT NULL IDENTITY (1, 1), + KIND_NAME VARCHAR(100) NOT NULL, + ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(30), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_OBJECT_KIND PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_OBJECT_KIND UNIQUE (KIND_NAME) +) +GO +INSERT INTO TBIDB_OBJECT_KIND (KIND_NAME) VALUES ('DOC'); +INSERT INTO TBIDB_OBJECT_KIND (KIND_NAME) VALUES ('OBJECT'); +INSERT INTO TBIDB_OBJECT_KIND (KIND_NAME) VALUES ('DYNAMIC_FOLDER'); +GO +CREATE TRIGGER TBIDB_OBJECT_KIND_AFT_UPD ON TBIDB_OBJECT_KIND +FOR UPDATE +AS + UPDATE TBIDB_OBJECT_KIND SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_OBJECT_KIND.GUID = INSERTED.GUID +GO +--############################################# +--Die Objekt-Tabelle welche das IDB_OBJ erzeugt +--############################################# +CREATE TABLE TBIDB_OBJECT +( + IDB_OBJ_ID BIGINT NOT NULL IDENTITY (1000000, 1), + KIND_TYPE_ID TINYINT NOT NULL, + REFERENCE_KEY BIGINT, + PARENT_OBJ_ID BIGINT NOT NULL DEFAULT 0, + IS_VERSION BIT NOT NULL DEFAULT 0, + ACTIVE BIT NOT NULL DEFAULT 1, + DELETED BIT NOT NULL DEFAULT 0, + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(30) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(30), + CHANGED_WHEN DATETIME, + CHANGED_WHEN_SUBSTRUCTURE DATETIME, + CHANGED_WHO_SUBSTRUCTURE VARCHAR(100), + CONSTRAINT PK_TBIDB_OBJECT PRIMARY KEY (IDB_OBJ_ID), + CONSTRAINT FK_KIND_TYPE_ID FOREIGN KEY (KIND_TYPE_ID) REFERENCES TBIDB_OBJECT_KIND (GUID) +) +GO + +CREATE TRIGGER TBIDB_OBJECT_AFT_INS ON TBIDB_OBJECT +WITH EXECUTE AS CALLER +FOR INSERT +AS +BEGIN TRY + DECLARE + @IDB_OBJ_ID BIGINT, + @REFERENCE_KEY BIGINT + SELECT + @IDB_OBJ_ID = IDB_OBJ_ID, + @REFERENCE_KEY = REFERENCE_KEY + FROM INSERTED + + IF @REFERENCE_KEY IS NULL + UPDATE TBIDB_OBJECT SET REFERENCE_KEY = @IDB_OBJ_ID + FROM INSERTED + WHERE TBIDB_OBJECT.IDB_OBJ_ID = INSERTED.IDB_OBJ_ID +END TRY +BEGIN CATCH + PRINT 'ERROR IN TRIGGER: ' + CONVERT(VARCHAR(30),ERROR_PROCEDURE()) + + ' - ERROR-MESSAGE: ' + + CONVERT(VARCHAR(500),ERROR_MESSAGE()) +END CATCH +GO + +CREATE TRIGGER [dbo].[TBIDB_OBJECT_AFT_UPD] ON [dbo].[TBIDB_OBJECT] +FOR UPDATE +AS +IF UPDATE(REFERENCE_KEY) OR UPDATE(PARENT_OBJ_ID) OR UPDATE(IS_VERSION) OR UPDATE(ACTIVE) OR UPDATE(DELETED) OR UPDATE(COMMENT) + UPDATE TBIDB_OBJECT SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_OBJECT.IDB_OBJ_ID = INSERTED.IDB_OBJ_ID +GO +--IDBOBJ zu Geschäftseinheit +CREATE TABLE TBIDB_OBJECT_BE +( + GUID BIGINT NOT NULL IDENTITY (1, 1), + IDB_OBJ_ID BIGINT NOT NULL, + BE_ID INTEGER NOT NULL, + COMMENT VARCHAR(1000), + ADDED_WHO VARCHAR(100) NOT NULL DEFAULT 'SYSTEM', + ADDED_WHEN DATETIME NOT NULL DEFAULT (GETDATE()), + CHANGED_WHO VARCHAR(100), + CHANGED_WHEN DATETIME, + CONSTRAINT PK_TBIDB_OBJECT_BE PRIMARY KEY (GUID), + CONSTRAINT UQ_TBIDB_OBJECT_BE UNIQUE (IDB_OBJ_ID,BE_ID), + CONSTRAINT FK_IDB_OBJ_ID FOREIGN KEY (IDB_OBJ_ID) REFERENCES TBIDB_OBJECT (IDB_OBJ_ID), + CONSTRAINT FK_BE_ID FOREIGN KEY (BE_ID) REFERENCES TBIDB_BUSINESS_ENTITY (GUID), +) +GO +CREATE TRIGGER TBIDB_OBJECT_BE_AFT_UPD ON TBIDB_OBJECT_BE +FOR UPDATE +AS + UPDATE TBIDB_OBJECT_BE SET CHANGED_WHEN = GETDATE() + FROM INSERTED + WHERE TBIDB_OBJECT_BE.IDB_OBJ_ID = INSERTED.IDB_OBJ_ID +GO