IDB Überarbeitung

This commit is contained in:
Developer01
2026-06-30 17:05:16 +02:00
parent 8b1ac1ebbf
commit e73cee1e23

View File

@@ -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