-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathschema.sql
More file actions
51 lines (51 loc) · 1.25 KB
/
schema.sql
File metadata and controls
51 lines (51 loc) · 1.25 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
CREATE TABLE
`books` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`author_id` INT,
`publication_date` YEAR,
`isbn` CHAR(13) NOT NULL,
`genre` INT NOT NULL,
`description` TEXT,
PRIMARY KEY (`id`),
FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`),
FOREIGN KEY (`genre`) REFERENCES `genres` (`id`),
INDEX `idx_author_id` (`author_id`),
INDEX `idx_isbn` (`genre`)
)
CREATE TABLE
`authors` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(255),
`birth_date` YEAR,
`nationality` VARCHAR(64),
PRIMARY KEY (`id`)
)
CREATE TABLE
`genres` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(64),
`description` TEXT,
PRIMARY KEY (`id`)
)
CREATE TABLE
`members` (
`id` INT AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL UNIQUE,
`phone` VARCHAR(20) NOT NULL UNIQUE,
`address` VARCHAR(255),
`member_status` ENUM ('Active', 'Inactive', 'Suspended', 'Pending') NOT NULL,
PRIMARY KEY (`id`)
)
CREATE TABLE
`loans` (
`id` INT AUTO_INCREMENT,
`book_id` INT,
`member_id` INT PRIMARY KEY (`id`),
`loan_date` DATE NOT NULL,
`due_date` DATE NOT NULL,
`return_date` DATE NOT NULL,
FOREIGN KEY (`book_id`) REFERENCES `books` (`id`),
FOREIGN KEY (`member_id`) REFERENCES `members` (`id`),
)