BiblioteQ
biblioteq_sqlite_create_schema.h
1 /*
2 ** Copyright (c) 2006 - present, Alexis Megas.
3 ** All rights reserved.
4 **
5 ** Redistribution and use in source and binary forms, with or without
6 ** modification, are permitted provided that the following conditions
7 ** are met:
8 ** 1. Redistributions of source code must retain the above copyright
9 ** notice, this list of conditions and the following disclaimer.
10 ** 2. Redistributions in binary form must reproduce the above copyright
11 ** notice, this list of conditions and the following disclaimer in the
12 ** documentation and/or other materials provided with the distribution.
13 ** 3. The name of the author may not be used to endorse or promote products
14 ** derived from BiblioteQ without specific prior written permission.
15 **
16 ** BIBLIOTEQ IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
17 ** IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
18 ** OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
19 ** IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
20 ** INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
21 ** NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
22 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
23 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 ** BIBLIOTEQ, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
27 
28 /*
29 ** The sequence table is used for generating unique integers. Please see
30 ** biblioteq_misc_functions::getSqliteUniqueId().
31 */
32 
33 const char *sqlite_create_schema_text = "\
34 CREATE TABLE book \
35 ( \
36  accession_number TEXT, \
37  alternate_id_1 TEXT, \
38  author TEXT NOT NULL, \
39  back_cover BYTEA, \
40  binding_type VARCHAR(32) NOT NULL, \
41  book_read INTEGER DEFAULT 0, \
42  callnumber VARCHAR(64), \
43  category TEXT NOT NULL, \
44  condition TEXT, \
45  date_of_reform VARCHAR(32), \
46  description TEXT NOT NULL, \
47  deweynumber VARCHAR(64), \
48  edition VARCHAR(8) NOT NULL, \
49  front_cover BYTEA, \
50  id VARCHAR(32) UNIQUE, \
51  isbn13 VARCHAR(32) UNIQUE, \
52  keyword TEXT, \
53  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
54  lccontrolnumber VARCHAR(64), \
55  location TEXT NOT NULL, \
56  marc_tags TEXT, \
57  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
58  multivolume_set_isbn VARCHAR(32), \
59  myoid BIGINT NOT NULL, \
60  origin TEXT, \
61  originality TEXT, \
62  pdate VARCHAR(32) NOT NULL, \
63  place TEXT NOT NULL, \
64  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
65  publisher TEXT NOT NULL, \
66  purchase_date VARCHAR(32), \
67  quantity INTEGER NOT NULL DEFAULT 1, \
68  target_audience TEXT, \
69  title TEXT NOT NULL, \
70  type VARCHAR(16) NOT NULL DEFAULT 'Book', \
71  url TEXT, \
72  volume_number TEXT \
73 ); \
74  \
75 CREATE TABLE book_copy_info \
76 ( \
77  condition TEXT, \
78  copy_number INTEGER NOT NULL DEFAULT 1, \
79  copyid VARCHAR(64) NOT NULL, \
80  item_oid BIGINT NOT NULL, \
81  myoid BIGINT NOT NULL, \
82  notes TEXT, \
83  originality TEXT, \
84  status TEXT, \
85  PRIMARY KEY(item_oid, copyid), \
86  FOREIGN KEY(item_oid) REFERENCES book(myoid) ON DELETE CASCADE \
87 ); \
88  \
89 CREATE TABLE book_files \
90 ( \
91  description TEXT, \
92  file BYTEA NOT NULL, \
93  file_digest TEXT NOT NULL, \
94  file_name TEXT NOT NULL, \
95  item_oid BIGINT NOT NULL, \
96  myoid BIGINT NOT NULL, \
97  FOREIGN KEY(item_oid) REFERENCES book(myoid) ON DELETE CASCADE, \
98  PRIMARY KEY(file_digest, item_oid) \
99 ); \
100  \
101 CREATE TABLE book_sequence \
102 ( \
103  value INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT \
104 ); \
105  \
106 CREATE TABLE cd \
107 ( \
108  accession_number TEXT, \
109  artist TEXT NOT NULL, \
110  back_cover BYTEA, \
111  category TEXT NOT NULL, \
112  cdaudio VARCHAR(32) NOT NULL DEFAULT 'Mono', \
113  cddiskcount INTEGER NOT NULL DEFAULT 1, \
114  cdformat VARCHAR(128) NOT NULL, \
115  cdrecording VARCHAR(32) NOT NULL DEFAULT 'Live', \
116  cdruntime VARCHAR(32) NOT NULL, \
117  description TEXT NOT NULL, \
118  front_cover BYTEA, \
119  id VARCHAR(32) NOT NULL PRIMARY KEY, \
120  keyword TEXT, \
121  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
122  location TEXT NOT NULL, \
123  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
124  myoid BIGINT NOT NULL, \
125  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
126  quantity INTEGER NOT NULL DEFAULT 1, \
127  rdate VARCHAR(32) NOT NULL, \
128  recording_label TEXT NOT NULL, \
129  title TEXT NOT NULL, \
130  type VARCHAR(16) NOT NULL DEFAULT 'CD' \
131 ); \
132  \
133 CREATE TABLE cd_copy_info \
134 ( \
135  copy_number INTEGER NOT NULL DEFAULT 1, \
136  copyid VARCHAR(64) NOT NULL, \
137  item_oid BIGINT NOT NULL, \
138  myoid BIGINT NOT NULL, \
139  notes TEXT, \
140  status TEXT, \
141  PRIMARY KEY(item_oid, copyid), \
142  FOREIGN KEY(item_oid) REFERENCES cd(myoid) ON DELETE CASCADE \
143 ); \
144  \
145 CREATE TABLE cd_songs \
146 ( \
147  albumnum INTEGER NOT NULL DEFAULT 1, \
148  artist TEXT NOT NULL DEFAULT 'UNKNOWN', \
149  composer TEXT NOT NULL DEFAULT 'UNKNOWN', \
150  item_oid BIGINT NOT NULL, \
151  runtime VARCHAR(32) NOT NULL, \
152  songnum INTEGER NOT NULL DEFAULT 1, \
153  songtitle VARCHAR(256) NOT NULL, \
154  PRIMARY KEY(item_oid, albumnum, songnum), \
155  FOREIGN KEY(item_oid) REFERENCES cd(myoid) ON DELETE CASCADE \
156 ); \
157  \
158 CREATE TABLE dvd \
159 ( \
160  accession_number TEXT, \
161  back_cover BYTEA, \
162  category TEXT NOT NULL, \
163  description TEXT NOT NULL, \
164  dvdactor TEXT NOT NULL, \
165  dvdaspectratio VARCHAR(64) NOT NULL, \
166  dvddirector TEXT NOT NULL, \
167  dvddiskcount INTEGER NOT NULL DEFAULT 1, \
168  dvdformat TEXT NOT NULL, \
169  dvdrating VARCHAR(64) NOT NULL, \
170  dvdregion VARCHAR(64) NOT NULL, \
171  dvdruntime VARCHAR(32) NOT NULL, \
172  front_cover BYTEA, \
173  id VARCHAR(32) NOT NULL PRIMARY KEY, \
174  keyword TEXT, \
175  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
176  location TEXT NOT NULL, \
177  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
178  myoid BIGINT NOT NULL, \
179  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
180  quantity INTEGER NOT NULL DEFAULT 1, \
181  rdate VARCHAR(32) NOT NULL, \
182  studio TEXT NOT NULL, \
183  title TEXT NOT NULL, \
184  type VARCHAR(16) NOT NULL DEFAULT 'DVD' \
185 ); \
186  \
187 CREATE TABLE dvd_copy_info \
188 ( \
189  copy_number INTEGER NOT NULL DEFAULT 1, \
190  copyid VARCHAR(64) NOT NULL, \
191  item_oid BIGINT NOT NULL, \
192  myoid BIGINT NOT NULL, \
193  notes TEXT, \
194  status TEXT, \
195  PRIMARY KEY(item_oid, copyid), \
196  FOREIGN KEY(item_oid) REFERENCES dvd(myoid) ON DELETE CASCADE \
197 ); \
198  \
199 CREATE TABLE grey_literature \
200 ( \
201  author TEXT NOT NULL, \
202  client TEXT, \
203  document_code_a TEXT NOT NULL, \
204  document_code_b TEXT NOT NULL, \
205  document_date TEXT NOT NULL, \
206  document_id TEXT NOT NULL PRIMARY KEY, \
207  document_status TEXT, \
208  document_title TEXT NOT NULL, \
209  document_type TEXT NOT NULL, \
210  front_cover BYTEA, \
211  job_number TEXT NOT NULL, \
212  location TEXT, \
213  myoid BIGINT UNIQUE, \
214  notes TEXT, \
215  quantity INTEGER NOT NULL DEFAULT 1, \
216  type VARCHAR(16) NOT NULL DEFAULT 'Grey Literature' \
217 ); \
218  \
219 CREATE TABLE grey_literature_files \
220 ( \
221  description TEXT, \
222  file BYTEA NOT NULL, \
223  file_digest TEXT NOT NULL, \
224  file_name TEXT NOT NULL, \
225  item_oid BIGINT NOT NULL, \
226  myoid BIGINT NOT NULL, \
227  FOREIGN KEY(item_oid) REFERENCES grey_literature(myoid) ON \
228  DELETE CASCADE, \
229  PRIMARY KEY(file_digest, item_oid) \
230 ); \
231  \
232 CREATE TABLE journal \
233 ( \
234  accession_number TEXT, \
235  back_cover BYTEA, \
236  callnumber VARCHAR(64), \
237  category TEXT NOT NULL, \
238  description TEXT NOT NULL, \
239  deweynumber VARCHAR(64), \
240  front_cover BYTEA, \
241  id VARCHAR(32), \
242  issueno INTEGER NOT NULL DEFAULT 0, \
243  issuevolume INTEGER NOT NULL DEFAULT 0, \
244  keyword TEXT, \
245  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
246  lccontrolnumber VARCHAR(64), \
247  location TEXT NOT NULL, \
248  marc_tags TEXT, \
249  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
250  myoid BIGINT NOT NULL, \
251  pdate VARCHAR(32) NOT NULL, \
252  place TEXT NOT NULL, \
253  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
254  publisher TEXT NOT NULL, \
255  quantity INTEGER NOT NULL DEFAULT 1, \
256  title TEXT NOT NULL, \
257  type VARCHAR(16) NOT NULL DEFAULT 'Journal', \
258  UNIQUE(id, issueno, issuevolume) \
259 ); \
260  \
261 CREATE TABLE journal_copy_info \
262 ( \
263  copy_number INTEGER NOT NULL DEFAULT 1, \
264  copyid VARCHAR(64) NOT NULL, \
265  item_oid BIGINT NOT NULL, \
266  myoid BIGINT NOT NULL, \
267  notes TEXT, \
268  status TEXT, \
269  PRIMARY KEY(item_oid, copyid), \
270  FOREIGN KEY(item_oid) REFERENCES journal(myoid) ON DELETE CASCADE \
271 ); \
272  \
273 CREATE TABLE journal_files \
274 ( \
275  description TEXT, \
276  file BYTEA NOT NULL, \
277  file_digest TEXT NOT NULL, \
278  file_name TEXT NOT NULL, \
279  item_oid BIGINT NOT NULL, \
280  myoid BIGINT NOT NULL, \
281  FOREIGN KEY(item_oid) REFERENCES journal(myoid) ON DELETE CASCADE, \
282  PRIMARY KEY(file_digest, item_oid) \
283 ); \
284  \
285 CREATE TABLE magazine \
286 ( \
287  accession_number TEXT, \
288  back_cover BYTEA, \
289  callnumber VARCHAR(64), \
290  category TEXT NOT NULL, \
291  description TEXT NOT NULL, \
292  deweynumber VARCHAR(64), \
293  front_cover BYTEA, \
294  id VARCHAR(32), \
295  issueno INTEGER NOT NULL DEFAULT 0, \
296  issuevolume INTEGER NOT NULL DEFAULT 0, \
297  keyword TEXT, \
298  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
299  lccontrolnumber VARCHAR(64), \
300  location TEXT NOT NULL, \
301  marc_tags TEXT, \
302  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
303  myoid BIGINT NOT NULL, \
304  pdate VARCHAR(32) NOT NULL, \
305  place TEXT NOT NULL, \
306  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
307  publisher TEXT NOT NULL, \
308  quantity INTEGER NOT NULL DEFAULT 1, \
309  title TEXT NOT NULL, \
310  type VARCHAR(16) NOT NULL DEFAULT 'Magazine', \
311  UNIQUE(id, issuevolume, issueno) \
312 ); \
313  \
314 CREATE TABLE magazine_copy_info \
315 ( \
316  copy_number INTEGER NOT NULL DEFAULT 1, \
317  copyid VARCHAR(64) NOT NULL, \
318  item_oid BIGINT NOT NULL, \
319  myoid BIGINT NOT NULL, \
320  notes TEXT, \
321  status TEXT, \
322  PRIMARY KEY(item_oid, copyid), \
323  FOREIGN KEY(item_oid) REFERENCES magazine(myoid) ON DELETE CASCADE \
324 ); \
325  \
326 CREATE TABLE magazine_files \
327 ( \
328  description TEXT, \
329  file BYTEA NOT NULL, \
330  file_digest TEXT NOT NULL, \
331  file_name TEXT NOT NULL, \
332  item_oid BIGINT NOT NULL, \
333  myoid BIGINT NOT NULL, \
334  FOREIGN KEY(item_oid) REFERENCES magazine(myoid) ON DELETE CASCADE, \
335  PRIMARY KEY(file_digest, item_oid) \
336 ); \
337  \
338 CREATE TABLE photograph_collection \
339 ( \
340  about TEXT, \
341  accession_number TEXT, \
342  id TEXT PRIMARY KEY NOT NULL, \
343  image BYTEA, \
344  image_scaled BYTEA, \
345  location TEXT NOT NULL, \
346  myoid BIGINT NOT NULL, \
347  notes TEXT, \
348  title TEXT NOT NULL, \
349  type VARCHAR(32) NOT NULL DEFAULT 'Photograph Collection' \
350 ); \
351  \
352 CREATE TABLE photograph \
353 ( \
354  accession_number TEXT, \
355  callnumber VARCHAR(64), \
356  collection_oid BIGINT NOT NULL, \
357  copyright TEXT NOT NULL, \
358  creators TEXT NOT NULL, \
359  format TEXT, \
360  id TEXT NOT NULL, \
361  image BYTEA, \
362  image_scaled BYTEA, \
363  medium TEXT NOT NULL, \
364  myoid BIGINT NOT NULL, \
365  notes TEXT, \
366  other_number TEXT, \
367  pdate VARCHAR(32) NOT NULL, \
368  quantity INTEGER NOT NULL DEFAULT 1, \
369  reproduction_number TEXT NOT NULL, \
370  subjects TEXT, \
371  title TEXT NOT NULL, \
372  PRIMARY KEY(id, collection_oid), \
373  FOREIGN KEY(collection_oid) REFERENCES \
374  photograph_collection(myoid) ON \
375  DELETE CASCADE \
376 ); \
377  \
378 CREATE TABLE videogame \
379 ( \
380  accession_number TEXT, \
381  back_cover BYTEA, \
382  description TEXT NOT NULL, \
383  developer TEXT NOT NULL, \
384  front_cover BYTEA, \
385  genre TEXT NOT NULL, \
386  id VARCHAR(32) NOT NULL PRIMARY KEY, \
387  keyword TEXT, \
388  language VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
389  location TEXT NOT NULL, \
390  monetary_units VARCHAR(64) NOT NULL DEFAULT 'UNKNOWN', \
391  myoid BIGINT NOT NULL, \
392  place TEXT NOT NULL, \
393  price NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
394  publisher TEXT NOT NULL, \
395  quantity INTEGER NOT NULL DEFAULT 1, \
396  rdate VARCHAR(32) NOT NULL, \
397  title TEXT NOT NULL, \
398  type VARCHAR(16) NOT NULL DEFAULT 'Video Game', \
399  vgmode VARCHAR(16) NOT NULL DEFAULT 'Multiplayer', \
400  vgplatform VARCHAR(64) NOT NULL, \
401  vgrating VARCHAR(64) NOT NULL \
402 ); \
403  \
404 CREATE TABLE videogame_copy_info \
405 ( \
406  copy_number INTEGER NOT NULL DEFAULT 1, \
407  copyid VARCHAR(64) NOT NULL, \
408  item_oid BIGINT NOT NULL, \
409  myoid BIGINT NOT NULL, \
410  notes TEXT, \
411  status TEXT, \
412  PRIMARY KEY(item_oid, copyid), \
413  FOREIGN KEY(item_oid) REFERENCES videogame(myoid) ON \
414  DELETE CASCADE \
415 ); \
416  \
417 CREATE TRIGGER book_purge_trigger AFTER DELETE ON book \
418 FOR EACH row \
419 BEGIN \
420  DELETE FROM book_copy_info WHERE item_oid = old.myoid; \
421  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
422  DELETE FROM member_history WHERE item_oid = old.myoid AND \
423  type = old.type; \
424 END; \
425  \
426 CREATE TRIGGER cd_purge_trigger AFTER DELETE ON cd \
427 FOR EACH row \
428 BEGIN \
429  DELETE FROM cd_copy_info WHERE item_oid = old.myoid; \
430  DELETE FROM cd_songs WHERE item_oid = old.myoid; \
431  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
432  DELETE FROM member_history WHERE item_oid = old.myoid AND \
433  type = old.type; \
434 END; \
435  \
436 CREATE TRIGGER dvd_purge_trigger AFTER DELETE ON dvd \
437 FOR EACH row \
438 BEGIN \
439  DELETE FROM dvd_copy_info WHERE item_oid = old.myoid; \
440  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
441  DELETE FROM member_history WHERE item_oid = old.myoid AND \
442  type = old.type; \
443 END; \
444  \
445 CREATE TRIGGER grey_literature_purge_trigger AFTER DELETE ON \
446  grey_literature \
447 FOR EACH row \
448 BEGIN \
449  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
450  DELETE FROM member_history WHERE item_oid = old.myoid AND \
451  type = old.type; \
452 END; \
453  \
454 CREATE TRIGGER journal_purge_trigger AFTER DELETE ON journal \
455 FOR EACH row \
456 BEGIN \
457  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
458  DELETE FROM journal_copy_info WHERE item_oid = old.myoid; \
459  DELETE FROM member_history WHERE item_oid = old.myoid AND \
460  type = old.type; \
461 END; \
462  \
463 CREATE TRIGGER magazine_purge_trigger AFTER DELETE ON magazine \
464 FOR EACH row \
465 BEGIN \
466  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
467  DELETE FROM magazine_copy_info WHERE item_oid = old.myoid; \
468  DELETE FROM member_history WHERE item_oid = old.myoid AND \
469  type = old.type; \
470 END; \
471  \
472 CREATE TRIGGER videogame_purge_trigger AFTER DELETE ON videogame \
473 FOR EACH row \
474 BEGIN \
475  DELETE FROM item_borrower WHERE item_oid = old.myoid; \
476  DELETE FROM member_history WHERE item_oid = old.myoid AND \
477  type = old.type; \
478  DELETE FROM videogame_copy_info WHERE item_oid = old.myoid; \
479 END; \
480  \
481 CREATE TABLE item_borrower \
482 ( \
483  copy_number INTEGER NOT NULL DEFAULT 1, \
484  copyid VARCHAR(64) NOT NULL, \
485  duedate VARCHAR(32) NOT NULL, \
486  item_oid BIGINT NOT NULL, \
487  memberid VARCHAR(16) NOT NULL, \
488  myoid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
489  reserved_by VARCHAR(128) NOT NULL, \
490  reserved_date VARCHAR(32) NOT NULL, \
491  type VARCHAR(16) NOT NULL, \
492  FOREIGN KEY(memberid) REFERENCES member ON DELETE RESTRICT \
493 ); \
494  \
495 CREATE TABLE member \
496 ( \
497  city VARCHAR(256) NOT NULL, \
498  comments TEXT, \
499  dob VARCHAR(32) NOT NULL, \
500  email VARCHAR(128), \
501  expiration_date VARCHAR(32) NOT NULL, \
502  first_name VARCHAR(128) NOT NULL, \
503  general_registration_number TEXT, \
504  last_name VARCHAR(128) NOT NULL, \
505  maximum_reserved_books INTEGER NOT NULL DEFAULT 0, \
506  memberclass TEXT, \
507  memberid VARCHAR(16) NOT NULL PRIMARY KEY DEFAULT 1, \
508  membership_fees NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
509  membersince VARCHAR(32) NOT NULL, \
510  middle_init VARCHAR(1), \
511  overdue_fees NUMERIC(10, 2) NOT NULL DEFAULT 0.00, \
512  sex VARCHAR(32) NOT NULL DEFAULT 'Private', \
513  state_abbr VARCHAR(16) NOT NULL DEFAULT 'N/A', \
514  street VARCHAR(256) NOT NULL, \
515  telephone_num VARCHAR(32), \
516  zip VARCHAR(16) NOT NULL DEFAULT 'N/A' \
517 ); \
518  \
519 CREATE TRIGGER item_borrower_trigger AFTER DELETE ON member \
520 FOR EACH row \
521 BEGIN \
522  DELETE FROM item_borrower WHERE memberid = old.memberid; \
523 END; \
524  \
525 CREATE TABLE member_history \
526 ( \
527  memberid VARCHAR(16) NOT NULL, \
528  item_oid BIGINT NOT NULL, \
529  copyid VARCHAR(64) NOT NULL, \
530  reserved_date VARCHAR(32) NOT NULL, \
531  duedate VARCHAR(32) NOT NULL, \
532  returned_date VARCHAR(32) NOT NULL, \
533  myoid INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, \
534  reserved_by VARCHAR(128) NOT NULL, \
535  type VARCHAR(16) NOT NULL, \
536  FOREIGN KEY(memberid) REFERENCES member(memberid) ON DELETE CASCADE \
537 ); \
538  \
539 CREATE TRIGGER member_history_trigger AFTER DELETE ON member \
540 FOR EACH row \
541 BEGIN \
542  DELETE FROM member_history WHERE memberid = old.memberid; \
543 END; \
544  \
545 CREATE TABLE book_binding_types \
546 ( \
547  binding_type TEXT NOT NULL PRIMARY KEY \
548 ); \
549  \
550 CREATE TABLE book_conditions \
551 ( \
552  condition TEXT NOT NULL PRIMARY KEY \
553 ); \
554  \
555 CREATE TABLE book_originality \
556 ( \
557  originality TEXT NOT NULL PRIMARY KEY \
558 ); \
559  \
560 CREATE TABLE book_target_audiences \
561 ( \
562  target_audience TEXT NOT NULL PRIMARY KEY \
563 ); \
564  \
565 CREATE TABLE cd_formats \
566 ( \
567  cd_format TEXT NOT NULL PRIMARY KEY \
568 ); \
569  \
570 CREATE TABLE dvd_aspect_ratios \
571 ( \
572  dvd_aspect_ratio TEXT NOT NULL PRIMARY KEY \
573 ); \
574  \
575 CREATE TABLE dvd_ratings \
576 ( \
577  dvd_rating TEXT NOT NULL PRIMARY KEY \
578 ); \
579  \
580 CREATE TABLE dvd_regions \
581 ( \
582  dvd_region TEXT NOT NULL PRIMARY KEY \
583 ); \
584  \
585 CREATE TABLE grey_literature_types \
586 ( \
587  document_type TEXT NOT NULL PRIMARY KEY \
588 ); \
589  \
590 CREATE TABLE languages \
591 ( \
592  language TEXT NOT NULL PRIMARY KEY \
593 ); \
594  \
595 CREATE TABLE locations \
596 ( \
597  location TEXT NOT NULL, \
598  type VARCHAR(32) NOT NULL, \
599  PRIMARY KEY(location, type) \
600 ); \
601  \
602 CREATE TABLE minimum_days \
603 ( \
604  days INTEGER NOT NULL, \
605  type VARCHAR(16) NOT NULL PRIMARY KEY \
606 ); \
607  \
608 CREATE TABLE monetary_units \
609 ( \
610  monetary_unit TEXT NOT NULL PRIMARY KEY \
611 ); \
612  \
613 CREATE TABLE sequence \
614 ( \
615  value INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT \
616 ); \
617  \
618 CREATE TABLE videogame_platforms \
619 ( \
620  videogame_platform TEXT NOT NULL PRIMARY KEY \
621 ); \
622  \
623 CREATE TABLE videogame_ratings \
624 ( \
625  videogame_rating TEXT NOT NULL PRIMARY KEY \
626 ); \
627 ";