1 DROP SCHEMA circ_stats CASCADE;
5 CREATE SCHEMA circ_stats;
7 CREATE TABLE circ_stats.record_dim (
8 bib_item_type "char" NOT NULL DEFAULT '?',
9 bib_item_form "char" NOT NULL DEFAULT '?',
10 bib_level "char" NOT NULL DEFAULT '?',
11 bib_control_type "char" NOT NULL DEFAULT '?',
12 bib_char_encoding "char" NOT NULL DEFAULT '?',
13 bib_enc_level "char" NOT NULL DEFAULT '?',
14 bib_audience "char" NOT NULL DEFAULT '?',
16 bib_cat_form TEXT NOT NULL DEFAULT '?',
17 bib_pub_status TEXT NOT NULL DEFAULT '?',
18 bib_pub_date TEXT NOT NULL DEFAULT '?',
19 bib_item_lang TEXT NOT NULL DEFAULT '?'
21 CREATE TRIGGER circ_stats_record_dim_id_trigger
22 BEFORE INSERT ON circ_stats.record_dim
24 EXECUTE PROCEDURE dim_row_hash ();
26 CREATE TABLE circ_stats.usr_dim (
27 usr_id INT NOT NULL DEFAULT 0,
28 usr_grp INT NOT NULL, -- aka profile
29 usr_standing INT NOT NULL,
30 usr_home_ou INT NOT NULL,
34 usr_post_code TEXT NOT NULL
36 CREATE TRIGGER circ_stats_usr_dim_id_trigger
37 BEFORE INSERT ON circ_stats.usr_dim
39 EXECUTE PROCEDURE dim_row_hash ();
42 CREATE TABLE circ_stats.copy_dim (
43 copy_holdable BOOL NOT NULL,
44 copy_ref BOOL NOT NULL,
45 copy_circulate BOOL NOT NULL,
46 copy_opac_visible BOOL NOT NULL,
47 copy_circ_lib INT NOT NULL,
48 copy_location INT NOT NULL,
49 copy_fine_level INT NOT NULL,
50 copy_loan_duration INT NOT NULL,
52 copy_circ_modifer TEXT,
53 copy_circ_as_type TEXT,
54 copy_call_number_label TEXT NOT NULL
56 CREATE TRIGGER circ_stats_copy_dim_id_trigger
57 BEFORE INSERT ON circ_stats.copy_dim
59 EXECUTE PROCEDURE dim_row_hash ();
62 CREATE TABLE circ_stats.circ_dim (
63 circ_opac_renewal BOOL,
64 circ_desk_renewal BOOL,
65 circ_phone_renewal BOOL,
66 circ_self_checkout BOOL,
67 circ_recuring_fine NUMERIC(6,2) NOT NULL,
68 circ_max_fine NUMERIC(6,2) NOT NULL,
69 circ_fine_interval INTERVAL NOT NULL,
70 circ_duration INTERVAL NOT NULL,
71 circ_due_date TIMESTAMP WITH TIME ZONE NOT NULL,
73 circ_duration_rule TEXT NOT NULL,
74 circ_recuring_fine_rule TEXT NOT NULL,
75 circ_max_fine_rule TEXT NOT NULL,
78 CREATE TRIGGER circ_stats_circ_dim_id_trigger
79 BEFORE INSERT ON circ_stats.circ_dim
81 EXECUTE PROCEDURE dim_row_hash ();
84 CREATE TABLE circ_stats.checkout_fact (
86 circ_id BIGINT PRIMARY KEY,
87 circ_lib INT NOT NULL,
89 circ_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
90 circ_dim TEXT NOT NULL REFERENCES circ_stats.circ_dim (id),
93 usr_dim TEXT NOT NULL REFERENCES circ_stats.usr_dim (id),
96 copy_dim TEXT NOT NULL REFERENCES circ_stats.copy_dim (id),
99 bib_dim TEXT NOT NULL REFERENCES circ_stats.record_dim (id)
101 CREATE INDEX circ_stats_checkout_fact_time_idx ON circ_stats.checkout_fact (circ_timestamp);
102 CREATE INDEX circ_stats_checkout_fact_circ_dim_idx ON circ_stats.checkout_fact (circ_dim);
103 CREATE INDEX circ_stats_checkout_fact_usr_dim_idx ON circ_stats.checkout_fact (usr_dim);
104 CREATE INDEX circ_stats_checkout_fact_copy_dim_idx ON circ_stats.checkout_fact (copy_dim);
105 CREATE INDEX circ_stats_checkout_fact_bib_dim_idx ON circ_stats.checkout_fact (bib_dim);
107 CREATE TABLE circ_stats.renewal_fact (
109 circ_id BIGINT PRIMARY KEY,
110 circ_lib INT NOT NULL,
112 circ_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
113 circ_dim TEXT NOT NULL REFERENCES circ_stats.circ_dim (id),
116 usr_dim TEXT NOT NULL REFERENCES circ_stats.usr_dim (id),
119 copy_dim TEXT NOT NULL REFERENCES circ_stats.copy_dim (id),
122 bib_dim TEXT NOT NULL REFERENCES circ_stats.record_dim (id)
124 CREATE INDEX circ_stats_renewal_fact_time_idx ON circ_stats.renewal_fact (circ_timestamp);
125 CREATE INDEX circ_stats_renewal_fact_circ_dim_idx ON circ_stats.renewal_fact (circ_dim);
126 CREATE INDEX circ_stats_renewal_fact_usr_dim_idx ON circ_stats.renewal_fact (usr_dim);
127 CREATE INDEX circ_stats_renewal_fact_copy_dim_idx ON circ_stats.renewal_fact (copy_dim);
128 CREATE INDEX circ_stats_renewal_fact_bib_dim_idx ON circ_stats.renewal_fact (bib_dim);
130 CREATE TABLE circ_stats.checkin_fact (
132 circ_id BIGINT PRIMARY KEY,
133 circ_lib INT NOT NULL,
135 circ_timestamp TIMESTAMP WITH TIME ZONE NOT NULL,
136 circ_dim TEXT NOT NULL REFERENCES circ_stats.circ_dim (id),
139 usr_dim TEXT NOT NULL REFERENCES circ_stats.usr_dim (id),
142 copy_dim TEXT NOT NULL REFERENCES circ_stats.copy_dim (id),
145 bib_dim TEXT NOT NULL REFERENCES circ_stats.record_dim (id)
147 CREATE INDEX circ_stats_checkin_fact_time_idx ON circ_stats.checkin_fact (circ_timestamp);
148 CREATE INDEX circ_stats_checkin_fact_circ_dim_idx ON circ_stats.checkin_fact (circ_dim);
149 CREATE INDEX circ_stats_checkin_fact_usr_dim_idx ON circ_stats.checkin_fact (usr_dim);
150 CREATE INDEX circ_stats_checkin_fact_copy_dim_idx ON circ_stats.checkin_fact (copy_dim);
151 CREATE INDEX circ_stats_checkin_fact_bib_dim_idx ON circ_stats.checkin_fact (bib_dim);
153 CREATE OR REPLACE VIEW circ_stats.checkout_full_view AS
167 circ_recuring_fine_rule,
189 copy_call_number_label,
203 FROM circ_stats.checkout_fact f
204 JOIN circ_stats.circ_dim cd ON (f.circ_dim = cd.id)
205 JOIN circ_stats.usr_dim ud ON (f.usr_dim = ud.id)
206 JOIN circ_stats.copy_dim cpd ON (f.copy_dim = cpd.id)
207 JOIN circ_stats.record_dim bd ON (f.bib_dim = bd.id);
209 CREATE OR REPLACE VIEW circ_stats.checkin_full_view AS
223 circ_recuring_fine_rule,
245 copy_call_number_label,
259 FROM circ_stats.checkin_fact f
260 JOIN circ_stats.circ_dim cd ON (f.circ_dim = cd.id)
261 JOIN circ_stats.usr_dim ud ON (f.usr_dim = ud.id)
262 JOIN circ_stats.copy_dim cpd ON (f.copy_dim = cpd.id)
263 JOIN circ_stats.record_dim bd ON (f.bib_dim = bd.id);
265 CREATE OR REPLACE VIEW circ_stats.renewal_full_view AS
279 circ_recuring_fine_rule,
301 copy_call_number_label,
315 FROM circ_stats.renewal_fact f
316 JOIN circ_stats.circ_dim cd ON (f.circ_dim = cd.id)
317 JOIN circ_stats.usr_dim ud ON (f.usr_dim = ud.id)
318 JOIN circ_stats.copy_dim cpd ON (f.copy_dim = cpd.id)
319 JOIN circ_stats.record_dim bd ON (f.bib_dim = bd.id);