schema tweaks
[Evergreen.git] / Open-ILS / src / sql / Pg / 030.schema.metabib.sql
1 DROP SCHEMA metabib CASCADE;
2
3 BEGIN;
4 CREATE SCHEMA metabib;
5
6 CREATE TABLE metabib.metarecord (
7         id              BIGSERIAL       PRIMARY KEY,
8         fingerprint     TEXT            NOT NULL,
9         master_record   BIGINT,
10         mods            TEXT
11 );
12 CREATE INDEX metabib_metarecord_master_record_idx ON metabib.metarecord (master_record);
13 CREATE INDEX metabib_metarecord_fingerprint_idx ON metabib.metarecord (fingerprint);
14
15 CREATE TABLE metabib.title_field_entry (
16         id              BIGSERIAL       PRIMARY KEY,
17         source          BIGINT          NOT NULL,
18         field           INT             NOT NULL,
19         value           TEXT            NOT NULL,
20         index_vector    tsvector        NOT NULL
21 );
22 CREATE TRIGGER metabib_title_field_entry_fti_trigger
23         BEFORE UPDATE OR INSERT ON metabib.title_field_entry
24         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
25
26 CREATE INDEX metabib_title_field_entry_index_vector_idx ON metabib.title_field_entry USING GIST (index_vector);
27
28
29 CREATE TABLE metabib.author_field_entry (
30         id              BIGSERIAL       PRIMARY KEY,
31         source          BIGINT          NOT NULL,
32         field           INT             NOT NULL,
33         value           TEXT            NOT NULL,
34         index_vector    tsvector        NOT NULL
35 );
36 CREATE TRIGGER metabib_author_field_entry_fti_trigger
37         BEFORE UPDATE OR INSERT ON metabib.author_field_entry
38         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
39
40 CREATE INDEX metabib_author_field_entry_index_vector_idx ON metabib.author_field_entry USING GIST (index_vector);
41
42
43 CREATE TABLE metabib.subject_field_entry (
44         id              BIGSERIAL       PRIMARY KEY,
45         source          BIGINT          NOT NULL,
46         field           INT             NOT NULL,
47         value           TEXT            NOT NULL,
48         index_vector    tsvector        NOT NULL
49 );
50 CREATE TRIGGER metabib_subject_field_entry_fti_trigger
51         BEFORE UPDATE OR INSERT ON metabib.subject_field_entry
52         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
53
54 CREATE INDEX metabib_subject_field_entry_index_vector_idx ON metabib.subject_field_entry USING GIST (index_vector);
55
56
57 CREATE TABLE metabib.keyword_field_entry (
58         id              BIGSERIAL       PRIMARY KEY,
59         source          BIGINT          NOT NULL,
60         field           INT             NOT NULL,
61         value           TEXT            NOT NULL,
62         index_vector    tsvector        NOT NULL
63 );
64 CREATE TRIGGER metabib_keyword_field_entry_fti_trigger
65         BEFORE UPDATE OR INSERT ON metabib.keyword_field_entry
66         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
67
68 CREATE INDEX metabib_keyword_field_entry_index_vector_idx ON metabib.keyword_field_entry USING GIST (index_vector);
69
70
71 CREATE TABLE metabib.series_field_entry (
72         id              BIGSERIAL       PRIMARY KEY,
73         source          BIGINT          NOT NULL,
74         field           INT             NOT NULL,
75         value           TEXT            NOT NULL,
76         index_vector    tsvector        NOT NULL
77 );
78 CREATE TRIGGER metabib_series_field_entry_fti_trigger
79         BEFORE UPDATE OR INSERT ON metabib.series_field_entry
80         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
81
82 CREATE INDEX metabib_series_field_entry_index_vector_idx ON metabib.series_field_entry USING GIST (index_vector);
83
84
85 CREATE TABLE metabib.rec_descriptor (
86         id              BIGSERIAL PRIMARY KEY,
87         record          BIGINT,
88         item_type       "char",
89         item_form       "char",
90         bib_level       "char",
91         control_type    "char",
92         char_encoding   "char",
93         enc_level       "char",
94         audience        "char",
95         cat_form        TEXT,
96         pub_status      TEXT,
97         item_lang       TEXT
98 );
99 CREATE INDEX metabib_rec_descriptor_record_idx ON metabib.rec_descriptor (record);
100 /* We may not need these...
101
102 CREATE INDEX metabib_rec_descriptor_item_type_idx ON metabib.rec_descriptor (item_type);
103 CREATE INDEX metabib_rec_descriptor_item_form_idx ON metabib.rec_descriptor (item_form);
104 CREATE INDEX metabib_rec_descriptor_bib_level_idx ON metabib.rec_descriptor (bib_level);
105 CREATE INDEX metabib_rec_descriptor_control_type_idx ON metabib.rec_descriptor (control_type);
106 CREATE INDEX metabib_rec_descriptor_char_encoding_idx ON metabib.rec_descriptor (char_encoding);
107 CREATE INDEX metabib_rec_descriptor_enc_level_idx ON metabib.rec_descriptor (enc_level);
108 CREATE INDEX metabib_rec_descriptor_cat_form_idx ON metabib.rec_descriptor (cat_form);
109 CREATE INDEX metabib_rec_descriptor_pub_status_idx ON metabib.rec_descriptor (pub_status);
110 CREATE INDEX metabib_rec_descriptor_item_lang_idx ON metabib.rec_descriptor (item_lang);
111 CREATE INDEX metabib_rec_descriptor_audience_idx ON metabib.rec_descriptor (audience);
112
113 */
114
115
116 CREATE TABLE metabib.full_rec (
117         id              BIGSERIAL       PRIMARY KEY,
118         record          BIGINT          NOT NULL,
119         tag             CHAR(3)         NOT NULL,
120         ind1            "char",
121         ind2            "char",
122         subfield        "char",
123         value           TEXT            NOT NULL,
124         index_vector    tsvector        NOT NULL
125 );
126 CREATE INDEX metabib_full_rec_record_idx ON metabib.full_rec (record);
127 CREATE TRIGGER metabib_full_rec_fti_trigger
128         BEFORE UPDATE OR INSERT ON metabib.full_rec
129         FOR EACH ROW EXECUTE PROCEDURE tsearch2(index_vector, value);
130
131 CREATE INDEX metabib_full_rec_index_vector_idx ON metabib.full_rec USING GIST (index_vector);
132
133
134 CREATE TABLE metabib.metarecord_source_map (
135         id              BIGSERIAL       PRIMARY KEY,
136         metarecord      BIGINT          NOT NULL,
137         source          BIGINT          NOT NULL
138 );
139 CREATE INDEX metabib_metarecord_source_map_metarecord_idx ON metabib.metarecord_source_map (metarecord);
140 CREATE INDEX metabib_metarecord_source_map_source_record_idx ON metabib.metarecord_source_map (source);
141
142
143 COMMIT;