· 6 years ago · May 08, 2019, 11:06 PM
1DROP database IF EXISTS imodata;
2
3CREATE DATABASE imodata;
4
5USE imodata;
6
7CREATE TABLE pais (
8 id tinyint NOT NULL,
9 nome varchar(50) NOT NULL,
10 PRIMARY KEY (id),
11 UNIQUE KEY nome_UNIQUE (nome)
12);
13
14CREATE TABLE estado (
15 id int(4) NOT NULL AUTO_INCREMENT,
16 nome varchar(50) NOT NULL,
17 paisId tinyint NOT NULL,
18 PRIMARY KEY (id),
19 CONSTRAINT pais_estado FOREIGN KEY (paisId) REFERENCES pais (id) ON DELETE NO ACTION ON UPDATE NO ACTION
20);
21
22CREATE TABLE cidade (
23 id int(4) NOT NULL AUTO_INCREMENT,
24 nome varchar(50) NOT NULL,
25 estadoId int(4) NOT NULL,
26 PRIMARY KEY (id),
27 KEY estadoId (estadoId),
28 CONSTRAINT cidade_ibfk_1 FOREIGN KEY (estadoId) REFERENCES estado (id)
29);
30
31CREATE TABLE bairro (
32 id int(4) NOT NULL AUTO_INCREMENT,
33 nome varchar(50) NOT NULL,
34 cidadeId int(4) NOT NULL,
35 PRIMARY KEY (id),
36 KEY cidadeId (cidadeId),
37 CONSTRAINT bairro_ibfk_1 FOREIGN KEY (cidadeId) REFERENCES cidade (id)
38);
39
40CREATE TABLE imobiliaria (
41 id int(4) NOT NULL AUTO_INCREMENT,
42 nome varchar(45) NOT NULL,
43 site varchar(45) DEFAULT NULL,
44 portal tinyint NOT NULL DEFAULT 0,
45 codigo varchar(50) NOT NULL,
46 ativo tinyint NOT NULL DEFAULT 1,
47 PRIMARY KEY (id),
48 UNIQUE KEY codigo_UNIQUE (codigo)
49);
50
51CREATE TABLE utilizador (
52 id int(4) NOT NULL AUTO_INCREMENT,
53 email varchar(100) NOT NULL,
54 telefone varchar(16) NOT NULL,
55 nome varchar(30) NOT NULL,
56 sobrenome varchar(45) NOT NULL,
57 imobiliariaId int(4) NOT NULL,
58 PRIMARY KEY (id),
59 UNIQUE KEY email_UNIQUE (email),
60 CONSTRAINT utilizador_imobiliaria FOREIGN KEY (imobiliariaId) REFERENCES imobiliaria (id) ON DELETE NO ACTION ON UPDATE NO ACTION
61);
62
63CREATE TABLE tipoimovel (
64 id tinyint NOT NULL,
65 nome varchar(15) NOT NULL,
66 PRIMARY KEY (id),
67 UNIQUE KEY nome_UNIQUE (nome)
68);
69
70CREATE TABLE estadoimovel (
71 id tinyint NOT NULL,
72 nome varchar(20) NOT NULL,
73 PRIMARY KEY (id),
74 UNIQUE KEY nome_UNIQUE (nome)
75);
76
77CREATE TABLE estadonegociacao (
78 id tinyint NOT NULL,
79 nome varchar(20) NOT NULL,
80 PRIMARY KEY (id),
81 UNIQUE KEY nome_UNIQUE (nome)
82);
83
84CREATE TABLE caracteristica (
85 id tinyint NOT NULL,
86 nome varchar(20) NOT NULL,
87 icone varchar(30) NOT NULL,
88 PRIMARY KEY (id),
89 UNIQUE KEY nome_UNIQUE (nome)
90);
91
92CREATE TABLE tags (
93 id int(4) NOT NULL,
94 nome varchar(20) NOT NULL,
95 PRIMARY KEY (id),
96 UNIQUE KEY nome_UNIQUE (nome)
97);
98
99CREATE TABLE imovel (
100 id int(4) NOT NULL,
101 estadoImovelId tinyint NOT NULL,
102 tipoImovelId tinyint NOT NULL,
103 bairroId int(4) NOT NULL,
104 PRIMARY KEY (id),
105 CONSTRAINT imovel_bairro FOREIGN KEY (bairroId) REFERENCES bairro (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
106 CONSTRAINT imovel_estadoImovel FOREIGN KEY (estadoImovelId) REFERENCES estadoimovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
107 CONSTRAINT imovel_tipoImovel FOREIGN KEY (tipoImovelId) REFERENCES tipoimovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION
108);
109
110CREATE TABLE caracteristicasimovel (
111 imovelId int(4) NOT NULL,
112 caracteristicaId tinyint NOT NULL,
113 valor varchar(45) NOT NULL,
114 PRIMARY KEY (imovelId,caracteristicaId),
115 CONSTRAINT caracteristicasImovel_caracteristica FOREIGN KEY (caracteristicaId) REFERENCES caracteristica (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
116 CONSTRAINT caracteristicasImovel_imovel FOREIGN KEY (imovelId) REFERENCES imovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION
117);
118
119CREATE TABLE tagsimovel (
120 imovelId int(4) NOT NULL,
121 tagId int(4) NOT NULL,
122 PRIMARY KEY (imovelId,tagId),
123 CONSTRAINT tagsImovel_imovel FOREIGN KEY (imovelId) REFERENCES imovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
124 CONSTRAINT tagsImovel_tags FOREIGN KEY (tagId) REFERENCES tags (id) ON DELETE NO ACTION ON UPDATE NO ACTION
125);
126
127CREATE TABLE anuncio (
128 id int(4) NOT NULL AUTO_INCREMENT,
129 valor decimal(9,2) NOT NULL,
130 descricao longtext NOT NULL,
131 ativo tinyint NOT NULL DEFAULT 1,
132 url varchar(255) NOT NULL,
133 referencia varchar(50) DEFAULT NULL,
134 imovelId int(4) NOT NULL,
135 estadoNegociacaoId tinyint NOT NULL,
136 imobiliariaId int(4) NOT NULL,
137 tipoImovelId tinyint NOT NULL,
138 PRIMARY KEY (id),
139 CONSTRAINT anuncio_estadoNegociacao FOREIGN KEY (estadoNegociacaoId) REFERENCES estadonegociacao (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
140 CONSTRAINT anuncio_imobiliaria FOREIGN KEY (imobiliariaId) REFERENCES imobiliaria (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
141 CONSTRAINT anuncio_imovel FOREIGN KEY (imovelId) REFERENCES imovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
142 CONSTRAINT anuncio_tipoImovel FOREIGN KEY (tipoImovelId) REFERENCES tipoimovel (id) ON DELETE NO ACTION ON UPDATE NO ACTION
143);
144
145CREATE TABLE estadonegociacaoanuncio (
146 anuncioId int(4) NOT NULL,
147 estadonegociacaoId tinyint NOT NULL,
148 data datetime NOT NULL,
149 PRIMARY KEY (anuncioId,estadonegociacaoId),
150 CONSTRAINT estadoNegociacaoAnuncio_anuncio FOREIGN KEY (anuncioId) REFERENCES anuncio (id) ON DELETE NO ACTION ON UPDATE NO ACTION,
151 CONSTRAINT estadoNegociacaoAnuncio_estadoNegociacao FOREIGN KEY (estadonegociacaoId) REFERENCES estadonegociacao (id) ON DELETE NO ACTION ON UPDATE NO ACTION
152);
153
154CREATE TABLE historicovaloranuncio (
155 id int(4) NOT NULL AUTO_INCREMENT,
156 anuncioId int(4) NOT NULL,
157 data datetime NOT NULL,
158 valor decimal(9,2) NOT NULL,
159 PRIMARY KEY (id),
160 CONSTRAINT historicoValorAnuncio_anuncio FOREIGN KEY (anuncioId) REFERENCES anuncio (id) ON DELETE NO ACTION ON UPDATE NO ACTION
161);
162
163CREATE TABLE foto (
164 id int(4) NOT NULL AUTO_INCREMENT,
165 anuncioId int(4) NOT NULL,
166 url varchar(255) NOT NULL,
167 PRIMARY KEY (id),
168 CONSTRAINT foto_anuncio FOREIGN KEY (anuncioId) REFERENCES anuncio (id) ON DELETE NO ACTION ON UPDATE NO ACTION
169);