argos/dmp-db-scema/main/DataManagementPlanDB.sql

558 lines
16 KiB
MySQL
Raw Normal View History

2017-09-14 12:51:26 +02:00
SET statement_timeout = 0;
SET lock_timeout = 0;
SET idle_in_transaction_session_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;
SET row_security = off;
drop table if exists "DMP" cascade;
drop table if exists "DMPOrganisation" cascade;
drop table if exists "DMPProfile" cascade;
drop table if exists "DMPResearcher" cascade;
drop table if exists "Dataset" cascade;
drop table if exists "DatasetProfile" cascade;
drop table if exists "DatasetProfileRuleset" cascade;
drop table if exists "DatasetProfileViewstyle" cascade;
drop table if exists "Organisation" cascade;
drop table if exists "Project" cascade;
drop table if exists "Researcher" cascade;
drop table if exists "Service" cascade;
drop table if exists "DataRepository" cascade;
drop table if exists "Registry" cascade;
drop table if exists "DatasetService" cascade;
drop table if exists "DatasetRegistry" cascade;
drop table if exists "DatasetDataRepository" cascade;
2017-10-18 12:17:56 +02:00
DROP table if exists "UserDMP" cascade;
DROP table if exists "UserInfo" cascade;
DROP table if exists "UserAuth" cascade;
2017-09-14 12:51:26 +02:00
-- CREATE EXTENSION IF NOT EXISTS plpgsql WITH SCHEMA pg_catalog;
2020-04-29 13:03:19 +02:00
CREATE EXTENSION IF NOT EXISTS "uuid-ossp";
2017-09-14 12:51:26 +02:00
SET search_path = public, pg_catalog;
SET default_tablespace = '';
SET default_with_oids = false;
CREATE TABLE "DMP" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Previous" uuid,
"Label" character varying(250) NOT NULL,
"Version" integer NOT NULL,
"Project" uuid NOT NULL,
"ProfileData" xml,
"Creator" uuid not null,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
"Description" text,
2017-09-14 12:51:26 +02:00
"Profile" uuid
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DMP" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON COLUMN "DMP"."ProfileData" IS 'More data about the DMP as defined by the profile';
CREATE TABLE "DMPOrganisation" (
"DMP" uuid NOT NULL,
"Organisation" uuid NOT NULL,
"Role" integer,
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DMPOrganisation" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DMPOrganisation" IS 'Linking of DMPs to Organisations';
COMMENT ON COLUMN "DMPOrganisation"."Role" IS 'Enumerator of roles';
CREATE TABLE "DMPProfile" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DMPProfile" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
CREATE TABLE "DMPResearcher" (
"DMP" uuid NOT NULL,
"Researcher" uuid NOT NULL,
"Role" integer,
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DMPResearcher" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DMPResearcher" IS 'Linking of DMPs to researchers';
COMMENT ON COLUMN "DMPResearcher"."Role" IS 'Enumerator of roles';
CREATE TABLE "Dataset" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
2017-10-03 16:23:35 +02:00
"DMP" uuid,
2017-09-14 12:51:26 +02:00
"Uri" character varying(250),
"Properties" xml,
2017-11-02 16:02:46 +01:00
"Reference" xml,
"Creator" uuid not null,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
"Description" text,
2017-09-14 12:51:26 +02:00
"Profile" uuid
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Dataset" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON COLUMN "Dataset"."Uri" IS 'URI of item';
COMMENT ON COLUMN "Dataset"."Properties" IS 'More data about the dataset such as Uri, data types etc as defined by the profile';
CREATE TABLE "DatasetProfile" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Ruleset" uuid,
"Viewstyle" uuid,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
"Description" text,
2017-09-14 12:51:26 +02:00
"Definition" xml NOT NULL
);
2017-10-24 16:34:59 +02:00
-- SHould also force the 1-1 relation between the datasetprofile <-> ruleset and datasetprofile <-> viewstyle
ALTER TABLE "DatasetProfile" ADD CONSTRAINT datasetprofile_unique_ruleset UNIQUE ("Ruleset");
ALTER TABLE "DatasetProfile" ADD CONSTRAINT datasetprofile_unique_viewstyle UNIQUE ("Viewstyle");
2017-09-14 12:51:26 +02:00
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetProfile" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetProfile" IS 'Profiles for dmp datasets';
CREATE TABLE "DatasetProfileRuleset" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Definition" xml NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetProfileRuleset" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetProfileRuleset" IS 'Sets of Rules for dmp dataset profiles';
CREATE TABLE "DatasetProfileViewstyle" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Definition" xml NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetProfileViewstyle" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetProfileViewstyle" IS 'Style sets for dmp dataset profiles';
CREATE TABLE "Organisation" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Abbreviation" character varying(50),
"Reference" xml,
"Uri" character varying(250),
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Organisation" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "Organisation" IS 'Table of organizations utilized in the project';
COMMENT ON COLUMN "Organisation"."ID" IS 'Unique identifier and primary key of item';
COMMENT ON COLUMN "Organisation"."Label" IS 'A human readable long label of the item';
COMMENT ON COLUMN "Organisation"."Abbreviation" IS 'A human readable abbreviation of the item';
COMMENT ON COLUMN "Organisation"."Reference" IS 'Reference to the URI of the item along with information to allow how the item reached the system (e.g. via an external vocabulary)';
COMMENT ON COLUMN "Organisation"."Uri" IS 'URI of item';
COMMENT ON COLUMN "Organisation"."Definition" IS 'More data about the Organisation such as web site, type etc';
CREATE TABLE "Project" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Abbreviation" character varying(50),
"Reference" xml,
"Uri" character varying(250),
2017-11-16 11:34:42 +01:00
"CreationUser" uuid not null,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
"StartDate" timestamp,
"EndDate" timestamp,
"Description" text,
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Project" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "Project" IS 'Table of project managed in the system';
COMMENT ON COLUMN "Project"."ID" IS 'Unique identifier and primary key of item';
COMMENT ON COLUMN "Project"."Label" IS 'A human readable long label of the item';
COMMENT ON COLUMN "Project"."Abbreviation" IS 'A human readable abbreviation of the item';
COMMENT ON COLUMN "Project"."Reference" IS 'Additional reference data for the item along with information to allow how the item reached the system (e.g. via an external vocabulary)';
COMMENT ON COLUMN "Project"."Uri" IS 'URI of item';
COMMENT ON COLUMN "Project"."Definition" IS 'More data about the project such as web site, start/stop, etc';
CREATE TABLE "Researcher" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250) NOT NULL,
"Uri" character varying(250),
"PrimaryEmail" character varying(250),
"Definition" xml,
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Reference" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Researcher" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "Researcher" IS 'Table of Researcher managed in the system';
COMMENT ON COLUMN "Researcher"."ID" IS 'Unique identifier and primary key of item';
COMMENT ON COLUMN "Researcher"."Label" IS 'Full name of the researcher (as presented by the system, and composed automatically by data or provided by the reference service)';
COMMENT ON COLUMN "Researcher"."Uri" IS 'URI of item';
COMMENT ON COLUMN "Researcher"."Definition" IS 'More data about the researcher such as: email addresses, affiliations etc';
COMMENT ON COLUMN "Researcher"."Reference" IS 'Additional reference data for the item along with information to allow how the item reached the system (e.g. via an external vocabulary)';
ALTER TABLE ONLY "DMPProfile"
ADD CONSTRAINT "DMPPRofile_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DMP"
ADD CONSTRAINT "DMP_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DatasetProfile"
ADD CONSTRAINT "DatasetProfile_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DatasetProfileRuleset"
ADD CONSTRAINT "DatasetProfileRuleset_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DatasetProfileViewstyle"
ADD CONSTRAINT "DatasetProfileViewstyle_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "Dataset"
ADD CONSTRAINT "Dataset_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "Organisation"
ADD CONSTRAINT "Organisation_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DMPOrganisation"
ADD CONSTRAINT "PKey_DMPOrganisation" PRIMARY KEY ("ID");
ALTER TABLE ONLY "DMPResearcher"
ADD CONSTRAINT "PKey_DMPResearcher" PRIMARY KEY ("ID");
ALTER TABLE ONLY "Project"
ADD CONSTRAINT "Project_pkey" PRIMARY KEY ("ID");
ALTER TABLE ONLY "Researcher"
ADD CONSTRAINT "Researcher_pkey" PRIMARY KEY ("ID");
CREATE INDEX "fki_DMPDMPProfileReference" ON "DMP" USING btree ("Profile");
CREATE INDEX "fki_DatasetDatasetProfileReference" ON "Dataset" USING btree ("Profile");
ALTER TABLE ONLY "DMP"
ADD CONSTRAINT "DMPDMPProfileReference" FOREIGN KEY ("Profile") REFERENCES "DMPProfile"("ID");
ALTER TABLE ONLY "DMPOrganisation"
ADD CONSTRAINT "DMPOrganisationDMPReference" FOREIGN KEY ("Organisation") REFERENCES "Organisation"("ID");
ALTER TABLE ONLY "DMPOrganisation"
ADD CONSTRAINT "DMPOrganisationOrganisationReference" FOREIGN KEY ("DMP") REFERENCES "DMP"("ID");
ALTER TABLE ONLY "DMP"
ADD CONSTRAINT "DMPProjectReference" FOREIGN KEY ("Project") REFERENCES "Project"("ID");
ALTER TABLE ONLY "DMPResearcher"
ADD CONSTRAINT "DMPResearcherDMPReference" FOREIGN KEY ("Researcher") REFERENCES "Researcher"("ID");
ALTER TABLE ONLY "DMPResearcher"
ADD CONSTRAINT "DMPResearcherResearcherReference" FOREIGN KEY ("DMP") REFERENCES "DMP"("ID");
ALTER TABLE ONLY "Dataset"
ADD CONSTRAINT "DatasetDatasetProfileReference" FOREIGN KEY ("Profile") REFERENCES "DatasetProfile"("ID");
ALTER TABLE ONLY "Dataset"
ADD CONSTRAINT "DatasetDMPReference" FOREIGN KEY ("DMP") REFERENCES "DMP"("ID");
ALTER TABLE ONLY "DatasetProfile"
ADD CONSTRAINT "DatasetProfileDatasetProfileRulesetReference" FOREIGN KEY ("Ruleset") REFERENCES "DatasetProfileRuleset"("ID");
ALTER TABLE ONLY "DatasetProfile"
ADD CONSTRAINT "DatasetProfileDatasetProfileViewstyleReference" FOREIGN KEY ("Viewstyle") REFERENCES "DatasetProfileViewstyle"("ID");
CREATE TABLE "Service" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250),
"Abbreviation" character varying(50),
"Reference" xml,
"Uri" character varying(250),
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Service" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
ALTER TABLE ONLY "Service"
ADD CONSTRAINT "PKey_Service" PRIMARY KEY ("ID");
CREATE TABLE "DataRepository" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250),
"Abbreviation" character varying(50),
"Reference" xml,
"Uri" character varying(250),
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DataRepository" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
ALTER TABLE ONLY "DataRepository"
ADD CONSTRAINT "PKey_DataRepository" PRIMARY KEY ("ID");
CREATE TABLE "Registry" (
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL,
"Label" character varying(250),
"Abbreviation" character varying(50),
"Reference" xml,
"Uri" character varying(250),
2017-11-02 17:06:37 +01:00
"Status" smallint not null default 0,
"Created" timestamp not null default NOW(),
"Modified" timestamp not null default NOW(),
2017-09-14 12:51:26 +02:00
"Definition" xml
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "Registry" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
ALTER TABLE ONLY "Registry"
ADD CONSTRAINT "PKey_Registry" PRIMARY KEY ("ID");
CREATE TABLE "DatasetService" (
"Dataset" uuid NOT NULL,
"Service" uuid NOT NULL,
"Role" integer,
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetService" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetService" IS 'Linking Dataset to Service';
CREATE TABLE "DatasetRegistry" (
"Dataset" uuid NOT NULL,
"Registry" uuid NOT NULL,
"Role" integer,
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL
);
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetRegistry" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetRegistry" IS 'Linking Dataset to Registry';
CREATE TABLE "DatasetDataRepository" (
"Dataset" uuid NOT NULL,
"DataRepository" uuid NOT NULL,
"Role" integer,
"ID" uuid DEFAULT uuid_generate_v4() NOT NULL
);
2017-09-28 11:10:20 +02:00
2020-05-12 12:10:23 +02:00
ALTER TABLE "DatasetDataRepository" OWNER TO :POSTGRES_USER;
2017-09-14 12:51:26 +02:00
COMMENT ON TABLE "DatasetDataRepository" IS 'Linking Dataset to DataRepository';
ALTER TABLE ONLY "DatasetDataRepository"
ADD CONSTRAINT "DatasetDataRepositoryDatasetReference" FOREIGN KEY ("Dataset") REFERENCES "Dataset"("ID");
ALTER TABLE ONLY "DatasetDataRepository"
ADD CONSTRAINT "DatasetDataRepositoryDataRepositoryReference" FOREIGN KEY ("DataRepository") REFERENCES "DataRepository"("ID");
ALTER TABLE ONLY "DatasetRegistry"
ADD CONSTRAINT "DatasetRegistryDatasetReference" FOREIGN KEY ("Dataset") REFERENCES "Dataset"("ID");
ALTER TABLE ONLY "DatasetRegistry"
ADD CONSTRAINT "DatasetRegistryRegistryReference" FOREIGN KEY ("Registry") REFERENCES "Registry"("ID");
ALTER TABLE ONLY "DatasetService"
ADD CONSTRAINT "DatasetServiceDatasetReference" FOREIGN KEY ("Dataset") REFERENCES "Dataset"("ID");
ALTER TABLE ONLY "DatasetService"
ADD CONSTRAINT "DatasetServiceServiceReference" FOREIGN KEY ("Service") REFERENCES "Service"("ID");
2017-10-12 16:57:52 +02:00
2017-09-28 11:10:20 +02:00
CREATE TABLE "UserInfo" (
2017-10-18 12:17:00 +02:00
"id" uuid DEFAULT uuid_generate_v4() UNIQUE NOT NULL,
"email" character varying(250) UNIQUE NOT NULL,
2017-10-12 16:57:52 +02:00
"authorization_level" smallint NOT NULL,
"usertype" smallint NOT NULL,
"authentication" uuid,
"verified_email" boolean,
2017-09-28 11:10:20 +02:00
"name" character varying(250),
2017-11-02 17:06:37 +01:00
"created" timestamp not null,
2017-10-12 16:57:52 +02:00
"lastloggedin" timestamp,
2017-09-28 11:10:20 +02:00
"additionalinfo" xml,
2017-10-18 12:17:00 +02:00
PRIMARY KEY (id)
2017-10-12 16:57:52 +02:00
);
COMMENT ON COLUMN "UserInfo"."authorization_level" IS 'This stores the authorization level of the user: 0 admin, 1 user, being able to be extended furthermore';
COMMENT ON COLUMN "UserInfo"."usertype" IS 'This stores the type of user: 0 -> internal, 1 external';
CREATE TABLE "UserAuth" (
2017-10-12 17:17:34 +02:00
"id" uuid DEFAULT uuid_generate_v4() NOT NULL UNIQUE,
2017-10-12 16:57:52 +02:00
"username" character varying(200) NOT NULL,
"password" character varying(250) NOT NULL,
2017-10-12 17:17:34 +02:00
PRIMARY KEY (username)
2017-09-28 11:10:20 +02:00
);
2017-10-12 16:57:52 +02:00
CREATE INDEX idx_userauth_username ON "UserAuth"(username);
ALTER TABLE "UserInfo" ADD CONSTRAINT fkey_userinfo_userauth FOREIGN KEY ("authentication") REFERENCES "UserAuth"(id);
COMMENT ON COLUMN "UserAuth"."password" IS 'This field stores a password hash';
2017-10-18 12:17:00 +02:00
create table "UserDMP" (
"id" uuid DEFAULT uuid_generate_v4() NOT NULL,
2017-10-19 01:45:19 +02:00
"usr" uuid NOT NULL,
2017-10-18 12:17:00 +02:00
"dmp" uuid NOT NUll,
"role" integer
);
2017-10-18 23:52:15 +02:00
ALTER TABLE "UserDMP" ADD CONSTRAINT fkey_userdmp_user FOREIGN KEY (usr) REFERENCES "UserInfo"("id");
ALTER TABLE "UserDMP" ADD CONSTRAINT fkey_userdmp_dmp FOREIGN KEY (dmp) REFERENCES "DMP"("ID");
2017-10-18 12:17:00 +02:00
2017-11-17 00:13:39 +01:00
ALTER TABLE "DMP" ADD CONSTRAINT fk_dmp_creator FOREIGN KEY ("Creator") REFERENCES "UserInfo"(id);
ALTER TABLE "Dataset" ADD CONSTRAINT fk_dataset_creator FOREIGN KEY ("Creator") REFERENCES "UserInfo"(id);
ALTER TABLE "Project" ADD CONSTRAINT fk_project_creator FOREIGN KEY ("CreationUser") REFERENCES "UserInfo"(id);
2020-05-12 12:10:23 +02:00
ALTER TABLE "UserInfo" OWNER TO :POSTGRES_USER;
ALTER TABLE "UserAuth" OWNER TO :POSTGRES_USER;
ALTER TABLE "UserDMP" OWNER TO :POSTGRES_USER;
2017-10-12 16:57:52 +02:00
2017-09-28 11:10:20 +02:00
2017-09-14 12:51:26 +02:00
REVOKE ALL ON SCHEMA public FROM PUBLIC;
2020-04-29 13:03:19 +02:00
-- REVOKE ALL ON SCHEMA public FROM postgres;
-- GRANT ALL ON SCHEMA public TO postgres;
2017-09-14 12:51:26 +02:00
GRANT ALL ON SCHEMA public TO PUBLIC;