source: contrib/MailArchiver/sources/scripts/metaarchive_schema.sql @ 6785

Revision 6785, 8.7 KB checked in by rafaelraymundo, 12 years ago (diff)

Ticket #2946 - Liberado codigo do MailArchiver?. Documentação na subpasta DOCS.

Line 
1--
2--  Expresso Mail Archiver
3--
4--  Script H2 de criacao do banco de dados
5--
6--  (consultar http://www.h2database.com)
7--
8
9-------------------------------------------------------------------------------
10CREATE SCHEMA METAARCHIVE;
11SET SCHEMA METAARCHIVE;
12
13-------------------------------------------------------------------------------
14-- Table METAARCHIVE.FOLDER for class
15--serpro.mailarchiver.domain.metaarchive.Folder
16
17CREATE TABLE FOLDER (
18
19OID VARCHAR(36) NOT NULL,
20
21FOLDER_NAME VARCHAR(1000) NOT NULL,
22
23PARENT_OID VARCHAR(36),
24PARENT_IDX INT,
25
26CONSTRAINT FOLDER_PK PRIMARY KEY (OID)
27
28);
29
30-------------------------------------------------------------------------------
31-- Table METAARCHIVE.SETTING for class
32--serpro.mailarchiver.domain.metaarchive.Setting
33
34CREATE TABLE SETTING (
35
36ATTR_NAME VARCHAR(100) NOT NULL,
37ATTR_VALUE VARCHAR(1000) NOT NULL,
38
39CONSTRAINT SETTING_PK PRIMARY KEY (ATTR_NAME)
40
41);
42
43-------------------------------------------------------------------------------
44-- Table METAARCHIVE.USER for class
45--serpro.mailarchiver.domain.metaarchive.User
46
47CREATE TABLE USER (
48
49USER_ID VARCHAR(100) NOT NULL,
50PASSWORD VARCHAR(1000) NOT NULL,
51
52CONSTRAINT USER_PK PRIMARY KEY (USER_ID)
53
54);
55
56-------------------------------------------------------------------------------
57-- Table METAARCHIVE.ENTITY for classes                   DISC
58--serpro.mailarchiver.domain.metaarchive.Message          1
59--serpro.mailarchiver.domain.metaarchive.BodyPart         2
60--serpro.mailarchiver.domain.metaarchive.EmbeddedMessage  3
61--serpro.mailarchiver.domain.metaarchive.Entity           101
62--serpro.mailarchiver.domain.metaarchive.BodyEntity       102
63
64CREATE TABLE ENTITY (
65
66DISCRIMINATOR VARCHAR(40) NOT NULL,
67
68OID VARCHAR(36) NOT NULL,
69
70COMPOSITE_OID VARCHAR(36),
71COMPOSITE_IDX INT,
72
73FOLDER_OID VARCHAR(36),
74FOLDER_IDX INT,
75
76START_LINE INT,
77SEPARATOR_LINE INT,
78END_LINE INT,
79
80ENTITY_SIZE INT,
81
82QUERY_CANDIDATES_SET BIGINT,
83
84CONSTRAINT ENTITY_PK PRIMARY KEY (OID)
85
86);
87
88-------------------------------------------------------------------------------
89-- Table METAARCHIVE.BODY for classes                 DISC
90--serpro.mailarchiver.domain.metaarchive.TextBody     1
91--serpro.mailarchiver.domain.metaarchive.BinaryBody   2
92--serpro.mailarchiver.domain.metaarchive.Multipart    3
93--serpro.mailarchiver.domain.metaarchive.MessageBody  4
94--serpro.mailarchiver.domain.metaarchive.Body         201
95--serpro.mailarchiver.domain.metaarchive.SingleBody   202
96
97CREATE TABLE BODY (
98
99DISCRIMINATOR VARCHAR(40) NOT NULL,
100
101OID VARCHAR(36) NOT NULL,
102
103ENTITY_OID VARCHAR(36) NOT NULL,
104
105BODY_OFFSET INT,
106BODY_LENGTH INT,
107
108BODY_SIZE INT,
109
110PREVIEW VARCHAR(10000),
111
112PREAMBLE VARCHAR(10000),
113EPILOGUE VARCHAR(10000),
114
115CONSTRAINT BODY_PK PRIMARY KEY (OID)
116
117);
118
119-------------------------------------------------------------------------------
120-- Table METAARCHIVE.FIELD for classes                            DISC
121--serpro.mailarchiver.domain.metaarchive.UnstructuredField        1
122--serpro.mailarchiver.domain.metaarchive.ContentTypeField         2
123--serpro.mailarchiver.domain.metaarchive.ContentDispositionField  3
124--serpro.mailarchiver.domain.metaarchive.DateTimeField            4
125--serpro.mailarchiver.domain.metaarchive.AddressListField         5
126--serpro.mailarchiver.domain.metaarchive.MailboxListField         6
127--serpro.mailarchiver.domain.metaarchive.MailboxField             7
128--serpro.mailarchiver.domain.metaarchive.Field                    301
129
130CREATE TABLE FIELD (
131
132DISCRIMINATOR VARCHAR(40) NOT NULL,
133
134OID VARCHAR(36) NOT NULL,
135
136ENTITY_OID VARCHAR(36) NOT NULL,
137ENTITY_IDX INT NOT NULL,
138
139FIELD_NAME VARCHAR(1000) NOT NULL,
140
141TEXT VARCHAR(10000),
142
143MEDIA_TYPE VARCHAR(100),
144SUB_TYPE VARCHAR(100),
145
146DISPOSITION_TYPE VARCHAR(100),
147
148DATE_TIME TIMESTAMP,
149
150VALID BOOLEAN NOT NULL,
151PARSE_EXCEPTION_STACK_TRACE VARCHAR(100000),
152
153CONSTRAINT FIELD_PK PRIMARY KEY (OID)
154
155);
156
157-------------------------------------------------------------------------------
158-- Table METAARCHIVE.ADDRESS for classes                                 DISC
159--serpro.mailarchiver.domain.metaarchive.AddressListField_Mailbox        1
160--serpro.mailarchiver.domain.metaarchive.MailboxListField_Mailbox        2
161--serpro.mailarchiver.domain.metaarchive.MailboxField_Mailbox            3
162--serpro.mailarchiver.domain.metaarchive.AddressListField_Group_Mailbox  4
163--serpro.mailarchiver.domain.metaarchive.AddressListField_Group          5
164--serpro.mailarchiver.domain.metaarchive.Address                         401
165--serpro.mailarchiver.domain.metaarchive.FieldAddress                    402
166--serpro.mailarchiver.domain.metaarchive.AddressListField_Address        403
167
168CREATE TABLE ADDRESS (
169
170DISCRIMINATOR VARCHAR(40) NOT NULL,
171
172OID VARCHAR(36) NOT NULL,
173
174FIELD_OID VARCHAR(36),
175FIELD_IDX INT,
176
177GROUP_OID VARCHAR(36),
178GROUP_IDX INT,
179
180ADDR_NAME VARCHAR(1000),
181
182MBX_LOCAL_PART VARCHAR(1000),
183MBX_DOMAIN VARCHAR(1000),
184MBX_ROUTE VARCHAR(10000),
185
186CONSTRAINT ADDRESS_PK PRIMARY KEY (OID)
187
188);
189
190-------------------------------------------------------------------------------
191-- Table METAARCHIVE.TAG for set
192--serpro.mailarchiver.domain.metaarchive.Message#tags
193
194CREATE TABLE METAARCHIVE.TAG
195(
196
197ENTITY_OID VARCHAR(36) NOT NULL,
198TAG_VALUE VARCHAR(100) NOT NULL,
199
200CONSTRAINT TAG_PK PRIMARY KEY (ENTITY_OID, TAG_VALUE)
201
202);
203
204-------------------------------------------------------------------------------
205-- Table METAARCHIVE.PARAMETER for maps
206--serpro.mailarchiver.domain.metaarchive.ContentDispositionField#parameters
207--serpro.mailarchiver.domain.metaarchive.ContentTypeField#parameters
208
209CREATE TABLE PARAMETER (
210
211FIELD_OID VARCHAR(36) NOT NULL,
212ATTR_NAME VARCHAR(100) NOT NULL,
213ATTR_VALUE VARCHAR(1000),
214
215CONSTRAINT PARAMETER_PK PRIMARY KEY (FIELD_OID, ATTR_NAME)
216
217);
218
219-------------------------------------------------------------------------------
220CREATE INDEX FOLDER_IDX_PARENT_FOLDER
221  ON FOLDER (PARENT_OID);
222
223CREATE INDEX FOLDER_IDX_NAME
224  ON FOLDER (FOLDER_NAME);
225
226ALTER TABLE FOLDER ADD CONSTRAINT FOLDER_REF_PARENT_FOLDER
227  FOREIGN KEY (PARENT_OID)
228  REFERENCES FOLDER ON DELETE CASCADE;
229
230-------------------------------------------------------------------------------
231CREATE INDEX MESSAGE_IDX_FOLDER
232  ON ENTITY (FOLDER_OID);
233
234CREATE INDEX BODY_ENTITY_IDX_COMPOSITE
235  ON ENTITY (COMPOSITE_OID);
236
237CREATE INDEX MESSAGE_IDX_QUERY_CANDIDATES_SET
238  ON ENTITY (QUERY_CANDIDATES_SET);
239
240CREATE INDEX ENTITY_IDX_DISCRIMINATOR
241  ON ENTITY (DISCRIMINATOR);
242
243ALTER TABLE ENTITY ADD CONSTRAINT MESSAGE_REF_FOLDER
244  FOREIGN KEY (FOLDER_OID)
245  REFERENCES FOLDER ON DELETE CASCADE;
246
247ALTER TABLE ENTITY ADD CONSTRAINT BODY_ENTITY_REF_COMPOSITE
248  FOREIGN KEY (COMPOSITE_OID)
249  REFERENCES BODY ON DELETE CASCADE;
250
251-------------------------------------------------------------------------------
252CREATE INDEX BODY_IDX_ENTITY
253  ON BODY (ENTITY_OID);
254
255CREATE INDEX BODY_IDX_DISCRIMINATOR
256  ON BODY (DISCRIMINATOR);
257
258ALTER TABLE BODY ADD CONSTRAINT BODY_REF_ENTITY
259  FOREIGN KEY (ENTITY_OID)
260  REFERENCES ENTITY ON DELETE CASCADE;
261
262-------------------------------------------------------------------------------
263CREATE INDEX FIELD_IDX_ENTITY
264  ON FIELD (ENTITY_OID);
265
266CREATE INDEX FIELD_IDX_NAME
267  ON FIELD (FIELD_NAME);
268
269CREATE INDEX FIELD_IDX_TEXT
270  ON FIELD (TEXT);
271
272CREATE INDEX FIELD_IDX_DATE_TIME
273  ON FIELD (DATE_TIME);
274
275CREATE INDEX FIELD_IDX_DISCRIMINATOR
276  ON FIELD (DISCRIMINATOR);
277
278ALTER TABLE FIELD ADD CONSTRAINT FIELD_REF_ENTITY
279  FOREIGN KEY (ENTITY_OID)
280  REFERENCES ENTITY ON DELETE CASCADE;
281
282-------------------------------------------------------------------------------
283-- MAILBOX REF MAILBOX_FIELD
284-- MAILBOX REF MAILBOX_LIST_FIELD
285-- ADDRESS REF ADDRESS_LIST_FIELD
286
287CREATE INDEX ADDRESS_IDX_FIELD
288  ON ADDRESS (FIELD_OID);
289
290CREATE INDEX MAILBOX_IDX_GROUP
291  ON ADDRESS (GROUP_OID);
292
293CREATE INDEX ADDRESS_IDX_NAME
294  ON ADDRESS (ADDR_NAME);
295
296CREATE INDEX ADDRESS_IDX_LOCAL_PART
297  ON ADDRESS (MBX_LOCAL_PART);
298
299CREATE INDEX ADDRESS_IDX_DOMAIN
300  ON ADDRESS (MBX_DOMAIN);
301
302CREATE INDEX ADDRESS_IDX_DISCRIMINATOR
303  ON ADDRESS (DISCRIMINATOR);
304
305ALTER TABLE ADDRESS ADD CONSTRAINT ADDRESS_REF_FIELD
306  FOREIGN KEY (FIELD_OID)
307  REFERENCES FIELD ON DELETE CASCADE;
308
309ALTER TABLE ADDRESS ADD CONSTRAINT MAILBOX_REF_GROUP
310  FOREIGN KEY (GROUP_OID)
311  REFERENCES ADDRESS ON DELETE CASCADE;
312
313-------------------------------------------------------------------------------
314CREATE INDEX TAG_IDX_MESSAGE
315  ON TAG (ENTITY_OID);
316
317ALTER TABLE TAG ADD CONSTRAINT TAG_REF_MESSAGE
318  FOREIGN KEY (ENTITY_OID)
319  REFERENCES ENTITY ON DELETE CASCADE;
320
321-------------------------------------------------------------------------------
322CREATE INDEX PARAMETER_IDX_FIELD
323  ON PARAMETER (FIELD_OID);
324
325ALTER TABLE PARAMETER ADD CONSTRAINT PARAMETER_REF_FIELD
326  FOREIGN KEY (FIELD_OID)
327  REFERENCES FIELD ON DELETE CASCADE;
328
329-------------------------------------------------------------------------------
330CREATE SEQUENCE QUERY_CANDIDATES_SET;
331
332-------------------------------------------------------------------------------
333
334COMMIT;
335
Note: See TracBrowser for help on using the repository browser.