· 5 years ago · Oct 25, 2020, 01:20 PM
1
2----------------------------------------------------------------------------------------------------------
3 /*CREACION DEL MODELO DE DATOS INICIAL*/
4----------------------------------------------------------------------------------------------------------
5
6USE GD2C2020
7GO
8
9----------------------------------------------------------------------------------------------------------
10 /*CREACION DEL ESQUEMA*/
11
12--To-do: revisar si es necesario generar una validacion de existencia del schema antes de crearlo
13/*SIN VALIDACION
14CREATE SCHEMA DROPPING_TABLES --AUTHORIZATION gd
15GO
16*/
17
18/*CON VALIDACION*/
19IF NOT EXISTS (
20 SELECT schema_name
21 FROM information_schema.schemata
22 WHERE schema_name = 'DROPPING_TABLES' )
23 BEGIN
24 EXEC sp_executesql N'CREATE SCHEMA DROPPING_TABLES'
25 END
26 GO
27
28----------------------------------------------------------------------------------------------------------
29 /*CREACION DE LAS TABLAS*/
30
31--To-do: revisar si es necesario generar una validacion de existencia de las tablas antes de crearlas
32--To-do: revisar tipos de los campos
33
34CREATE TABLE DROPPING_TABLES.tipo_auto (
35 id DECIMAL(18,0) NOT NULL PRIMARY KEY,
36 descripcion NVARCHAR(255) NOT NULL
37)
38
39CREATE TABLE DROPPING_TABLES.tipo_transmision (
40 id DECIMAL(18,0) NOT NULL PRIMARY KEY,
41 descripcion NVARCHAR(255) NOT NULL
42)
43
44CREATE TABLE DROPPING_TABLES.tipo_caja (
45 id DECIMAL(18,0) NOT NULL PRIMARY KEY,
46 descripcion NVARCHAR(255) NOT NULL
47)
48
49CREATE TABLE DROPPING_TABLES.tipo_motor (
50 id DECIMAL(18,0) NOT NULL PRIMARY KEY,
51 descripcion NVARCHAR(255) DEFAULT NULL
52)
53
54CREATE TABLE DROPPING_TABLES.tipo_operacion (
55 tipo_operacion_id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
56 nombre NVARCHAR(30) NOT NULL
57)
58
59CREATE TABLE DROPPING_TABLES.modelo (
60 modelo_id DECIMAL(18,0) IDENTITY(1,1) NOT NULL PRIMARY KEY,
61 nombre NVARCHAR(255) NOT NULL,
62 potencia DECIMAL(18,0),
63 tipo_trans DECIMAL(18,0),
64 tipo_motor DECIMAL(18,0),
65 tipo_auto DECIMAL(18,0),
66 tipo_caja DECIMAL(18,0),
67 fabricante_id INT
68)
69
70CREATE TABLE DROPPING_TABLES.auto (
71 auto_id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
72 nro_chasis NVARCHAR(50),
73 nro_motor NVARCHAR(50),
74 patente NVARCHAR(50),
75 fecha_alta DATETIME2(3),
76 kilometraje DECIMAL(18,0),
77 modelo_id DECIMAL(18,0)
78)
79
80CREATE TABLE DROPPING_TABLES.operacion (
81 operacion_id DECIMAL(18,0) IDENTITY(1,1) NOT NULL PRIMARY KEY,
82 cliente_id INT,
83 sucursal_id INT,
84 tipo_operacion_id INT,
85 direccion_facturacion NVARCHAR(50),
86 fecha DATETIME
87)
88
89CREATE TABLE DROPPING_TABLES.sucursal (
90 id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
91 direccion NVARCHAR(255),
92 mail NVARCHAR(255),
93 telefono DECIMAL(18,0),
94 ciudad NVARCHAR(255),
95 habilitada_partes BIT
96)
97
98CREATE TABLE DROPPING_TABLES.cliente (
99 id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
100 apellido NVARCHAR(255),
101 nombre NVARCHAR(255),
102 direccion NVARCHAR(255),
103 dni DECIMAL(18,0),
104 fecha_nac DATETIME2(3),
105 mail NVARCHAR(255)
106)
107
108CREATE TABLE DROPPING_TABLES.fabricante (
109 fabricante_id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
110 nombre NVARCHAR(255) NOT NULL
111)
112
113CREATE TABLE DROPPING_TABLES.producto_operacion (
114 id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
115 operacion_id DECIMAL(18,0),
116 producto_id INT,
117 tipo_producto_id INT,
118 cantidad INT,
119 requeridas INT,
120 precio_unitario DECIMAL(18,0)
121)
122
123CREATE TABLE DROPPING_TABLES.autoparte (
124 autoparte_id DECIMAL(18,0) NOT NULL PRIMARY KEY,
125 descripcion NVARCHAR(30),
126 rubro NVARCHAR(30),
127 fabricante_id INT,
128 modelo_auto_id DECIMAL(18,0)
129)
130
131CREATE TABLE DROPPING_TABLES.stock (
132 stock_id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
133 sucursal_id INT,
134 producto_id INT,
135 tipo_producto_id INT,
136 cantidad INT
137)
138
139CREATE TABLE DROPPING_TABLES.tipo_producto (
140 id INT IDENTITY(1,1) NOT NULL PRIMARY KEY,
141 descripcion NVARCHAR(255) NOT NULL
142)
143
144
145/*********************************************CREACION DE FK's**************************************************/
146/*ALTER MODELO*/
147ALTER TABLE DROPPING_TABLES.modelo
148ADD FOREIGN KEY (tipo_trans) REFERENCES DROPPING_TABLES.tipo_transmision(id);
149ALTER TABLE DROPPING_TABLES.modelo
150ADD FOREIGN KEY (tipo_motor) REFERENCES DROPPING_TABLES.tipo_motor(id);
151ALTER TABLE DROPPING_TABLES.modelo
152ADD FOREIGN KEY (tipo_auto) REFERENCES DROPPING_TABLES.tipo_auto(id);
153ALTER TABLE DROPPING_TABLES.modelo
154ADD FOREIGN KEY (tipo_caja) REFERENCES DROPPING_TABLES.tipo_caja(id);
155ALTER TABLE DROPPING_TABLES.modelo
156ADD FOREIGN KEY (fabricante_id) REFERENCES DROPPING_TABLES.fabricante(fabricante_id);
157
158/*ALTER AUTO*/
159ALTER TABLE DROPPING_TABLES.Auto
160ADD FOREIGN KEY (modelo_id) REFERENCES DROPPING_TABLES.modelo(modelo_id);
161
162/*ALTER STOCK*/
163ALTER TABLE DROPPING_TABLES.stock
164ADD FOREIGN KEY (sucursal_id) REFERENCES DROPPING_TABLES.sucursal(id);
165ALTER TABLE DROPPING_TABLES.stock
166ADD FOREIGN KEY (tipo_producto_id) REFERENCES DROPPING_TABLES.tipo_producto(id);
167--DUDA: COMO PODEMOS HACER QUE LA FK DE PRODUCTO_ID ESTE ATADA A AUTO Y ADEMAS A AUTOPARTE??
168
169/*ALTER OPERACION*/
170ALTER TABLE DROPPING_TABLES.operacion
171ADD FOREIGN KEY (tipo_operacion_id) REFERENCES DROPPING_TABLES.tipo_operacion(tipo_operacion_id);
172ALTER TABLE DROPPING_TABLES.operacion
173ADD FOREIGN KEY (sucursal_id) REFERENCES DROPPING_TABLES.sucursal(id);
174ALTER TABLE DROPPING_TABLES.operacion
175ADD FOREIGN KEY (cliente_id) REFERENCES DROPPING_TABLES.cliente(id);
176
177/*ALTER PRODUCTO_OPERACION*/
178ALTER TABLE DROPPING_TABLES.producto_operacion
179ADD FOREIGN KEY (operacion_id) REFERENCES DROPPING_TABLES.operacion(operacion_id);
180ALTER TABLE DROPPING_TABLES.producto_operacion
181ADD FOREIGN KEY (tipo_producto_id) REFERENCES DROPPING_TABLES.tipo_producto(id);
182
183/*ALTER AUTOPARTE*/
184ALTER TABLE DROPPING_TABLES.autoparte
185ADD FOREIGN KEY (fabricante_id) REFERENCES DROPPING_TABLES.fabricante(fabricante_id);
186ALTER TABLE DROPPING_TABLES.autoparte
187ADD FOREIGN KEY (modelo_auto_id) REFERENCES DROPPING_TABLES.modelo(modelo_id);