-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy path01_init.sql
112 lines (99 loc) · 3.11 KB
/
01_init.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
-- database schema deletion
DROP DATABASE IF EXISTS buddb;
-- user deletion
DROP USER IF EXISTS 'budapp'@'%';
-- schema creation
CREATE DATABASE IF NOT EXISTS buddb;
-- user creation
CREATE USER IF NOT EXISTS 'budapp'@'%' IDENTIFIED BY 'budpassword';
GRANT ALL ON buddb.* TO 'budapp'@'%';
-- select db
USE buddb;
-- create tables
CREATE TABLE book (
book_id BIGINT NOT NULL AUTO_INCREMENT,
title VARCHAR(255),
subtitle VARCHAR(255),
author VARCHAR(255),
publisher VARCHAR(255),
edition VARCHAR(255),
year VARCHAR(255),
language VARCHAR(255),
isbn_10 VARCHAR(255),
isbn_13 VARCHAR(255),
library_section INTEGER NOT NULL,
total_quantity INTEGER,
available_quantity INTEGER,
notes VARCHAR(255),
image_link VARCHAR(255),
retail_price DOUBLE PRECISION,
library_price DOUBLE PRECISION,
PRIMARY KEY (book_id)
);
CREATE TABLE tag (
tag_id BIGINT NOT NULL AUTO_INCREMENT,
tag_name VARCHAR(255),
PRIMARY KEY (tag_id)
);
CREATE TABLE book_tag (
book_id BIGINT NOT NULL,
tag_id BIGINT NOT NULL,
CONSTRAINT fk_booktag_book FOREIGN KEY (book_id) REFERENCES book (book_id),
CONSTRAINT fk_booktag_tag FOREIGN KEY (tag_id) REFERENCES tag (tag_id)
);
CREATE TABLE librarian (
librarian_id BIGINT NOT NULL AUTO_INCREMENT,
username VARCHAR(255),
first_name VARCHAR(255),
middle_name VARCHAR(255),
last_name VARCHAR(255),
email VARCHAR(255),
password VARCHAR(255),
role INTEGER,
PRIMARY KEY (librarian_id)
);
CREATE TABLE loaner (
loaner_id BIGINT NOT NULL AUTO_INCREMENT,
school_id VARCHAR(255),
email VARCHAR(255),
is_student BIT,
salutation VARCHAR(255),
first_name VARCHAR(255),
middle_name VARCHAR(255),
last_name VARCHAR(255),
father_name VARCHAR(255),
mother_name VARCHAR(255),
PRIMARY KEY (loaner_id)
);
CREATE TABLE loan (
loan_id BIGINT NOT NULL AUTO_INCREMENT,
book_id BIGINT,
copies INTEGER,
loaner_id BIGINT,
borrow_date DATE,
due_date DATE,
PRIMARY KEY (loan_id),
CONSTRAINT fk_loan_book FOREIGN KEY (book_id) REFERENCES book (book_id),
CONSTRAINT fk_loan_loaner FOREIGN KEY (loaner_id) REFERENCES loaner (loaner_id)
);
CREATE TABLE transaction (
trn_id BIGINT NOT NULL AUTO_INCREMENT,
trn_datetime DATETIME(6),
trn_type INTEGER,
librarian_id BIGINT,
loaner_id BIGINT,
PRIMARY KEY (trn_id),
CONSTRAINT fk_trn_librarian FOREIGN KEY (librarian_id) REFERENCES librarian (librarian_id),
CONSTRAINT fk_trn_loaner FOREIGN KEY (loaner_id) REFERENCES loaner (loaner_id)
);
CREATE TABLE trn_quantities (
trn_id BIGINT NOT NULL,
book_id BIGINT NOT NULL,
copies INTEGER,
PRIMARY KEY (trn_id , book_id),
CONSTRAINT fk_trnqty_trn FOREIGN KEY (trn_id) REFERENCES transaction (trn_id),
CONSTRAINT fk_trnqty_book FOREIGN KEY (book_id) REFERENCES book (book_id)
);
-- create user for login
INSERT INTO librarian (librarian_id,username,first_name,middle_name,last_name,email,password,role) VALUES
(1,"admin","BudLib Admin",NULL,NULL,"admin@localhost","$2a$10$Gitv.jdJOSpID30NmPEqn.IwH5CztayH4HbRUjxGDJKNM3DWCwMmy","0");