security-admin/db/mysql/patches/067-create-gds-tables.sql (193 lines of code) (raw):
-- Licensed to the Apache Software Foundation (ASF) under one or more
-- contributor license agreements. See the NOTICE file distributed with
-- this work for additional information regarding copyright ownership.
-- The ASF licenses this file to You under the Apache License, Version 2.0
-- (the "License"); you may not use this file except in compliance with
-- the License. You may obtain a copy of the License at
--
-- http://www.apache.org/licenses/LICENSE-2.0
--
-- Unless required by applicable law or agreed to in writing, software
-- distributed under the License is distributed on an "AS IS" BASIS,
-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-- See the License for the specific language governing permissions and
-- limitations under the License.
DROP TABLE IF EXISTS `x_gds_dataset_policy_map`;
DROP TABLE IF EXISTS `x_gds_project_policy_map`;
DROP TABLE IF EXISTS `x_gds_dataset_in_project`;
DROP TABLE IF EXISTS `x_gds_data_share_in_dataset`;
DROP TABLE IF EXISTS `x_gds_shared_resource`;
DROP TABLE IF EXISTS `x_gds_data_share`;
DROP TABLE IF EXISTS `x_gds_dataset`;
DROP TABLE IF EXISTS `x_gds_project`;
CREATE TABLE `x_gds_dataset` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `name` VARCHAR(512) NOT NULL
, `description` TEXT NULL DEFAULT NULL
, `acl` TEXT NULL DEFAULT NULL
, `terms_of_use` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_dataset_UK_name`(`name`)
, CONSTRAINT `x_gds_dataset_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_dataset_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
);
CREATE INDEX `x_gds_dataset_guid` ON `x_gds_dataset`(`guid`);
CREATE TABLE `x_gds_project` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `name` VARCHAR(512) NOT NULL
, `description` TEXT NULL DEFAULT NULL
, `acl` TEXT NULL DEFAULT NULL
, `terms_of_use` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_project_UK_name`(`name`)
, CONSTRAINT `x_gds_project_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_project_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
);
CREATE INDEX `x_gds_project_guid` ON `x_gds_project`(`guid`);
CREATE TABLE `x_gds_data_share`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `name` VARCHAR(512) NOT NULL
, `description` TEXT NULL DEFAULT NULL
, `acl` TEXT NOT NULL
, `service_id` BIGINT(20) NOT NULL
, `zone_id` BIGINT(20) NOT NULL
, `condition_expr` TEXT NULL
, `default_access_types` TEXT NULL
, `default_tag_masks` TEXT NULL
, `terms_of_use` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_data_share_UK_name`(`service_id`, `zone_id`, `name`)
, CONSTRAINT `x_gds_data_share_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_data_share_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_data_share_FK_service_id` FOREIGN KEY(`service_id`) REFERENCES `x_service`(`id`)
, CONSTRAINT `x_gds_data_share_FK_zone_id` FOREIGN KEY(`zone_id`) REFERENCES `x_security_zone`(`id`)
);
CREATE INDEX `x_gds_data_share_guid` ON `x_gds_data_share`(`guid`);
CREATE INDEX `x_gds_data_share_service_id` ON `x_gds_data_share`(`service_id`);
CREATE INDEX `x_gds_data_share_zone_id` ON `x_gds_data_share`(`zone_id`);
CREATE TABLE `x_gds_shared_resource`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `name` VARCHAR(512) NOT NULL
, `description` TEXT NULL DEFAULT NULL
, `data_share_id` BIGINT(20) NOT NULL
, `resource` TEXT NOT NULL
, `resource_signature` VARCHAR(128) NOT NULL
, `sub_resource` TEXT NULL DEFAULT NULL
, `sub_resource_type` TEXT NULL DEFAULT NULL
, `condition_expr` TEXT NULL DEFAULT NULL
, `access_types` TEXT NULL DEFAULT NULL
, `row_filter` TEXT NULL DEFAULT NULL
, `sub_resource_masks` TEXT NULL DEFAULT NULL
, `profiles` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_shared_resource_UK_name`(`data_share_id`, `name`)
, UNIQUE KEY `x_gds_shared_resource_UK_resource_signature`(`data_share_id`, `resource_signature`)
, CONSTRAINT `x_gds_shared_resource_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_shared_resource_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_shared_resource_FK_data_share_id` FOREIGN KEY(`data_share_id`) REFERENCES `x_gds_data_share`(`id`)
);
CREATE INDEX `x_gds_shared_resource_guid` ON `x_gds_shared_resource`(`guid`);
CREATE INDEX `x_gds_shared_resource_data_share_id` ON `x_gds_shared_resource`(`data_share_id`);
CREATE TABLE `x_gds_data_share_in_dataset`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `description` TEXT NULL DEFAULT NULL
, `data_share_id` BIGINT(20) NOT NULL
, `dataset_id` BIGINT(20) NOT NULL
, `status` SMALLINT NOT NULL
, `validity_period` TEXT NULL DEFAULT NULL
, `profiles` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, `approver_id` BIGINT(20) NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_dshid_UK_data_share_id_dataset_id` (`data_share_id`, `dataset_id`)
, CONSTRAINT `x_gds_dshid_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_dshid_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_dshid_FK_data_share_id` FOREIGN KEY(`data_share_id`) REFERENCES `x_gds_data_share`(`id`)
, CONSTRAINT `x_gds_dshid_FK_dataset_id` FOREIGN KEY(`dataset_id`) REFERENCES `x_gds_dataset`(`id`)
, CONSTRAINT `x_gds_dshid_FK_approver_id` FOREIGN KEY(`approver_id`) REFERENCES `x_portal_user`(`id`)
);
CREATE INDEX `x_gds_dshid_guid` ON `x_gds_data_share_in_dataset`(`guid`);
CREATE INDEX `x_gds_dshid_data_share_id` ON `x_gds_data_share_in_dataset`(`data_share_id`);
CREATE INDEX `x_gds_dshid_dataset_id` ON `x_gds_data_share_in_dataset`(`dataset_id`);
CREATE INDEX `x_gds_dshid_data_share_id_dataset_id` ON `x_gds_data_share_in_dataset`(`data_share_id`, `dataset_id`);
CREATE TABLE `x_gds_dataset_in_project`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `guid` VARCHAR(64) NOT NULL
, `create_time` TIMESTAMP NULL DEFAULT NULL
, `update_time` TIMESTAMP NULL DEFAULT NULL
, `added_by_id` BIGINT(20) NULL DEFAULT NULL
, `upd_by_id` BIGINT(20) NULL DEFAULT NULL
, `version` BIGINT(20) NOT NULL DEFAULT 1
, `is_enabled` TINYINT(1) NOT NULL DEFAULT '1'
, `description` TEXT NULL DEFAULT NULL
, `dataset_id` BIGINT(20) NOT NULL
, `project_id` BIGINT(20) NOT NULL
, `status` SMALLINT NOT NULL
, `validity_period` TEXT NULL DEFAULT NULL
, `profiles` TEXT NULL DEFAULT NULL
, `options` TEXT NULL DEFAULT NULL
, `additional_info` TEXT NULL DEFAULT NULL
, `approver_id` BIGINT(20) NULL DEFAULT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_dip_UK_data_share_id_dataset_id`(`dataset_id`, `project_id`)
, CONSTRAINT `x_gds_dip_FK_added_by_id` FOREIGN KEY(`added_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_dip_FK_upd_by_id` FOREIGN KEY(`upd_by_id`) REFERENCES `x_portal_user`(`id`)
, CONSTRAINT `x_gds_dip_FK_dataset_id` FOREIGN KEY(`dataset_id`) REFERENCES `x_gds_dataset`(`id`)
, CONSTRAINT `x_gds_dip_FK_project_id` FOREIGN KEY(`project_id`) REFERENCES `x_gds_project`(`id`)
, CONSTRAINT `x_gds_dip_FK_approver_id` FOREIGN KEY(`approver_id`) REFERENCES `x_portal_user`(`id`)
);
CREATE INDEX `x_gds_dip_guid` ON `x_gds_dataset_in_project`(`guid`);
CREATE INDEX `x_gds_dip_dataset_id` ON `x_gds_dataset_in_project`(`dataset_id`);
CREATE INDEX `x_gds_dip_project_id` ON `x_gds_dataset_in_project`(`project_id`);
CREATE TABLE `x_gds_dataset_policy_map`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `dataset_id` BIGINT(20) NOT NULL
, `policy_id` BIGINT(20) NOT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_dpm_UK_dataset_id_policy_id`(`dataset_id`, `policy_id`)
, CONSTRAINT `x_gds_dpm_FK_dataset_id` FOREIGN KEY(`dataset_id`) REFERENCES `x_gds_dataset`(`id`)
, CONSTRAINT `x_gds_dpm_FK_policy_id` FOREIGN KEY(`policy_id`) REFERENCES `x_policy`(`id`)
);
CREATE INDEX `x_gds_dpm_dataset_id` ON `x_gds_dataset_policy_map`(`dataset_id`);
CREATE INDEX `x_gds_dpm_policy_id` ON `x_gds_dataset_policy_map`(`policy_id`);
CREATE TABLE `x_gds_project_policy_map`(
`id` BIGINT(20) NOT NULL AUTO_INCREMENT
, `project_id` BIGINT(20) NOT NULL
, `policy_id` BIGINT(20) NOT NULL
, PRIMARY KEY(`id`)
, UNIQUE KEY `x_gds_ppm_UK_project_id_policy_id`(`project_id`, `policy_id`)
, CONSTRAINT `x_gds_ppm_FK_project_id` FOREIGN KEY(`project_id`) REFERENCES `x_gds_project`(`id`)
, CONSTRAINT `x_gds_ppm_FK_policy_id` FOREIGN KEY(`policy_id`) REFERENCES `x_policy`(`id`)
);
CREATE INDEX `x_gds_ppm_project_id` ON `x_gds_project_policy_map`(`project_id`);
CREATE INDEX `x_gds_ppm_policy_id` ON `x_gds_project_policy_map`(`policy_id`);