BiblioteQ
Source
biblioteq_sqlite_create_schema.h
1
const
char
*sqlite_create_schema_text =
"\
2
CREATE TABLE book \
3
( \
4
accession_number TEXT, \
5
author TEXT NOT NULL, \
6
back_cover BYTEA, \
7
binding_type VARCHAR(32) NOT NULL, \
8
callnumber VARCHAR(64), \
9
category TEXT NOT NULL, \
10
condition TEXT, \
11
description TEXT NOT NULL, \
12
deweynumber VARCHAR(64), \
13
edition VARCHAR(8) NOT NULL, \
14
front_cover BYTEA, \
15
id VARCHAR(32) UNIQUE, \
16
isbn13 VARCHAR(32) UNIQUE, \
17
keyword TEXT, \
18
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
19
lccontrolnumber VARCHAR(64), \
20
location TEXT NOT NULL, \
21
marc_tags TEXT, \
22
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
23
myoid BIGINT NOT NULL, \
24
originality TEXT, \
25
pdate VARCHAR(32) NOT NULL, \
26
place TEXT NOT NULL, \
27
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
28
publisher TEXT NOT NULL, \
29
quantity INTEGER NOT NULL DEFAULT 1, \
30
title TEXT NOT NULL, \
31
type VARCHAR(16) NOT NULL DEFAULT 'Book' \
32
); \
33
\
34
CREATE TABLE book_copy_info \
35
( \
36
copy_number INTEGER NOT NULL DEFAULT 1, \
37
copyid VARCHAR(64) NOT NULL, \
38
myoid BIGINT NOT NULL, \
39
condition TEXT, \
40
item_oid BIGINT NOT NULL, \
41
originality TEXT, \
42
PRIMARY KEY(item_oid, copyid), \
43
FOREIGN KEY(item_oid) REFERENCES book(myoid) ON DELETE CASCADE \
44
); \
45
\
46
CREATE TABLE book_files \
47
( \
48
description TEXT, \
49
file BYTEA NOT NULL, \
50
file_digest TEXT NOT NULL, \
51
file_name TEXT NOT NULL, \
52
item_oid BIGINT NOT NULL, \
53
myoid BIGINT NOT NULL, \
54
FOREIGN KEY(item_oid) REFERENCES book(myoid) ON DELETE CASCADE, \
55
PRIMARY KEY(file_digest, item_oid) \
56
); \
57
\
58
CREATE TRIGGER book_purge_trigger AFTER DELETE ON book \
59
FOR EACH row \
60
BEGIN \
61
DELETE FROM book_copy_info WHERE item_oid = old.myoid; \
62
DELETE FROM member_history WHERE item_oid = old.myoid AND \
63
type = old.type; \
64
END; \
65
\
66
CREATE TABLE cd \
67
( \
68
accession_number TEXT, \
69
artist TEXT NOT NULL, \
70
back_cover BYTEA, \
71
category TEXT NOT NULL, \
72
cdaudio VARCHAR(32) NOT NULL DEFAULT 'Mono', \
73
cddiskcount INTEGER NOT NULL DEFAULT 1, \
74
cdformat VARCHAR(128) NOT NULL, \
75
cdrecording VARCHAR(32) NOT NULL DEFAULT 'Live', \
76
cdruntime VARCHAR(32) NOT NULL, \
77
description TEXT NOT NULL, \
78
front_cover BYTEA, \
79
id VARCHAR(32) NOT NULL PRIMARY KEY, \
80
keyword TEXT, \
81
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
82
location TEXT NOT NULL, \
83
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
84
myoid BIGINT NOT NULL, \
85
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
86
quantity INTEGER NOT NULL DEFAULT 1, \
87
rdate VARCHAR(32) NOT NULL, \
88
recording_label TEXT NOT NULL, \
89
title TEXT NOT NULL, \
90
type VARCHAR(16) NOT NULL DEFAULT 'CD' \
91
); \
92
\
93
CREATE TABLE cd_songs \
94
( \
95
albumnum INTEGER NOT NULL DEFAULT 1, \
96
artist TEXT NOT NULL DEFAULT 'UNKNOWN', \
97
composer TEXT NOT NULL DEFAULT 'UNKNOWN', \
98
item_oid BIGINT NOT NULL, \
99
runtime VARCHAR(32) NOT NULL, \
100
songnum INTEGER NOT NULL DEFAULT 1, \
101
songtitle VARCHAR(256) NOT NULL, \
102
PRIMARY KEY(item_oid, albumnum, songnum), \
103
FOREIGN KEY(item_oid) REFERENCES cd(myoid) ON DELETE CASCADE \
104
); \
105
\
106
CREATE TABLE cd_copy_info \
107
( \
108
copy_number INTEGER NOT NULL DEFAULT 1, \
109
copyid VARCHAR(64) NOT NULL, \
110
item_oid BIGINT NOT NULL, \
111
myoid BIGINT NOT NULL, \
112
PRIMARY KEY(item_oid, copyid), \
113
FOREIGN KEY(item_oid) REFERENCES cd(myoid) ON DELETE CASCADE \
114
); \
115
\
116
CREATE TRIGGER cd_purge_trigger AFTER DELETE ON cd \
117
FOR EACH row \
118
BEGIN \
119
DELETE FROM cd_copy_info WHERE item_oid = old.myoid; \
120
DELETE FROM cd_songs WHERE item_oid = old.myoid; \
121
DELETE FROM member_history WHERE item_oid = old.myoid AND \
122
type = old.type; \
123
END; \
124
\
125
CREATE TABLE dvd \
126
( \
127
accession_number TEXT, \
128
back_cover BYTEA, \
129
category TEXT NOT NULL, \
130
description TEXT NOT NULL, \
131
dvdactor TEXT NOT NULL, \
132
dvdaspectratio VARCHAR(64) NOT NULL, \
133
dvddirector TEXT NOT NULL, \
134
dvddiskcount INTEGER NOT NULL DEFAULT 1, \
135
dvdformat TEXT NOT NULL, \
136
dvdrating VARCHAR(64) NOT NULL, \
137
dvdregion VARCHAR(64) NOT NULL, \
138
dvdruntime VARCHAR(32) NOT NULL, \
139
front_cover BYTEA, \
140
id VARCHAR(32) NOT NULL PRIMARY KEY, \
141
keyword TEXT, \
142
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
143
location TEXT NOT NULL, \
144
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
145
myoid BIGINT NOT NULL, \
146
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
147
quantity INTEGER NOT NULL DEFAULT 1, \
148
rdate VARCHAR(32) NOT NULL, \
149
studio TEXT NOT NULL, \
150
title TEXT NOT NULL, \
151
type VARCHAR(16) NOT NULL DEFAULT 'DVD' \
152
); \
153
\
154
CREATE TABLE dvd_copy_info \
155
( \
156
copy_number INTEGER NOT NULL DEFAULT 1, \
157
copyid VARCHAR(64) NOT NULL, \
158
item_oid BIGINT NOT NULL, \
159
myoid BIGINT NOT NULL, \
160
PRIMARY KEY(item_oid, copyid), \
161
FOREIGN KEY(item_oid) REFERENCES dvd(myoid) ON DELETE CASCADE \
162
); \
163
\
164
CREATE TRIGGER dvd_purge_trigger AFTER DELETE ON dvd \
165
FOR EACH row \
166
BEGIN \
167
DELETE FROM dvd_copy_info WHERE item_oid = old.myoid; \
168
DELETE FROM member_history WHERE item_oid = old.myoid AND \
169
type = old.type; \
170
END; \
171
\
172
CREATE TABLE grey_literature \
173
( \
174
author TEXT NOT NULL, \
175
client TEXT, \
176
document_code_a TEXT NOT NULL, \
177
document_code_b TEXT NOT NULL, \
178
document_date TEXT NOT NULL, \
179
document_id TEXT NOT NULL PRIMARY KEY, \
180
document_status TEXT, \
181
document_title TEXT NOT NULL, \
182
document_type TEXT NOT NULL, \
183
front_cover BYTEA, \
184
job_number TEXT NOT NULL, \
185
location TEXT, \
186
myoid BIGINT UNIQUE, \
187
notes TEXT, \
188
type VARCHAR(16) NOT NULL DEFAULT 'Grey Literature' \
189
); \
190
\
191
CREATE TABLE grey_literature_files \
192
( \
193
description TEXT, \
194
file BYTEA NOT NULL, \
195
file_digest TEXT NOT NULL, \
196
file_name TEXT NOT NULL, \
197
item_oid BIGINT NOT NULL, \
198
myoid BIGINT NOT NULL, \
199
FOREIGN KEY(item_oid) REFERENCES grey_literature(myoid) ON \
200
DELETE CASCADE, \
201
PRIMARY KEY(file_digest, item_oid) \
202
); \
203
\
204
CREATE TABLE journal \
205
( \
206
accession_number TEXT, \
207
back_cover BYTEA, \
208
callnumber VARCHAR(64), \
209
category TEXT NOT NULL, \
210
description TEXT NOT NULL, \
211
deweynumber VARCHAR(64), \
212
front_cover BYTEA, \
213
id VARCHAR(32), \
214
issueno INTEGER NOT NULL DEFAULT 0, \
215
issuevolume INTEGER NOT NULL DEFAULT 0, \
216
keyword TEXT, \
217
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
218
lccontrolnumber VARCHAR(64), \
219
location TEXT NOT NULL, \
220
marc_tags TEXT, \
221
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
222
myoid BIGINT NOT NULL, \
223
pdate VARCHAR(32) NOT NULL, \
224
place TEXT NOT NULL, \
225
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
226
publisher TEXT NOT NULL, \
227
quantity INTEGER NOT NULL DEFAULT 1, \
228
title TEXT NOT NULL, \
229
type VARCHAR(16) NOT NULL DEFAULT 'Journal', \
230
UNIQUE(id, issueno, issuevolume) \
231
); \
232
\
233
CREATE TABLE journal_copy_info \
234
( \
235
copy_number INTEGER NOT NULL DEFAULT 1, \
236
copyid VARCHAR(64) NOT NULL, \
237
item_oid BIGINT NOT NULL, \
238
myoid BIGINT NOT NULL, \
239
PRIMARY KEY(item_oid, copyid), \
240
FOREIGN KEY(item_oid) REFERENCES journal(myoid) ON DELETE CASCADE \
241
); \
242
\
243
CREATE TABLE journal_files \
244
( \
245
description TEXT, \
246
file BYTEA NOT NULL, \
247
file_digest TEXT NOT NULL, \
248
file_name TEXT NOT NULL, \
249
item_oid BIGINT NOT NULL, \
250
myoid BIGINT NOT NULL, \
251
FOREIGN KEY(item_oid) REFERENCES journal(myoid) ON DELETE CASCADE, \
252
PRIMARY KEY(file_digest, item_oid) \
253
); \
254
\
255
CREATE TRIGGER journal_purge_trigger AFTER DELETE ON journal \
256
FOR EACH row \
257
BEGIN \
258
DELETE FROM journal_copy_info WHERE item_oid = old.myoid; \
259
DELETE FROM member_history WHERE item_oid = old.myoid AND \
260
type = old.type; \
261
END; \
262
\
263
CREATE TABLE magazine \
264
( \
265
accession_number TEXT, \
266
back_cover BYTEA, \
267
callnumber VARCHAR(64), \
268
category TEXT NOT NULL, \
269
description TEXT NOT NULL, \
270
deweynumber VARCHAR(64), \
271
front_cover BYTEA, \
272
id VARCHAR(32), \
273
issueno INTEGER NOT NULL DEFAULT 0, \
274
issuevolume INTEGER NOT NULL DEFAULT 0, \
275
keyword TEXT, \
276
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
277
lccontrolnumber VARCHAR(64), \
278
location TEXT NOT NULL, \
279
marc_tags TEXT, \
280
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
281
myoid BIGINT NOT NULL, \
282
pdate VARCHAR(32) NOT NULL, \
283
place TEXT NOT NULL, \
284
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
285
publisher TEXT NOT NULL, \
286
quantity INTEGER NOT NULL DEFAULT 1, \
287
title TEXT NOT NULL, \
288
type VARCHAR(16) NOT NULL DEFAULT 'Magazine', \
289
UNIQUE(id, issuevolume, issueno) \
290
); \
291
\
292
CREATE TABLE magazine_copy_info \
293
( \
294
copy_number INTEGER NOT NULL DEFAULT 1, \
295
copyid VARCHAR(64) NOT NULL, \
296
item_oid BIGINT NOT NULL, \
297
myoid BIGINT NOT NULL, \
298
PRIMARY KEY(item_oid, copyid), \
299
FOREIGN KEY(item_oid) REFERENCES magazine(myoid) ON DELETE CASCADE \
300
); \
301
\
302
CREATE TABLE magazine_files \
303
( \
304
description TEXT, \
305
file BYTEA NOT NULL, \
306
file_digest TEXT NOT NULL, \
307
file_name TEXT NOT NULL, \
308
item_oid BIGINT NOT NULL, \
309
myoid BIGINT NOT NULL, \
310
FOREIGN KEY(item_oid) REFERENCES magazine(myoid) ON DELETE CASCADE, \
311
PRIMARY KEY(file_digest, item_oid) \
312
); \
313
\
314
CREATE TRIGGER magazine_purge_trigger AFTER DELETE ON magazine \
315
FOR EACH row \
316
BEGIN \
317
DELETE FROM magazine_copy_info WHERE item_oid = old.myoid; \
318
DELETE FROM member_history WHERE item_oid = old.myoid AND \
319
type = old.type; \
320
END; \
321
\
322
CREATE TABLE photograph_collection \
323
( \
324
about TEXT, \
325
accession_number TEXT, \
326
id TEXT PRIMARY KEY NOT NULL, \
327
image BYTEA, \
328
image_scaled BYTEA, \
329
location TEXT NOT NULL, \
330
myoid BIGINT NOT NULL, \
331
notes TEXT, \
332
title TEXT NOT NULL, \
333
type VARCHAR(32) NOT NULL DEFAULT 'Photograph Collection' \
334
); \
335
\
336
CREATE TABLE photograph \
337
( \
338
accession_number TEXT, \
339
callnumber VARCHAR(64), \
340
collection_oid BIGINT NOT NULL, \
341
copyright TEXT NOT NULL, \
342
creators TEXT NOT NULL, \
343
format TEXT, \
344
id TEXT NOT NULL, \
345
image BYTEA, \
346
image_scaled BYTEA, \
347
medium TEXT NOT NULL, \
348
myoid BIGINT NOT NULL, \
349
notes TEXT, \
350
other_number TEXT, \
351
pdate VARCHAR(32) NOT NULL, \
352
quantity INTEGER NOT NULL DEFAULT 1, \
353
reproduction_number TEXT NOT NULL, \
354
subjects TEXT, \
355
title TEXT NOT NULL, \
356
PRIMARY KEY(id, collection_oid), \
357
FOREIGN KEY(collection_oid) REFERENCES \
358
photograph_collection(myoid) ON \
359
DELETE CASCADE \
360
); \
361
\
362
CREATE TABLE videogame \
363
( \
364
accession_number TEXT, \
365
back_cover BYTEA, \
366
description TEXT NOT NULL, \
367
developer TEXT NOT NULL, \
368
front_cover BYTEA, \
369
genre TEXT NOT NULL, \
370
id VARCHAR(32) NOT NULL PRIMARY KEY, \
371
keyword TEXT, \
372
language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
373
location TEXT NOT NULL, \
374
monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
375
myoid BIGINT NOT NULL, \
376
place TEXT NOT NULL, \
377
price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
378
publisher TEXT NOT NULL, \
379
quantity INTEGER NOT NULL DEFAULT 1, \
380
rdate VARCHAR(32) NOT NULL, \
381
title TEXT NOT NULL, \
382
type VARCHAR(16) NOT NULL DEFAULT 'Video Game', \
383
vgmode VARCHAR(16) NOT NULL DEFAULT 'Multiplayer', \
384
vgplatform VARCHAR(64) NOT NULL, \
385
vgrating VARCHAR(64) NOT NULL \
386
); \
387
\
388
CREATE TABLE videogame_copy_info \
389
( \
390
copy_number INTEGER NOT NULL DEFAULT 1, \
391
copyid VARCHAR(64) NOT NULL, \
392
item_oid BIGINT NOT NULL, \
393
myoid BIGINT NOT NULL, \
394
PRIMARY KEY(item_oid, copyid), \
395
FOREIGN KEY(item_oid) REFERENCES videogame(myoid) ON \
396
DELETE CASCADE \
397
); \
398
\
399
CREATE TRIGGER videogame_purge_trigger AFTER DELETE ON videogame \
400
FOR EACH row \
401
BEGIN \
402
DELETE FROM videogame_copy_info WHERE item_oid = old.myoid; \
403
DELETE FROM member_history WHERE item_oid = old.myoid AND \
404
type = old.type; \
405
END; \
406
\
407
CREATE TABLE item_borrower \
408
( \
409
copy_number INTEGER NOT NULL DEFAULT 1, \
410
copyid VARCHAR(64) NOT NULL, \
411
duedate VARCHAR(32) NOT NULL, \
412
item_oid BIGINT NOT NULL, \
413
memberid VARCHAR(16) NOT NULL, \
414
myoid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
415
reserved_by VARCHAR(128) NOT NULL, \
416
reserved_date VARCHAR(32) NOT NULL, \
417
type VARCHAR(16) NOT NULL, \
418
FOREIGN KEY(memberid) REFERENCES member ON DELETE RESTRICT \
419
); \
420
\
421
CREATE TABLE member \
422
( \
423
city VARCHAR(256) NOT NULL, \
424
comments TEXT, \
425
dob VARCHAR(32) NOT NULL, \
426
email VARCHAR(128), \
427
expiration_date VARCHAR(32) NOT NULL, \
428
first_name VARCHAR(128) NOT NULL, \
429
general_registration_number TEXT, \
430
last_name VARCHAR(128) NOT NULL, \
431
memberclass TEXT, \
432
memberid VARCHAR(16) NOT NULL PRIMARY KEY DEFAULT 1, \
433
membersince VARCHAR(32) NOT NULL, \
434
middle_init VARCHAR(1), \
435
overdue_fees NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
436
sex VARCHAR(32) NOT NULL DEFAULT 'Private', \
437
state_abbr VARCHAR(16) NOT NULL DEFAULT 'N/A', \
438
street VARCHAR(256) NOT NULL, \
439
telephone_num VARCHAR(32), \
440
zip VARCHAR(16) NOT NULL DEFAULT 'N/A' \
441
); \
442
\
443
CREATE TABLE member_history \
444
( \
445
memberid VARCHAR(16) NOT NULL, \
446
item_oid BIGINT NOT NULL, \
447
copyid VARCHAR(64) NOT NULL, \
448
reserved_date VARCHAR(32) NOT NULL, \
449
duedate VARCHAR(32) NOT NULL, \
450
returned_date VARCHAR(32) NOT NULL, \
451
myoid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
452
reserved_by VARCHAR(128) NOT NULL, \
453
type VARCHAR(16) NOT NULL, \
454
FOREIGN KEY(memberid) REFERENCES member(memberid) ON DELETE CASCADE \
455
); \
456
\
457
CREATE TRIGGER member_history_trigger AFTER DELETE ON member \
458
FOR EACH row \
459
BEGIN \
460
DELETE FROM member_history WHERE memberid = old.memberid; \
461
END; \
462
\
463
CREATE VIEW item_borrower_vw AS \
464
SELECT copy_number, \
465
copyid, \
466
duedate, \
467
memberid, \
468
myoid, \
469
reserved_date, \
470
type, \
471
item_oid \
472
FROM item_borrower; \
473
\
474
CREATE TABLE book_binding_types \
475
( \
476
binding_type TEXT NOT NULL PRIMARY KEY \
477
); \
478
\
479
CREATE TABLE grey_literature_types \
480
( \
481
document_type TEXT NOT NULL PRIMARY KEY \
482
); \
483
\
484
CREATE TABLE locations \
485
( \
486
location TEXT NOT NULL, \
487
type VARCHAR(32) NOT NULL, \
488
PRIMARY KEY(location, type) \
489
); \
490
\
491
CREATE TABLE monetary_units \
492
( \
493
monetary_unit TEXT NOT NULL PRIMARY KEY \
494
); \
495
\
496
CREATE TABLE languages \
497
( \
498
language TEXT NOT NULL PRIMARY KEY \
499
); \
500
\
501
CREATE TABLE cd_formats \
502
( \
503
cd_format TEXT NOT NULL PRIMARY KEY \
504
); \
505
\
506
CREATE TABLE dvd_ratings \
507
( \
508
dvd_rating TEXT NOT NULL PRIMARY KEY \
509
); \
510
\
511
CREATE TABLE dvd_aspect_ratios \
512
( \
513
dvd_aspect_ratio TEXT NOT NULL PRIMARY KEY \
514
); \
515
\
516
CREATE TABLE dvd_regions \
517
( \
518
dvd_region TEXT NOT NULL PRIMARY KEY \
519
); \
520
\
521
CREATE TABLE minimum_days \
522
( \
523
days INTEGER NOT NULL, \
524
type VARCHAR(16) NOT NULL PRIMARY KEY \
525
); \
526
\
527
CREATE TABLE videogame_ratings \
528
( \
529
videogame_rating TEXT NOT NULL PRIMARY KEY \
530
); \
531
\
532
CREATE TABLE videogame_platforms \
533
( \
534
videogame_platform TEXT NOT NULL PRIMARY KEY \
535
); \
536
\
537
CREATE TABLE sequence \
538
( \
539
value INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT \
540
); \
541
"
;
Generated by
1.8.13