-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbiblioteca.sql
126 lines (114 loc) · 2.81 KB
/
biblioteca.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
113
114
115
116
117
118
119
120
121
122
123
124
125
126
CREATE DATABASE biblioteca
CREATE TABLE Emprestimo (
id INT NOT NULL IDENTITY,
DataSaida DATE NOT NULL,
DataPrevistaEntrega DATE NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Genero (
id INT NOT NULL IDENTITY,
Nome VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Idioma (
id INT NOT NULL IDENTITY,
Nome VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Editora (
id INT NOT NULL IDENTITY,
Nome VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Autor (
id INT NOT NULL IDENTITY,
Nome VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Configuracao (
id INT NOT NULL IDENTITY,
QtdDiasEmprestimo INT NOT NULL,
ValorDiariaAtraso FLOAT NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE Pessoa (
id INT NOT NULL IDENTITY,
idPessoa INT NOT NULL,
Nome VARCHAR(50) NOT NULL,
PRIMARY KEY(id),
INDEX Pessoa_FKIndex1(idPessoa),
FOREIGN KEY(idPessoa)
REFERENCES Emprestimo(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE Livro (
id INT NOT NULL IDENTITY,
idIdioma INT NOT NULL,
idGenero INT NOT NULL,
idEditora INT NOT NULL,
ISBN VARCHAR(20) NOT NULL,
Nome VARCHAR(50) NOT NULL,
Descricao VARCHAR(255) NULL,
Edicao INT NOT NULL,
QtdPaginas INT NOT NULL,
PRIMARY KEY(id),
INDEX Livro_FKIndex1(idGenero),
INDEX Livro_FKIndex2(idEditora),
INDEX Livro_FKIndex3(idIdioma),
FOREIGN KEY(idGenero)
REFERENCES Genero(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(idEditora)
REFERENCES Editora(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(idIdioma)
REFERENCES Idioma(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE LivroEmprestado (
idEmprestimo INT NOT NULL,
idLivro INT NOT NULL,
DataEntrega DATE NULL,
DiasAtraso INT NULL,
ValorMulta FLOAT NULL,
ValorPago FLOAT NULL,
PRIMARY KEY(idEmprestimo, idLivro),
INDEX Emprestimo_has_Livro_FKIndex1(idEmprestimo),
INDEX Emprestimo_has_Livro_FKIndex2(idLivro),
FOREIGN KEY(idEmprestimo)
REFERENCES Emprestimo(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(idLivro)
REFERENCES Livro(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE AutorLivro (
idLivro INT NOT NULL,
idAutor INT NOT NULL,
PRIMARY KEY(idLivro, idAutor),
INDEX Livro_has_Autor_FKIndex1(idLivro),
INDEX Livro_has_Autor_FKIndex2(idAutor),
FOREIGN KEY(idLivro)
REFERENCES Livro(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
FOREIGN KEY(idAutor)
REFERENCES Autor(id)
ON DELETE NO ACTION
ON UPDATE NO ACTION
);
CREATE TABLE Usuario (
id INT NOT NULL IDENTITY,
Nome VARCHAR(50) NOT NULL,
Email VARCHAR(50) NOT NULL,
Tipo VARCHAR(50) NOT NULL,
Senha VARCHAR(50) NOT NULL,
PRIMARY KEY(id)
);
INSERT INTO Usuario VALUES ('ADM', '[email protected]', 'ADM', 'ADM');