From 210602df9e0ca8f922bb14b7f0a64f163909e177 Mon Sep 17 00:00:00 2001
From: Martin Weise <martin.weise@tuwien.ac.at>
Date: Sat, 22 Feb 2025 19:03:24 +0100
Subject: [PATCH] Added migration script

Signed-off-by: Martin Weise <martin.weise@tuwien.ac.at>
---
 .docs/changelog.md                            |  37 +-
 .../migration/schema_1.6.3-to-1.7.0.sql       | 472 ++++++++++++++++++
 helm/dbrepo/files/01-setup-schema.sql         |   2 +
 3 files changed, 486 insertions(+), 25 deletions(-)
 create mode 100644 dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql

diff --git a/.docs/changelog.md b/.docs/changelog.md
index 7914aeb06a..4f64307078 100644
--- a/.docs/changelog.md
+++ b/.docs/changelog.md
@@ -4,15 +4,22 @@ author: Martin Weise
 
 ## v1.7.0 (????)
 
-### What's Changed
+[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.7.0)
 
-TBD
+!!! warning "Contains Breaking Changes"
 
-## v1.6.5 (2025-02-18)
+    This release updates the Metadata Database schema which is incompatible to v1.6.3! Use the migration
+    script [`schema_1.6.3-to-1.7.0.sql`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.7/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql)
+    to apply the changes manually.
 
-[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.7.0)
+#### Changes
+
+* Replaced sequential numerical ids with non-guessable random ids in the Metadata Database 
+  in [#491](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/issues/491).
 
-### What's Changed
+## v1.6.5 (2025-02-18)
+
+[:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.5)
 
 #### Fixes
 
@@ -24,8 +31,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.4)
 
-### What's Changed
-
 #### Fixes
 
 * Fixed a bug where the users were not synced with the Metadata Database
@@ -35,8 +40,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.3)
 
-### What's Changed
-
 #### Changes
 
 * Refactored the UI to support OIDC and added an event listener to the Auth Service that syncs users on creation to the
@@ -46,8 +49,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.2)
 
-### What's Changed
-
 #### Changes
 
 * Added interface tests for the Python library in Gitlab CI/CD pipeline
@@ -62,8 +63,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.1)
 
-### What's Changed
-
 #### Changes
 
 * Added privacy feature for hidden databases (and optionally tables, views, subsets) that hides them completely from
@@ -78,8 +77,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.6.0)
 
-### What's Changed
-
 #### Features
 
 * Added possibility to modify table description and privacy mode that hides metadata of databases, tables, subsets and
@@ -117,8 +114,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.5.3)
 
-### What's Changed
-
 #### Fixes
 
 * Fixed a bug where subsets containing sub-queries are not able to retrieve data
@@ -128,8 +123,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.5.2)
 
-### What's Changed
-
 #### Changes
 
 * Adapt Helm chart to support `runAsNonRoot` throughout and specify `resource` presets for the highly-constrained
@@ -149,8 +142,6 @@ TBD
 
 [:simple-gitlab: GitLab Release](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/tags/v1.5.1)
 
-### What's Changed
-
 #### Fixes
 
 * Bug where the data volume could not be calculated when the data length column in the Metadata Database is `null`
@@ -168,8 +159,6 @@ TBD
     script [`schema_1.4.5-to-1.5.0.sql`](https://gitlab.phaidra.org/fair-data-austria-db-repository/fda-services/-/blob/release-1.5/dbrepo-metadata-db/migration/schema_1.4.5-to-1.5.0.sql)
     to apply the changes manually.
 
-### What's Changed
-
 #### Features
 
 * Added `SERIAL` data type to create incrementing key
@@ -204,8 +193,6 @@ TBD
 
     This release updates the Metadata Database schema which is incompatible to v1.4.5!
 
-### What's Changed
-
 #### Features
 
 * Added [Dashboard Service](../api/dashboard-service/) and monitoring in default setup.
diff --git a/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql b/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql
new file mode 100644
index 0000000000..272b491e0a
--- /dev/null
+++ b/dbrepo-metadata-db/migration/schema_1.6.3-to-1.7.0.sql
@@ -0,0 +1,472 @@
+DROP TABLE IF EXISTS `mdb_data`;
+DROP TABLE IF EXISTS `mdb_columns_nom`;
+DROP TABLE IF EXISTS `mdb_columns_cat`;
+DROP TABLE IF EXISTS `mdb_update`;
+DROP TABLE IF EXISTS `mdb_databases_subjects`;
+-- mdb_ontologies
+ALTER TABLE `mdb_ontologies`
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_ontologies
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE `mdb_ontologies`
+    ADD SYSTEM VERSIONING;
+-- mdb_units
+ALTER TABLE `mdb_units`
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_units
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE `mdb_units`
+    ADD SYSTEM VERSIONING;
+-- mdb_units
+ALTER TABLE `mdb_concepts`
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_concepts
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE `mdb_concepts`
+    ADD SYSTEM VERSIONING;
+-- mdb_messages
+ALTER TABLE `mdb_banner_messages`
+    DROP SYSTEM VERSIONING;
+ALTER TABLE `mdb_banner_messages` RENAME `mdb_messages`;
+ALTER TABLE mdb_messages
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE `mdb_messages`
+    ADD SYSTEM VERSIONING;
+-- mdb_image_operators
+ALTER TABLE mdb_image_operators
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_image_operators
+    DROP FOREIGN KEY mdb_image_operators_ibfk_1;
+ALTER TABLE mdb_image_operators
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_image_operators
+    CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL;
+-- mdb_image_types
+ALTER TABLE mdb_image_types
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_image_types
+    DROP FOREIGN KEY mdb_image_types_ibfk_1;
+ALTER TABLE mdb_image_types
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_image_types
+    CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL;
+-- mdb_images
+ALTER TABLE mdb_images
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_images
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+-- mdb_access
+ALTER TABLE mdb_access
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_access
+    DROP FOREIGN KEY mdb_access_ibfk_1;
+ALTER TABLE mdb_access
+    ADD FOREIGN KEY (aUserID) REFERENCES mdb_users (id);
+ALTER TABLE mdb_access
+    CHANGE COLUMN aDBID aDBID VARCHAR(36) NOT NULL;
+-- mdb_users
+ALTER TABLE mdb_users
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_users
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+-- mdb_have_access
+ALTER TABLE mdb_have_access
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_have_access
+    DROP FOREIGN KEY mdb_have_access_ibfk_1;
+ALTER TABLE mdb_have_access
+    CHANGE COLUMN user_id user_id VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_have_access
+    CHANGE COLUMN database_id database_id VARCHAR(36) NOT NULL;
+-- mdb_identifier_creators
+ALTER TABLE mdb_identifier_creators
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifier_creators
+    DROP FOREIGN KEY mdb_identifier_creators_ibfk_1;
+ALTER TABLE mdb_identifier_creators
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifier_descriptions
+ALTER TABLE mdb_identifier_descriptions
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifier_descriptions
+    DROP FOREIGN KEY mdb_identifier_descriptions_ibfk_1;
+ALTER TABLE mdb_identifier_descriptions
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifier_funders
+ALTER TABLE mdb_identifier_funders
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifier_funders
+    DROP FOREIGN KEY mdb_identifier_funders_ibfk_1;
+ALTER TABLE mdb_identifier_funders
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifier_licenses
+ALTER TABLE mdb_identifier_licenses
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifier_licenses
+    DROP FOREIGN KEY mdb_identifier_licenses_ibfk_1;
+ALTER TABLE mdb_identifier_licenses
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifier_titles
+ALTER TABLE mdb_identifier_titles
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifier_titles
+    DROP FOREIGN KEY mdb_identifier_titles_ibfk_1;
+ALTER TABLE mdb_identifier_titles
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_identifier_titles
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifier_licenses
+ALTER TABLE mdb_related_identifiers
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_related_identifiers
+    DROP FOREIGN KEY mdb_related_identifiers_ibfk_1;
+ALTER TABLE mdb_related_identifiers RENAME mdb_identifier_related;
+ALTER TABLE mdb_identifier_related
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_identifier_related
+    CHANGE COLUMN pid pid VARCHAR(36) NOT NULL;
+-- mdb_identifiers
+ALTER TABLE mdb_identifiers
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_identifiers
+    DROP FOREIGN KEY mdb_identifiers_ibfk_1;
+ALTER TABLE mdb_identifiers
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_identifiers
+    CHANGE COLUMN dbid dbid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_identifiers
+    CHANGE COLUMN qid qid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_identifiers
+    CHANGE COLUMN tid tid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_identifiers
+    CHANGE COLUMN vid vid VARCHAR(36) NOT NULL;
+-- mdb_columns_concepts
+ALTER TABLE mdb_columns_concepts
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_columns_concepts
+    DROP FOREIGN KEY mdb_columns_concepts_ibfk_1;
+ALTER TABLE mdb_columns_concepts
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_columns_concepts
+    CHANGE COLUMN cID cID VARCHAR(36) NOT NULL;
+-- mdb_columns_enums
+ALTER TABLE mdb_columns_enums
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_columns_enums
+    DROP FOREIGN KEY mdb_columns_enums_ibfk_1;
+ALTER TABLE mdb_columns_enums
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_columns_enums
+    CHANGE COLUMN column_id column_id VARCHAR(36) NOT NULL;
+-- mdb_columns_sets
+ALTER TABLE mdb_columns_sets
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_columns_sets
+    DROP FOREIGN KEY mdb_columns_sets_ibfk_1;
+ALTER TABLE mdb_columns_sets
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_columns_sets
+    CHANGE COLUMN column_id column_id VARCHAR(36) NOT NULL;
+-- mdb_columns_units
+ALTER TABLE mdb_columns_units
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_columns_units
+    DROP FOREIGN KEY mdb_columns_units_ibfk_1;
+ALTER TABLE mdb_columns_units
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_columns_units
+    CHANGE COLUMN cID cID VARCHAR(36) NOT NULL;
+-- mdb_constraints_checks
+ALTER TABLE mdb_constraints_checks
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_constraints_checks
+    DROP FOREIGN KEY mdb_constraints_checks_ibfk_1;
+ALTER TABLE mdb_constraints_checks
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_checks
+    CHANGE COLUMN tid tid VARCHAR(36) NOT NULL;
+-- mdb_constraints_foreign_key_reference
+ALTER TABLE mdb_constraints_foreign_key_reference
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    DROP FOREIGN KEY mdb_constraints_foreign_key_reference_ibfk_1;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    DROP FOREIGN KEY mdb_constraints_foreign_key_reference_ibfk_2;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    DROP FOREIGN KEY mdb_constraints_foreign_key_reference_ibfk_3;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_foreign_key_reference
+    CHANGE COLUMN fkid fkid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    CHANGE COLUMN cid cid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_constraints_foreign_key_reference
+    CHANGE COLUMN rcid rcid VARCHAR(36) NOT NULL;
+-- mdb_constraints_foreign_key
+ALTER TABLE mdb_constraints_foreign_key
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_constraints_foreign_key
+    DROP FOREIGN KEY mdb_constraints_foreign_key_ibfk_1;
+ALTER TABLE mdb_constraints_foreign_key
+    DROP FOREIGN KEY mdb_constraints_foreign_key_ibfk_2;
+ALTER TABLE mdb_constraints_foreign_key
+    CHANGE COLUMN fkid fkid VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_foreign_key
+    CHANGE COLUMN tid tid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_constraints_foreign_key
+    CHANGE COLUMN rtid rtid VARCHAR(36) NOT NULL;
+-- mdb_constraints_primary_key
+ALTER TABLE mdb_constraints_primary_key
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_constraints_primary_key
+    DROP FOREIGN KEY mdb_constraints_primary_key_ibfk_1;
+ALTER TABLE mdb_constraints_primary_key
+    DROP FOREIGN KEY mdb_constraints_primary_key_ibfk_2;
+ALTER TABLE mdb_constraints_primary_key
+    CHANGE COLUMN pkid pkid VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_primary_key
+    CHANGE COLUMN tID tID VARCHAR(36) NOT NULL;
+-- mdb_constraints_unique
+ALTER TABLE mdb_constraints_unique
+    DROP FOREIGN KEY mdb_constraints_unique_ibfk_1;
+-- mdb_constraints_unique_columns
+ALTER TABLE mdb_constraints_unique_columns
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_constraints_unique_columns
+    DROP FOREIGN KEY mdb_constraints_unique_columns_ibfk_1;
+ALTER TABLE mdb_constraints_unique_columns
+    DROP FOREIGN KEY mdb_constraints_unique_columns_ibfk_2;
+ALTER TABLE mdb_constraints_unique_columns
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_unique_columns
+    CHANGE COLUMN uid uid VARCHAR(36) NOT NULL;
+ALTER TABLE mdb_constraints_unique_columns
+    CHANGE COLUMN cid cid VARCHAR(36) NOT NULL;
+-- mdb_constraints_unique
+ALTER TABLE mdb_constraints_unique
+    CHANGE COLUMN uid uid VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_constraints_unique
+    CHANGE COLUMN tid tid VARCHAR(36) NOT NULL;
+-- mdb_columns
+ALTER TABLE mdb_columns
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_columns
+    DROP FOREIGN KEY mdb_columns_ibfk_1;
+ALTER TABLE mdb_columns
+    CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_columns
+    CHANGE COLUMN tID tID VARCHAR(36) NOT NULL;
+-- mdb_tables
+ALTER TABLE mdb_tables
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_tables
+    DROP COLUMN `separator`;
+ALTER TABLE mdb_tables
+    DROP COLUMN `quote`;
+ALTER TABLE mdb_tables
+    DROP COLUMN `element_false`;
+ALTER TABLE mdb_tables
+    DROP COLUMN `element_null`;
+ALTER TABLE mdb_tables
+    DROP COLUMN `element_true`;
+ALTER TABLE mdb_tables
+    DROP COLUMN `skip_lines`;
+ALTER TABLE mdb_tables
+    DROP FOREIGN KEY mdb_tables_ibfk_1;
+ALTER TABLE mdb_tables
+    CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_tables
+    CHANGE COLUMN tDBID tDBID VARCHAR(36) NOT NULL;
+-- mdb_view_columns
+ALTER TABLE mdb_view_columns
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_view_columns
+    DROP FOREIGN KEY mdb_view_columns_ibfk_1;
+ALTER TABLE mdb_view_columns
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_view_columns
+    CHANGE COLUMN view_id view_id VARCHAR(36) NOT NULL;
+-- mdb_view
+ALTER TABLE mdb_view
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_view
+    DROP FOREIGN KEY mdb_view_ibfk_1;
+ALTER TABLE mdb_view
+    CHANGE COLUMN ID ID VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_view
+    CHANGE COLUMN vdbid vdbid VARCHAR(36) NOT NULL;
+-- mdb_databases
+ALTER TABLE mdb_databases
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_databases
+    DROP FOREIGN KEY mdb_databases_ibfk_1;
+ALTER TABLE mdb_databases
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_databases
+    CHANGE COLUMN cid cid VARCHAR(36) NOT NULL;
+-- mdb_containers
+ALTER TABLE mdb_containers
+    DROP SYSTEM VERSIONING;
+ALTER TABLE mdb_containers
+    CHANGE COLUMN id id VARCHAR(36) NOT NULL DEFAULT UUID();
+ALTER TABLE mdb_containers
+    CHANGE COLUMN image_id image_id VARCHAR(36) NOT NULL;
+-- mdb_images
+ALTER TABLE mdb_images
+    ADD SYSTEM VERSIONING;
+-- mdb_identifiers
+ALTER TABLE mdb_identifiers
+    ADD FOREIGN KEY (dbid) REFERENCES mdb_databases (id);
+ALTER TABLE mdb_identifiers
+    ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id);
+ALTER TABLE mdb_identifiers
+    ADD FOREIGN KEY (vid) REFERENCES mdb_view (id);
+ALTER TABLE mdb_identifiers
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_licenses
+ALTER TABLE mdb_identifier_licenses
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_licenses
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_titles
+ALTER TABLE mdb_identifier_titles
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_titles
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_funders
+ALTER TABLE mdb_identifier_funders
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_funders
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_descriptions
+ALTER TABLE mdb_identifier_descriptions
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_descriptions
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_creators
+ALTER TABLE mdb_identifier_creators
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_creators
+    ADD SYSTEM VERSIONING;
+-- mdb_identifier_related
+ALTER TABLE mdb_identifier_related
+    ADD FOREIGN KEY (pid) REFERENCES mdb_identifiers (id);
+ALTER TABLE mdb_identifier_related
+    ADD SYSTEM VERSIONING;
+-- mdb_containers
+ALTER TABLE mdb_containers
+    ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id);
+ALTER TABLE mdb_containers
+    ADD SYSTEM VERSIONING;
+-- mdb_access
+ALTER TABLE mdb_access
+    ADD FOREIGN KEY (aDBID) REFERENCES mdb_databases (id);
+ALTER TABLE mdb_access
+    ADD SYSTEM VERSIONING;
+-- mdb_columns_concepts
+ALTER TABLE mdb_columns_concepts
+    ADD FOREIGN KEY (id) REFERENCES mdb_concepts (id);
+ALTER TABLE mdb_columns_concepts
+    ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id);
+ALTER TABLE mdb_columns_concepts
+    ADD SYSTEM VERSIONING;
+-- mdb_columns_enums
+ALTER TABLE mdb_columns_enums
+    ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id);
+ALTER TABLE mdb_columns_enums
+    ADD SYSTEM VERSIONING;
+-- mdb_columns_sets
+ALTER TABLE mdb_columns_sets
+    ADD FOREIGN KEY (column_id) REFERENCES mdb_columns (id);
+ALTER TABLE mdb_columns_sets
+    ADD SYSTEM VERSIONING;
+-- mdb_columns_units
+ALTER TABLE mdb_columns_units
+    ADD FOREIGN KEY (id) REFERENCES mdb_units (id);
+ALTER TABLE mdb_columns_units
+    ADD FOREIGN KEY (cID) REFERENCES mdb_columns (id);
+ALTER TABLE mdb_columns_units
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_checks
+ALTER TABLE mdb_constraints_checks
+    ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id);
+ALTER TABLE mdb_constraints_checks
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_foreign_key
+ALTER TABLE mdb_constraints_foreign_key
+    ADD FOREIGN KEY (tid) REFERENCES mdb_tables (id);
+ALTER TABLE mdb_constraints_foreign_key
+    ADD FOREIGN KEY (rtid) REFERENCES mdb_constraints_foreign_key_reference (id);
+ALTER TABLE mdb_constraints_foreign_key
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_foreign_key_reference
+ALTER TABLE mdb_constraints_foreign_key_reference
+    ADD FOREIGN KEY (fkid) REFERENCES mdb_constraints_foreign_key (fkid);
+ALTER TABLE mdb_constraints_foreign_key_reference
+    ADD FOREIGN KEY (cid) REFERENCES mdb_columns (ID);
+ALTER TABLE mdb_constraints_foreign_key_reference
+    ADD FOREIGN KEY (rcid) REFERENCES mdb_constraints_foreign_key_reference (ID);
+ALTER TABLE mdb_constraints_foreign_key_reference
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_primary_key
+ALTER TABLE mdb_constraints_primary_key
+    ADD FOREIGN KEY (pkid) REFERENCES mdb_tables (ID);
+ALTER TABLE mdb_constraints_primary_key
+    ADD FOREIGN KEY (tID) REFERENCES mdb_columns (ID);
+ALTER TABLE mdb_constraints_primary_key
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_unique
+ALTER TABLE mdb_constraints_unique
+    ADD FOREIGN KEY (tid) REFERENCES mdb_tables (ID);
+ALTER TABLE mdb_constraints_unique
+    ADD SYSTEM VERSIONING;
+-- mdb_constraints_unique_columns
+ALTER TABLE mdb_constraints_unique_columns
+    ADD FOREIGN KEY (uid) REFERENCES mdb_constraints_unique (uid);
+ALTER TABLE mdb_constraints_unique_columns
+    ADD FOREIGN KEY (cid) REFERENCES mdb_columns (ID);
+ALTER TABLE mdb_constraints_unique_columns
+    ADD SYSTEM VERSIONING;
+-- mdb_columns
+ALTER TABLE mdb_columns
+    ADD FOREIGN KEY (tID) REFERENCES mdb_tables (id);
+ALTER TABLE mdb_columns
+    ADD SYSTEM VERSIONING;
+-- mdb_tables
+ALTER TABLE mdb_tables
+    ADD FOREIGN KEY (tDBID) REFERENCES mdb_databases (id);
+ALTER TABLE mdb_tables
+    ADD SYSTEM VERSIONING;
+-- mdb_view_columns
+ALTER TABLE mdb_view_columns
+    ADD FOREIGN KEY (view_id) REFERENCES mdb_view (id);
+ALTER TABLE mdb_view_columns
+    ADD SYSTEM VERSIONING;
+-- mdb_view
+ALTER TABLE mdb_view
+    ADD FOREIGN KEY (vdbid) REFERENCES mdb_databases (id);
+ALTER TABLE mdb_view
+    ADD SYSTEM VERSIONING;
+-- mdb_databases
+ALTER TABLE mdb_databases
+    ADD FOREIGN KEY (cid) REFERENCES mdb_containers (id);
+ALTER TABLE mdb_databases
+    ADD SYSTEM VERSIONING;
+-- mdb_users
+ALTER TABLE mdb_users
+    ADD SYSTEM VERSIONING;
+-- mdb_have_access
+ALTER TABLE mdb_have_access
+    ADD FOREIGN KEY (database_id) REFERENCES mdb_databases (id);
+ALTER TABLE mdb_have_access
+    ADD SYSTEM VERSIONING;
+-- mdb_image_types
+ALTER TABLE mdb_image_types
+    ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id);
+ALTER TABLE mdb_image_types
+    ADD SYSTEM VERSIONING;
+-- mdb_image_operators
+ALTER TABLE mdb_image_operators
+    ADD FOREIGN KEY (image_id) REFERENCES mdb_images (id);
+ALTER TABLE mdb_image_operators
+    ADD SYSTEM VERSIONING;
\ No newline at end of file
diff --git a/helm/dbrepo/files/01-setup-schema.sql b/helm/dbrepo/files/01-setup-schema.sql
index a3da29558a..f874c4e263 100644
--- a/helm/dbrepo/files/01-setup-schema.sql
+++ b/helm/dbrepo/files/01-setup-schema.sql
@@ -251,6 +251,7 @@ CREATE TABLE IF NOT EXISTS `mdb_columns_concepts`
     cID     VARCHAR(36) NOT NULL,
     created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cid),
+    FOREIGN KEY (`id`) REFERENCES mdb_concepts (`id`),
     FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
@@ -260,6 +261,7 @@ CREATE TABLE IF NOT EXISTS `mdb_columns_units`
     cID     VARCHAR(36) NOT NULL,
     created TIMESTAMP   NOT NULL DEFAULT NOW(),
     PRIMARY KEY (id, cID),
+    FOREIGN KEY (id) REFERENCES mdb_units (id),
     FOREIGN KEY (`cID`) REFERENCES mdb_columns (`ID`)
 ) WITH SYSTEM VERSIONING;
 
-- 
GitLab