Fixed Project Name in Top Level POM
[cps.git] / cps-ri / src / main / resources / schema.sql
1 CREATE TABLE IF NOT EXISTS RELATION_TYPE
2 (
3     RELATION_TYPE TEXT NOT NULL,
4     ID SERIAL PRIMARY KEY
5 );
6
7 CREATE TABLE IF NOT EXISTS DATASPACE
8 (
9     ID SERIAL PRIMARY KEY,
10     NAME TEXT NOT NULL,
11     CONSTRAINT "UQ_NAME" UNIQUE (NAME)
12 );
13
14 CREATE TABLE IF NOT EXISTS SCHEMA_NODE
15 (
16     SCHEMA_NODE_IDENTIFIER TEXT NOT NULL,
17     ID SERIAL PRIMARY KEY
18 );
19
20 CREATE TABLE IF NOT EXISTS MODULE
21 (
22     NAMESPACE TEXT NOT NULL,
23     REVISION TEXT NOT NULL,
24     MODULE_CONTENT TEXT NOT NULL,
25     DATASPACE_ID BIGINT NOT NULL,
26     ID SERIAL PRIMARY KEY,
27     UNIQUE (DATASPACE_ID, NAMESPACE, REVISION),
28     CONSTRAINT module_dataspace FOREIGN KEY (DATASPACE_ID) REFERENCES DATASPACE (id) ON UPDATE CASCADE ON DELETE CASCADE
29 );
30
31 CREATE TABLE IF NOT EXISTS FRAGMENT
32 (
33     ID BIGSERIAL PRIMARY KEY,
34     XPATH TEXT NOT NULL,
35     DATASPACE_ID INTEGER NOT NULL REFERENCES DATASPACE(ID),
36     ATTRIBUTES JSONB,
37     ANCHOR_ID BIGINT REFERENCES FRAGMENT(ID),
38     PARENT_ID BIGINT REFERENCES FRAGMENT(ID),
39     MODULE_ID INTEGER REFERENCES MODULE(ID),
40     SCHEMA_NODE_ID INTEGER REFERENCES SCHEMA_NODE(ID)
41 );
42
43 CREATE TABLE IF NOT EXISTS RELATION
44 (
45     FROM_FRAGMENT_ID BIGINT NOT NULL REFERENCES FRAGMENT(ID),
46     TO_FRAGMENT_ID   BIGINT NOT NULL REFERENCES FRAGMENT(ID),
47     RELATION_TYPE_ID  INTEGER NOT NULL REFERENCES RELATION_TYPE(ID),
48     FROM_REL_XPATH TEXT NOT NULL,
49     TO_REL_XPATH TEXT NOT NULL,
50     CONSTRAINT RELATION_PKEY PRIMARY KEY (TO_FRAGMENT_ID, FROM_FRAGMENT_ID, RELATION_TYPE_ID)
51 );
52
53
54 CREATE INDEX  IF NOT EXISTS "FKI_FRAGMENT_DATASPACE_ID_FK"     ON FRAGMENT USING BTREE(DATASPACE_ID) ;
55 CREATE INDEX  IF NOT EXISTS "FKI_FRAGMENT_MODULE_ID_FK"        ON FRAGMENT USING BTREE(MODULE_ID) ;
56 CREATE INDEX  IF NOT EXISTS "FKI_FRAGMENT_PARENT_ID_FK"        ON FRAGMENT USING BTREE(PARENT_ID) ;
57 CREATE INDEX  IF NOT EXISTS "FKI_FRAGMENT_ANCHOR_ID_FK"        ON FRAGMENT USING BTREE(ANCHOR_ID) ;
58 CREATE INDEX  IF NOT EXISTS "PERF_SCHEMA_NODE_SCHEMA_NODE_ID"  ON SCHEMA_NODE USING BTREE(SCHEMA_NODE_IDENTIFIER) ;
59 CREATE INDEX  IF NOT EXISTS "FKI_SCHEMA_NODE_ID_TO_ID"         ON FRAGMENT USING BTREE(SCHEMA_NODE_ID) ;
60 CREATE INDEX  IF NOT EXISTS "FKI_RELATION_TYPE_ID_FK"          ON RELATION USING BTREE(RELATION_TYPE_ID);
61 CREATE INDEX  IF NOT EXISTS "FKI_RELATIONS_FROM_ID_FK"         ON RELATION USING BTREE(FROM_FRAGMENT_ID);
62 CREATE INDEX  IF NOT EXISTS "FKI_RELATIONS_TO_ID_FK"           ON RELATION USING BTREE(TO_FRAGMENT_ID);
63 CREATE INDEX  IF NOT EXISTS "PERF_MODULE_MODULE_CONTENT"       ON MODULE USING BTREE(MODULE_CONTENT);
64 CREATE UNIQUE INDEX  IF NOT EXISTS "UQ_FRAGMENT_XPATH"ON FRAGMENT USING btree(xpath COLLATE pg_catalog."default" text_pattern_ops, dataspace_id);