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;

MAPEO FINAL

ER FINAL

miƩrcoles, 16 de septiembre de 2009

DDL Version 2.0

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)
)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(15) 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,
Descripcion VARCHAR(50),
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,
PRIMARY KEY(Nombre_Empresa)
)ENGINE=INNODB;

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

CREATE TABLE Telefono_Proveedor(
Nombre_Empresa VARCHAR(30) NOT NULL,
Telefono CHAR(9) NOT NULL,
PRIMARY KEY(Nombre_Empresa, Telefono),
FOREIGN KEY(Nombre_Empresa) REFERENCES Proveedor(Nombre_Empresa)
ON UPDATE CASCADE ON DELETE NO ACTION
)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,
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
)ENGINE=INNODB;

CREATE TABLE Adquiere(
ID_Compra INT NOT NULL,
ID_Producto INT NOT NULL,
Cantidad INT NOT NULL,
PRIMARY KEY(ID_Compra, ID_Producto),
FOREIGN KEY(ID_Compra) REFERENCES Compra(ID_Compra)
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 Existe_En(
ID_Factura INT NOT NULL,
ID_Producto INT NOT NULL,
Cantidad INT NOT NULL,
SubTotal FLOAT,
PRIMARY KEY(ID_Factura, ID_Producto),
FOREIGN KEY(ID_Factura) REFERENCES Factura(ID_Factura)
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 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;

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;

lunes, 31 de agosto de 2009

DDL Version 1

POR PROBLEMAS CON EL MYSQL ESTA SIN RELACIONES, PENDIENTE DE ARREGLAR

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')));

CREATE TABLE EMPLEADO(
ID_Empleado CHAR(15),
Puesto VARCHAR(15),
PRIMARY KEY(ID_Empleado));

CREATE TABLE Cliente(
ID_Cliente CHAR(15),
Tipo_Cliente CHAR(7),
PRIMARY KEY(ID_Cliente),
CHECK(Tipo_Cliente in('Credito','Contado')));

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

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));

CREATE TABLE Accesa(
ID_Usuario VARCHAR(10),
ID_Modulo INT,
PRIMARY KEY(ID_Usuario, ID_Modulo));

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));

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

CREATE TABLE Telefono_Persona(
ID_Persona CHAR(15),
Telefono CHAR(10) NOT NULL,
PRIMARY KEY(ID_Persona, Telefono));

CREATE TABLE Telefono_Proveedor(
Nombre_Empresa VARCHAR(30),
Telefono CHAR(10) NOT NULL,
PRIMARY KEY(Nombre_Empresa, Telefono));

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));

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

CREATE TABLE Compra(
ID_Compra INT NOT NULL AUTO_INCREMENT,
ID_Empleado CHAR(15),
Fecha_Compra TIMESTAMP,
Total FLOAT,
PRIMARY KEY(ID_Compra));

CREATE TABLE Adquiere(
ID_Compra INT,
ID_Producto INT,
Cantidad INT NOT NULL,
PRIMARY KEY(ID_Compra, ID_Producto));

CREATE TABLE De(
ID_Pedido INT,
ID_Producto INT,
Cantidad INT NOT NULL,
PRIMARY KEY(ID_Pedido, ID_Producto));

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));

CREATE TABLE Existe_En(
ID_Factura INT,
ID_Producto INT,
Cantidad INT NOT NULL,
SubTotal FLOAT,
PRIMARY KEY(ID_Factura, ID_Producto));

CREATE TABLE Cuentas_Cobrar(
Num_Documento INT NOT NULL AUTO_INCREMENT,
ID_Cliente CHAR(15),
ID_Empleado CHAR(15),
ID_Factura INT,
Monto_Pagado FLOAT,
Monto_Pendiente FLOAT,
Fecha_Limite TIMESTAMP NOT NULL,
PRIMARY KEY(Num_Documento));

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));

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));

viernes, 28 de agosto de 2009