domingo, 27 de septiembre de 2009

DDL FINAL

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,
Telefono CHAR(9),
PRIMARY KEY(ID_Persona)
)ENGINE=INNODB;

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

CREATE TABLE Cliente(
ID_Cliente CHAR(15) NOT NULL,
Tipo_Cliente CHAR(7),
PRIMARY KEY(ID_Cliente),
FOREIGN KEY(ID_Cliente) REFERENCES Persona(ID_Persona)
ON UPDATE CASCADE ON DELETE NO ACTION
)ENGINE=INNODB;

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

CREATE TABLE Usuario(
ID_Usuario VARCHAR(10) NOT NULL,
Contrasenia VARCHAR(32) NOT NULL,
ID_Empleado CHAR(15) NOT NULL,
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 NO ACTION,
UNIQUE(ID_Empleado)
)ENGINE=INNODB;

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

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

CREATE TABLE Proveedor(
Nombre_Empresa VARCHAR(30) NOT NULL,
Tipo_Producto VARCHAR(20),
Correo VARCHAR(30),
Direccion VARCHAR(150) NOT NULL,
Telefono CHAR(9) NOT NULL,
PRIMARY KEY(Nombre_Empresa)
)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 ON DELETE NO ACTION
)ENGINE=INNODB;

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

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

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

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

CREATE TABLE Cuentas_Cobrar(
Num_Documento INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15) NOT NULL,
ID_Cliente CHAR(15) NOT NULL,
ID_Factura INT NOT NULL,
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 NO ACTION,
FOREIGN KEY(ID_Cliente) REFERENCES Cliente(ID_Cliente)
ON UPDATE CASCADE ON DELETE NO ACTION,
FOREIGN KEY(ID_Factura) REFERENCES Factura(ID_Factura)
ON UPDATE CASCADE ON DELETE NO ACTION
)ENGINE=INNODB;

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

CREATE TABLE Inventario(
Correlativo INT NOT NULL AUTO_INCREMENT,
ID_Producto INT NOT NULL,
ID_Bodega INT NOT NULL,
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 ON DELETE NO ACTION,
FOREIGN KEY(ID_Bodega) REFERENCES Bodega(ID_Bodega)
ON UPDATE CASCADE ON DELETE NO ACTION
)ENGINE=INNODB;

No hay comentarios:

Publicar un comentario