-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlibrary_management_relational_schema (1).sql
More file actions
169 lines (149 loc) · 4.38 KB
/
library_management_relational_schema (1).sql
File metadata and controls
169 lines (149 loc) · 4.38 KB
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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
/*
Create tables for the library management database
This works for MySQL.
*/
CREATE TABLE category (
id INT,
category_name VARCHAR(100),
CONSTRAINT pk_category PRIMARY KEY (id)
);
CREATE TABLE book (
id INT,
title VARCHAR(500),
category_id INT,
edition VARCHAR(15),
copies_owned INT,
publisher_id INT,
author_id INT,
CONSTRAINT pk_book PRIMARY KEY (id),
CONSTRAINT fk_book_category FOREIGN KEY (category_id) REFERENCES category(id),
CONSTRAINT fk_book_publisher FOREIGN KEY (publisher_id) REFERENCES publisher(id),
CONSTRAINT fk_book_author FOREIGN KEY (author_id) REFERENCES author(id)
);
CREATE TABLE author (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
CONSTRAINT pk_author PRIMARY KEY (id)
);
CREATE TABLE book_author (
book_id INT,
author_id INT,
CONSTRAINT fk_book_author_book FOREIGN KEY (book_id) REFERENCES book(id),
CONSTRAINT fk_bookauthor_author FOREIGN KEY (author_id) REFERENCES author(id)
);
CREATE TABLE publisher (
id INT,
publication_year INT,
CONSTRAINT pk_publisher PRIMARY KEY (id)
);
CREATE TABLE member (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
joined_date DATE,
CONSTRAINT pk_member PRIMARY KEY (id)
);
CREATE TABLE magazine (
id INT,
magazine_name VARCHAR(100),
title VARCHAR(100),
issue VARCHAR(50),
editor_id INT,
contributor_id INT,
CONSTRAINT pk_magazine PRIMARY KEY (id),
CONSTRAINT fk_magazine_editor FOREIGN KEY (editor_id) REFERENCES editor(id),
CONSTRAINT fk_magazine_contributor FOREIGN KEY (contributor_id) REFERENCES contributor(id)
);
CREATE TABLE editor (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
CONSTRAINT pk_editor PRIMARY KEY (id)
);
CREATE TABLE contributor (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
CONSTRAINT pk_contributor PRIMARY KEY (id)
);
CREATE TABLE magazine_contributor_editor (
magazine_id INT,
editor_id INT,
contributor_id INT,
CONSTRAINT fk_magazine_editor FOREIGN KEY (editor_id) REFERENCES editor(id),
CONSTRAINT fk_magazine_contributor FOREIGN KEY (contributor_id) REFERENCES contributor(id)
);
CREATE TABLE journal_articles (
id INT,
title VARCHAR(100),
issue VARCHAR(50),
author_id INT,
editor_id INT,
publisher_id INT,
CONSTRAINT pk_journal_articles PRIMARY KEY (id),
CONSTRAINT fk_journal_editor FOREIGN KEY (editor_id) REFERENCES journal_editor(id),
CONSTRAINT fk_journal_publisher FOREIGN KEY (publisher_id) REFERENCES journal_publisher(id),
CONSTRAINT fk_journal_author FOREIGN KEY (author_id) REFERENCES j_author(id)
);
CREATE TABLE journal_editor (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
CONSTRAINT pk_editor PRIMARY KEY (id)
);
CREATE TABLE publisher_editor (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
publication_date DATE,
CONSTRAINT pk_publisher PRIMARY KEY (id)
);
CREATE TABLE j_author (
id INT,
first_name VARCHAR(300),
last_name VARCHAR(300),
CONSTRAINT pk_author PRIMARY KEY (id)
);
CREATE TABLE journal_author (
journal_id INT,
author_id INT,
CONSTRAINT fk_journal FOREIGN KEY (journal_id) REFERENCES journal(id),
CONSTRAINT fk_journalauthor FOREIGN KEY (j_author) REFERENCES j_author(id)
);
CREATE TABLE fine_payment (
id INT,
member_id INT,
payment_date DATE,
payment_amount INT,
CONSTRAINT pk_fine_payment PRIMARY KEY (id),
CONSTRAINT fk_finepay_member FOREIGN KEY (member_id) REFERENCES member(id)
);
CREATE TABLE loan (
id INT,
book_id INT,
member_id INT,
magazine_id INT,
journal_articles_id INT,
loan_date DATE,
returned_date DATE,
CONSTRAINT pk_loan PRIMARY KEY (id),
CONSTRAINT fk_loan_book FOREIGN KEY (book_id) REFERENCES book(id),
CONSTRAINT fk_loan_member FOREIGN KEY (member_id) REFERENCES member(id),
CONSTRAINT fk_loan_magazine FOREIGN KEY (magazine_id) REFERENCES magazine(id),
CONSTRAINT fk_loan_journal FOREIGN KEY (journal_articles_id) REFERENCES journal_articles(id)
);
CREATE TABLE fine (
id INT,
book_id INT,
magazine_id INT,
journal_articles_id INT,
loan_id INT,
fine_date DATE,
fine_amount INT,
CONSTRAINT pk_fine PRIMARY KEY (id),
CONSTRAINT fk_fine_book FOREIGN KEY (book_id) REFERENCES book(id),
CONSTRAINT fk_fine_loan FOREIGN KEY (loan_id) REFERENCES loan(id),
CONSTRAINT fk_loan_magazine FOREIGN KEY (magazine_id) REFERENCES magazine(id),
CONSTRAINT fk_loan_journal FOREIGN KEY (journal_articles_id) REFERENCES journal_articles(id)
);