· 8 years ago · Dec 03, 2017, 09:52 PM
1SET FOREIGN_KEY_CHECKS=0;
2DROP TABLE IF EXISTS Cliente;
3create table Cliente
4(
5 idCliente int auto_increment
6 primary key,
7 nombreCliente varchar(128) not null,
8 apellidoCliente varchar(128) not null,
9 email varchar(20) null,
10 telefono varchar(13) null
11)
12;
13DROP TABLE IF EXISTS Conductor;
14create table Conductor
15(
16 id int auto_increment
17 primary key,
18 nombreConductor varchar(128) not null,
19 apellidoConductor varchar(128) not null,
20 fechaNacimientoConductor date not null,
21 numeroLincenciaConducir varchar(128) not null,
22 fechaCaducidad date not null,
23 trabajando tinyint(1) default '1' not null
24)
25;
26DROP TABLE IF EXISTS Estado;
27create table Estado
28(
29 id int auto_increment
30 primary key,
31 nombreEstado varchar(128) not null,
32 constraint status_ak_1
33 unique (nombreEstado)
34)
35;
36DROP TABLE IF EXISTS EstadoViajeTaxi;
37create table EstadoViajeTaxi
38(
39 id int auto_increment
40 primary key,
41 idViajeTaxi int not null,
42 idEstado int not null,
43 tiempoEstado timestamp default CURRENT_TIMESTAMP not null,
44 idCliente int null,
45 idTurno int null,
46 detalleEstado text null,
47 constraint cab_ride_status_status
48 foreign key (idEstado) references Estado (id),
49 constraint cab_ride_status_cc_agent
50 foreign key (idCliente) references Cliente (idCliente)
51)
52;
53
54create index cab_ride_status_cab_ride
55 on EstadoViajeTaxi (idViajeTaxi)
56;
57
58create index cab_ride_status_cc_agent
59 on EstadoViajeTaxi (idCliente)
60;
61
62create index cab_ride_status_shift
63 on EstadoViajeTaxi (idTurno)
64;
65
66create index cab_ride_status_status
67 on EstadoViajeTaxi (idEstado)
68;
69DROP TABLE IF EXISTS ModeloCarro;
70create table ModeloCarro
71(
72 id int auto_increment
73 primary key,
74 nombreModelo varchar(64) not null,
75 descripcionModelo text not null,
76 constraint car_model_ak_1
77 unique (nombreModelo)
78)
79;
80DROP TABLE IF EXISTS TipoPago;
81create table TipoPago
82(
83 id int auto_increment
84 primary key,
85 nombreTipoPago varchar(128) not null,
86 constraint payment_type_ak_1
87 unique (nombreTipoPago)
88)
89;
90DROP TABLE IF EXISTS Turno;
91create table Turno
92(
93 id int auto_increment
94 primary key,
95 idConductor int not null,
96 idUnidad int not null,
97 horaInicioTurno timestamp null,
98 horaFinTurno timestamp null,
99 constraint drives_driver
100 foreign key (idConductor) references Conductor (id)
101)
102;
103
104create index drives_cab
105 on Turno (idUnidad)
106;
107
108create index drives_driver
109 on Turno (idConductor)
110;
111
112alter table EstadoViajeTaxi
113 add constraint cab_ride_status_shift
114 foreign key (idTurno) references Turno (id)
115;
116DROP TABLE IF EXISTS Unidad;
117create table Unidad
118(
119 id int auto_increment
120 primary key,
121 placa varchar(32) not null,
122 idModeloCarro int not null,
123 annoFabrica int not null,
124 idConductor int null,
125 activo tinyint(1) default '1' not null,
126 constraint cab_ak_1
127 unique (placa),
128 constraint cab_car_model
129 foreign key (idModeloCarro) references ModeloCarro (id),
130 constraint cab_driver
131 foreign key (idConductor) references Conductor (id)
132)
133;
134
135create index cab_car_model
136 on Unidad (idModeloCarro)
137;
138
139create index cab_driver
140 on Unidad (idConductor)
141;
142
143alter table Turno
144 add constraint drives_cab
145 foreign key (idUnidad) references Unidad (id)
146;
147DROP TABLE IF EXISTS ViajeTaxi;
148create table ViajeTaxi
149(
150 id int auto_increment
151 primary key,
152 idTurno int null,
153 tiempoInicioViaje timestamp null,
154 tiempoFinViaje timestamp null,
155 direccionInicialViaje text null,
156 puntoInicialGPSViaje text null,
157 direccionDestinoViaje text null,
158 puntoFinalGPSViaje text null,
159 cancelado tinyint(1) default '0' not null,
160 idPago int null,
161 precio decimal(10,2) null,
162 constraint cab_ride_shift
163 foreign key (idTurno) references Turno (id),
164 constraint cab_ride_payment_type
165 foreign key (idPago) references TipoPago (id)
166)
167;
168
169create index cab_ride_payment_type
170 on ViajeTaxi (idPago)
171;
172
173create index cab_ride_shift
174 on ViajeTaxi (idTurno)
175;
176
177alter table EstadoViajeTaxi
178 add constraint cab_ride_status_cab_ride
179 foreign key (idViajeTaxi) references ViajeTaxi (id)
180;
181
182create or replace view conductores as
183SELECT
184 `taxi_feik`.`Conductor`.`id` AS `id`,
185 `taxi_feik`.`Conductor`.`nombreConductor` AS `nombreConductor`,
186 `taxi_feik`.`Conductor`.`apellidoConductor` AS `apellidoConductor`,
187 `taxi_feik`.`Unidad`.`placa` AS `placa`
188 FROM (`taxi_feik`.`Conductor`
189 JOIN `taxi_feik`.`Unidad` ON ((`taxi_feik`.`Unidad`.`idConductor` = `taxi_feik`.`Conductor`.`id`)));
190
191create or replace view viajes as
192SELECT
193 `taxi_feik`.`Cliente`.`idCliente` AS `idCliente`,
194 `taxi_feik`.`Cliente`.`nombreCliente` AS `nombreCliente`,
195 `taxi_feik`.`ViajeTaxi`.`direccionDestinoViaje` AS `direccionDestinoViaje`,
196 `taxi_feik`.`ViajeTaxi`.`precio` AS `precio`
197 FROM ((`taxi_feik`.`Cliente`
198 JOIN `taxi_feik`.`EstadoViajeTaxi`
199 ON ((`taxi_feik`.`Cliente`.`idCliente` = `taxi_feik`.`EstadoViajeTaxi`.`idCliente`))) JOIN `taxi_feik`.`ViajeTaxi`
200 ON ((`taxi_feik`.`EstadoViajeTaxi`.`idViajeTaxi` = `taxi_feik`.`ViajeTaxi`.`id`)));
201
202
203SET FOREIGN_KEY_CHECKS=1;