jueves, 3 de septiembre de 2009

DDL Version 1.02



CREATE TABLE Persona(
ID_Persona CHAR(15) NOT NULL,
Primer_Nombre VARCHAR(20) NOT NULL,
Segundo_Nombre VARCHAR(20),
Primer_Apellido VARCHAR(20) NOT NULL,
Segundo_Apellido VARCHAR(20),
Direccion VARCHAR(150),
Sexo CHAR(1) NOT NULL,
PRIMARY KEY(ID_Persona),
CHECK(Sexo IN('M','F'))
)ENGINE=INNODB;


CREATE TABLE Empleado(
ID_Empleado CHAR(15),
Puesto VARCHAR(15),
PRIMARY KEY(ID_Empleado),
FOREIGN KEY(ID_Empleado) REFERENCES Persona(ID_Persona)
ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Cliente(
ID_Cliente CHAR(15),
Tipo_Cliente CHAR(7),
PRIMARY KEY(ID_Cliente),
FOREIGN KEY(ID_Cliente) REFERENCES Persona(ID_Persona)
ON UPDATE CASCADE,
CHECK(Tipo_Cliente IN('Credito','Contado'))
)ENGINE=INNODB;


CREATE TABLE Modulo(
ID_Modulo INT NOT NULL,
Descripcion VARCHAR(50),
PRIMARY KEY(ID_Modulo)
)ENGINE=INNODB;


CREATE TABLE Usuario(
ID_Usuario VARCHAR(10) NOT NULL,
Contrasenia VARCHAR(15) NOT NULL,
ID_Empleado CHAR(15),
Pregunta_Secreta VARCHAR(50) NOT NULL,
Respuesta_Secreta VARCHAR(50) NOT NULL,
Ultimo_Ingreso TIMESTAMP NOT NULL,
PRIMARY KEY(ID_Usuario),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL
)ENGINE=INNODB;


CREATE TABLE Accesa(
ID_Usuario VARCHAR(10),
ID_Modulo INT,
PRIMARY KEY(ID_Usuario, ID_Modulo),
FOREIGN KEY(ID_Usuario) REFERENCES Usuario(ID_Usuario)
ON UPDATE CASCADE,
FOREIGN KEY(ID_Modulo) REFERENCES Modulo(ID_Modulo)
ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Pedido(
ID_Pedido INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15),
ID_Cliente CHAR(15),
Fecha_Pedido TIMESTAMP,
Descripcion VARCHAR(50),
Total FLOAT,
PRIMARY KEY(ID_Pedido),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY(ID_Cliente) REFERENCES Cliente(ID_Cliente)
ON UPDATE CASCADE ON DELETE SET NULL
)ENGINE=INNODB;


CREATE TABLE Proveedor(
Nombre_Empresa VARCHAR(30) NOT NULL,
Tipo_Producto VARCHAR(20),
Correo VARCHAR(30),
Direccion VARCHAR(150),
PRIMARY KEY(Nombre_Empresa)
)ENGINE=INNODB;


CREATE TABLE Telefono_Persona(
ID_Persona CHAR(15),
Telefono CHAR(10) NOT NULL,
PRIMARY KEY(ID_Persona, Telefono),
FOREIGN KEY(ID_Persona) REFERENCES Persona(ID_Persona)
ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Telefono_Proveedor(
Nombre_Empresa VARCHAR(30),
Telefono CHAR(10) NOT NULL,
PRIMARY KEY(Nombre_Empresa, Telefono),
FOREIGN KEY(Nombre_Empresa) REFERENCES Proveedor(Nombre_Empresa)
ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Producto(
ID_Producto INT NOT NULL,
Nombre_Producto VARCHAR(20) NOT NULL,
Nombre_Empresa VARCHAR(30) NOT NULL,
Costo_Unitario FLOAT NOT NULL,
Precio_Unitario FLOAT NOT NULL,
Unidad_Medida VARCHAR(15) NOT NULL,
PRIMARY KEY(ID_Producto),
FOREIGN KEY(Nombre_Empresa) REFERENCES Proveedor(Nombre_Empresa)
ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Bodega(
ID_Bodega INT NOT NULL,
Descripcion VARCHAR(50),
PRIMARY KEY(ID_Bodega)
)ENGINE=INNODB;


CREATE TABLE Compra(
ID_Compra INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15),
Fecha_Compra TIMESTAMP,
Total FLOAT,
PRIMARY KEY(ID_Compra),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL
)ENGINE=INNODB;


CREATE TABLE Adquiere(
ID_Compra INT,
ID_Producto INT,
Cantidad INT NOT NULL,
PRIMARY KEY(ID_Compra, ID_Producto),
FOREIGN KEY(ID_Compra) REFERENCES Compra(ID_Compra) ON UPDATE CASCADE,
FOREIGN KEY(ID_Producto) REFERENCES Producto(ID_Producto) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE De(
ID_Pedido INT,
ID_Producto INT,
Cantidad INT NOT NULL,
PRIMARY KEY(ID_Pedido, ID_Producto),
FOREIGN KEY(ID_Pedido) REFERENCES Pedido(ID_Pedido) ON UPDATE CASCADE,
FOREIGN KEY(ID_Producto) REFERENCES Producto(ID_Producto) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Factura(
ID_Factura INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15),
ID_Pedido INT,
Fecha_Factura TIMESTAMP NOT NULL,
ISV FLOAT NOT NULL,
Total FLOAT NOT NULL,
PRIMARY KEY(ID_Factura),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY(ID_Pedido) REFERENCES Pedido(ID_Pedido) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Existe_En(
ID_Factura INT,
ID_Producto INT,
Cantidad INT NOT NULL,
SubTotal FLOAT,
PRIMARY KEY(ID_Factura, ID_Producto),
FOREIGN KEY(ID_Factura) REFERENCES Factura(ID_Factura) ON UPDATE CASCADE,
FOREIGN KEY(ID_Producto) REFERENCES Producto(ID_Producto) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Cuentas_Cobrar(
Num_Documento INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15),
ID_Cliente CHAR(15),
ID_Factura INT,
Monto_Pagado FLOAT,
Monto_Pendiente FLOAT,
Fecha_Limite TIMESTAMP NOT NULL,
PRIMARY KEY(Num_Documento),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY(ID_Cliente) REFERENCES Cliente(ID_Cliente)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY(ID_Factura) REFERENCES Factura(ID_Factura) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Cuentas_Pagar(
Num_Documento INT NOT NULL AUTO_INCREMENT,
Nombre_Empresa VARCHAR(30),
ID_Empleado CHAR(15),
ID_Compra INT,
Monto_Pagado FLOAT,
Monto_Pendiente FLOAT,
Fecha_Limite TIMESTAMP NOT NULL,
PRIMARY KEY(Num_Documento),
FOREIGN KEY(Nombre_Empresa) REFERENCES Proveedor(Nombre_Empresa),
FOREIGN KEY(ID_Empleado) REFERENCES Empleado(ID_Empleado)
ON UPDATE CASCADE ON DELETE SET NULL,
FOREIGN KEY(ID_Compra) REFERENCES Compra(ID_Compra) ON UPDATE CASCADE
)ENGINE=INNODB;


CREATE TABLE Inventario(
Correlativo INT NOT NULL AUTO_INCREMENT,
ID_Producto INT,
ID_Bodega INT,
Fecha_Inventario TIMESTAMP NOT NULL,
Cantidad_Inicial INT,
Cantidad_Ingreso INT,
Cantidad_Salida INT,
Cantidad_Final INT,
Tipo_Operacion VARCHAR(15),
PRIMARY KEY(Correlativo, ID_Producto),
FOREIGN KEY(ID_Producto) REFERENCES Producto(ID_Producto) ON UPDATE CASCADE,
FOREIGN KEY(ID_Bodega) REFERENCES Bodega(ID_Bodega) ON UPDATE CASCADE
)ENGINE=INNODB;

No hay comentarios:

Publicar un comentario