initial commit
This commit is contained in:
535
Scripts/Datenmodell DocumentCheck.sql
Normal file
535
Scripts/Datenmodell DocumentCheck.sql
Normal file
@@ -0,0 +1,535 @@
|
||||
drop table dc_users cascade constraints;
|
||||
drop table dc_document_types cascade constraints;
|
||||
drop table dc_user_roles cascade constraints;
|
||||
drop table dc_question_catalogs cascade constraints;
|
||||
drop table dc_question_categories cascade constraints;
|
||||
drop table dc_questions cascade constraints;
|
||||
drop table dc_reference_documents cascade constraints;
|
||||
drop table dc_projects cascade constraints;
|
||||
drop table dc_project_documents cascade constraints;
|
||||
drop table dc_results cascade constraints;
|
||||
-- create tables
|
||||
|
||||
create table dc_users (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_users_id_pk primary key,
|
||||
username varchar2(50 char)
|
||||
constraint users_username_unq unique not null,
|
||||
email varchar2(100 char)
|
||||
constraint users_email_unq unique not null,
|
||||
password_hash varchar2(255 char),
|
||||
role varchar2(20 char),
|
||||
is_active number default on null 1,
|
||||
created_at date default on null sysdate,
|
||||
updated_at date default on null sysdate,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
create table dc_document_types (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_document_types_id_pk primary key,
|
||||
name varchar2(100 char) not null,
|
||||
description clob,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
create table dc_reference_documents (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_reference_documents_id_pk primary key,
|
||||
uploaded_by number constraint dc_reference_documents_uploaded_by_fk
|
||||
references dc_users,
|
||||
document_type_id number constraint dc_reference_documents_doc_type_fk
|
||||
references dc_document_types,
|
||||
name varchar2(100 char) not null,
|
||||
description clob,
|
||||
file_path varchar2(500 char),
|
||||
upload_date date default on null sysdate,
|
||||
mime_type varchar2(100 char),
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_reference_documents_i1 on dc_reference_documents (uploaded_by);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
create table dc_user_roles (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_user_roles_id_pk primary key,
|
||||
role_name varchar2(20 char)
|
||||
constraint user_roles_role_name_unq unique not null,
|
||||
description clob,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
|
||||
|
||||
create table dc_question_catalogs (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_question_catalogs_id_pk primary key,
|
||||
created_by_user number constraint dc_question_catalogs_created_by_fk
|
||||
references dc_users,
|
||||
based_on_reference number constraint dc_question_catalogs_reference_document_fk
|
||||
references dc_reference_documents,
|
||||
document_type_id number constraint dc_question_catalogs_doc_type_fk
|
||||
references dc_document_types,
|
||||
name varchar2(100 char) not null,
|
||||
description varchar2(4000 char),
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_question_catalogs_i1 on dc_question_catalogs (created_by);
|
||||
|
||||
|
||||
|
||||
create table dc_question_categories (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_question_categories_id_pk primary key,
|
||||
catalog_id number constraint dc_question_categories_catalog_id_fk
|
||||
references dc_question_catalogs,
|
||||
name varchar2(100 char) not null,
|
||||
description varchar2(4000 char),
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_question_categories_i1 on dc_question_categories (catalog_id);
|
||||
|
||||
|
||||
|
||||
create table dc_questions (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_questions_id_pk primary key,
|
||||
category_id number constraint dc_questions_category_id_fk
|
||||
references dc_question_categories,
|
||||
question_text clob not null,
|
||||
evaluation_type varchar2(20 char),
|
||||
threshold number,
|
||||
result_handling varchar2(20 char),
|
||||
example_0_percent clob,
|
||||
example_100_percent clob,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_questions_i1 on dc_questions (category_id);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
create table dc_projects (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_projects_id_pk primary key,
|
||||
catalog_id number constraint dc_projects_catalog_id_fk
|
||||
references dc_question_catalogs,
|
||||
created_by_user number constraint dc_projects_created_by_fk
|
||||
references dc_users,
|
||||
name varchar2(100 char) not null,
|
||||
description clob,
|
||||
status varchar2(20 char) constraint dc_projects_status_ck
|
||||
check (status in ('PENDING','IN_PROGRESS','COMPLETED')),
|
||||
progress number default on null 0,
|
||||
completed_at date,
|
||||
notification_email varchar2(100 char),
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_projects_i1 on dc_projects (catalog_id);
|
||||
|
||||
create index dc_projects_i2 on dc_projects (created_by);
|
||||
|
||||
|
||||
|
||||
create table dc_project_documents (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_project_documents_id_pk primary key,
|
||||
project_id number constraint dc_project_documents_project_id_fk
|
||||
references dc_projects,
|
||||
document_type_id number constraint dc_project_documents_doc_type_fk
|
||||
references dc_document_types,
|
||||
catalog_id number constraint dc_project_documents_catalog_id_fk
|
||||
references dc_question_catalogs,
|
||||
original_file blob,
|
||||
original_text clob,
|
||||
translated_text clob,
|
||||
filename varchar2(255 char) not null,
|
||||
mime_type varchar2(100 char),
|
||||
uploaded_at date default on null sysdate,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_project_documents_i1 on dc_project_documents (project_id);
|
||||
|
||||
|
||||
|
||||
create table dc_results (
|
||||
id number generated by default on null as identity
|
||||
constraint dc_results_id_pk primary key,
|
||||
project_id number constraint dc_results_project_id_fk
|
||||
references dc_projects,
|
||||
question_id number constraint dc_results_question_id_fk
|
||||
references dc_questions,
|
||||
doc_id number constraint dc_results_doc_id_fk
|
||||
references dc_project_documents,
|
||||
answer clob,
|
||||
score number,
|
||||
result_type varchar2(20 char) constraint dc_results_result_type_ck
|
||||
check (result_type in ('OK','UNKLAR','NOK')),
|
||||
deviation number default on null 0,
|
||||
warning number default on null 0,
|
||||
the_comment clob,
|
||||
evaluated_at date default on null sysdate,
|
||||
row_version integer not null,
|
||||
created date not null,
|
||||
created_by varchar2(255 char) not null,
|
||||
updated date not null,
|
||||
updated_by varchar2(255 char) not null
|
||||
);
|
||||
|
||||
-- table index
|
||||
create index dc_results_i1 on dc_results (project_id);
|
||||
|
||||
create index dc_results_i2 on dc_results (question_id);
|
||||
|
||||
create index dc_results_i3 on dc_results (doc_id);
|
||||
|
||||
|
||||
|
||||
-- triggers
|
||||
create or replace trigger dc_users_biu
|
||||
before insert or update
|
||||
on dc_users
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_users_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_user_roles_biu
|
||||
before insert or update
|
||||
on dc_user_roles
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_user_roles_biu;
|
||||
/
|
||||
|
||||
create or replace trigger dc_document_types_biu
|
||||
before insert or update
|
||||
on dc_document_types
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_document_types_biu;
|
||||
/
|
||||
|
||||
create or replace trigger dc_question_catalogs_biu
|
||||
before insert or update
|
||||
on dc_question_catalogs
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_question_catalogs_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_question_categories_biu
|
||||
before insert or update
|
||||
on dc_question_categories
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_question_categories_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_questions_biu
|
||||
before insert or update
|
||||
on dc_questions
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_questions_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_reference_documents_biu
|
||||
before insert or update
|
||||
on dc_reference_documents
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_reference_documents_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_projects_biu
|
||||
before insert or update
|
||||
on dc_projects
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_projects_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_project_documents_biu
|
||||
before insert or update
|
||||
on dc_project_documents
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_project_documents_biu;
|
||||
/
|
||||
|
||||
|
||||
create or replace trigger dc_results_biu
|
||||
before insert or update
|
||||
on dc_results
|
||||
for each row
|
||||
begin
|
||||
if inserting then
|
||||
:new.row_version := 1;
|
||||
elsif updating then
|
||||
:new.row_version := NVL(:old.row_version, 0) + 1;
|
||||
end if;
|
||||
if inserting then
|
||||
:new.created := sysdate;
|
||||
:new.created_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end if;
|
||||
:new.updated := sysdate;
|
||||
:new.updated_by := coalesce(sys_context('APEX$SESSION','APP_USER'),user);
|
||||
end dc_results_biu;
|
||||
/
|
||||
|
||||
|
||||
-- Generated by Quick SQL 1.2.9 13.4.2026, 17:07:42
|
||||
|
||||
/*
|
||||
users
|
||||
id number generated by default on null as identity constraint users_id_pk primary key
|
||||
username vc50 /nn /unique
|
||||
email vc100 /nn /unique
|
||||
password_hash vc255
|
||||
role vc20
|
||||
is_active num /default 1
|
||||
created_at date /default sysdate
|
||||
updated_at date /default sysdate
|
||||
|
||||
user_roles
|
||||
id number generated by default on null as identity constraint user_roles_id_pk primary key
|
||||
role_name vc20 /nn /unique
|
||||
description clob
|
||||
|
||||
question_catalogs
|
||||
id number generated by default on null as identity constraint question_catalogs_id_pk primary key
|
||||
name vc100 /nn
|
||||
description clob
|
||||
created_by num /references users
|
||||
created_at date /default sysdate
|
||||
updated_at date /default sysdate
|
||||
|
||||
question_categories
|
||||
id number generated by default on null as identity constraint question_categories_id_pk primary key
|
||||
catalog_id num /references question_catalogs
|
||||
name vc100 /nn
|
||||
description clob
|
||||
|
||||
questions
|
||||
id number generated by default on null as identity constraint questions_id_pk primary key
|
||||
category_id num /references question_categories
|
||||
question_text clob /nn
|
||||
evaluation_type vc20
|
||||
threshold num
|
||||
result_handling vc20
|
||||
example_0_percent clob
|
||||
example_100_percent clob
|
||||
|
||||
reference_documents
|
||||
id number generated by default on null as identity constraint reference_documents_id_pk primary key
|
||||
name vc100 /nn
|
||||
description clob
|
||||
file_path vc500
|
||||
uploaded_by num /references users
|
||||
upload_date date /default sysdate
|
||||
mime_type vc100
|
||||
|
||||
projects
|
||||
id number generated by default on null as identity constraint projects_id_pk primary key
|
||||
name vc100 /nn
|
||||
description clob
|
||||
catalog_id num /references question_catalogs
|
||||
created_by num /references users
|
||||
created_at date /default sysdate
|
||||
status vc20 /check PENDING, IN_PROGRESS, COMPLETED
|
||||
progress num /default 0
|
||||
completed_at date
|
||||
notification_email vc100
|
||||
|
||||
project_documents
|
||||
id number generated by default on null as identity constraint project_documents_id_pk primary key
|
||||
project_id num /references projects
|
||||
original_file blob
|
||||
translated_file blob
|
||||
filename vc255 /nn
|
||||
mime_type vc100
|
||||
uploaded_at date /default sysdate
|
||||
|
||||
results
|
||||
id number generated by default on null as identity constraint results_id_pk primary key
|
||||
project_id num /references projects
|
||||
question_id num /references questions
|
||||
doc_id num /references project_documents
|
||||
answer clob
|
||||
score num
|
||||
result_type vc20 /check OK, UNKLAR, NOK
|
||||
deviation num /default 0
|
||||
warning num /default 0
|
||||
comment clob
|
||||
evaluated_at date /default sysdate
|
||||
|
||||
|
||||
|
||||
Non-default options:
|
||||
# settings = {"apex":"Y","auditcols":"Y","db":"23","drop":"Y","prefix":"Dc","pk":"IDENTITY","rowversion":"Y"}
|
||||
|
||||
*/
|
||||
Reference in New Issue
Block a user