-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCOMP2350_S2_2023_Assignment3_DB_Creation.sql
More file actions
89 lines (78 loc) · 2.59 KB
/
COMP2350_S2_2023_Assignment3_DB_Creation.sql
File metadata and controls
89 lines (78 loc) · 2.59 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
DROP TABLE IF EXISTS Borrowedby, Holding, Authoredby, Author, Book, Publisher, Member, Branch;
/*Table structure for table `branch` */
CREATE TABLE Branch (
BranchID INT NOT NULL,
BranchSuburb varchar(255) NOT NULL,
BranchState char(3) NOT NULL,
PRIMARY KEY (BranchID)
);
CREATE TABLE Member (
MemberID INT NOT NULL,
MemberStatus char(9) DEFAULT 'REGULAR',
MemberName varchar(255) NOT NULL,
MemberAddress varchar(255) NOT NULL,
MemberSuburb varchar(25) NOT NULL,
MemberState char(3) NOT NULL,
MemberExpDate DATE,
MemberPhone varchar(10),
PRIMARY KEY (`MemberID`)
);
CREATE TABLE Publisher (
PublisherID INT NOT NULL,
PublisherName varchar(255) NOT NULL,
PublisherAddress varchar(255) DEFAULT NULL,
PRIMARY KEY (PublisherID)
);
CREATE TABLE Book (
BookID INT NOT NULL,
BookTitle varchar(255) NOT NULL,
PublisherID INT NOT NULL,
PublishedYear INT4,
Price Numeric(5,2) NOT NULL,
PRIMARY KEY (BookID),
KEY PublisherID (PublisherID),
CONSTRAINT publisher_fk_1 FOREIGN KEY (PublisherID) REFERENCES Publisher (PublisherID) ON DELETE RESTRICT
);
CREATE TABLE Author (
AuthorID INT NOT NULL,
AuthorName varchar(255) NOT NULL,
AuthorAddress varchar(255) NOT NULL,
PRIMARY KEY (AuthorID)
);
CREATE TABLE Authoredby (
BookID INT NOT NULL,
AuthorID INT NOT NULL,
PRIMARY KEY (BookID,AuthorID),
KEY BookID (BookID),
KEY AuthorID (AuthorID),
CONSTRAINT book_fk_1 FOREIGN KEY (BookID) REFERENCES Book (BookID) ON DELETE RESTRICT,
CONSTRAINT author_fk_1 FOREIGN KEY (AuthorID) REFERENCES Author (AuthorID) ON DELETE RESTRICT
);
CREATE TABLE Holding (
BranchID INT NOT NULL,
BookID INT NOT NULL,
InStock INT DEFAULT 1,
OnLoan INT DEFAULT 0,
PRIMARY KEY (BranchID, BookID),
KEY BookID (BookID),
KEY BranchID (BranchID),
CONSTRAINT holding_cc_1 CHECK(InStock>=OnLoan),
CONSTRAINT book_fk_2 FOREIGN KEY (BookID) REFERENCES Book (BookID) ON DELETE RESTRICT,
CONSTRAINT branch_fk_1 FOREIGN KEY (BranchID) REFERENCES Branch (BranchID) ON DELETE RESTRICT
);
CREATE TABLE Borrowedby (
BookIssueID INT UNSIGNED NOT NULL AUTO_INCREMENT,
BranchID INT NOT NULL,
BookID INT NOT NULL,
MemberID INT NOT NULL,
DateBorrowed DATE,
DateReturned DATE DEFAULT NULL,
ReturnDueDate DATE,
PRIMARY KEY (BookIssueID),
KEY BookID (BookID),
KEY BranchID (BranchID),
KEY MemberID (MemberID),
CONSTRAINT borrowedby_cc_1 CHECK(DateBorrowed<ReturnDueDate),
CONSTRAINT holding_fk_1 FOREIGN KEY (BookID,BranchID) REFERENCES Holding (BookID,BranchID) ON DELETE RESTRICT,
CONSTRAINT member_fk_1 FOREIGN KEY (MemberID) REFERENCES Member (MemberID) ON DELETE RESTRICT
) ;