lunes, 7 de septiembre de 2009

DDL

CREATE TABLE CLIENTE
( ID_CLIENT CHAR(15) NOT NULL,
PNOM VARCHAR(15) NOT NULL,
SNOM VARCHAR(15),
PAPE VARCHAR(15) NOT NULL,
SAPE VARCHAR(15) ,
DIRECCION VARCHAR(100),
PRIMARY KEY (ID_CLIENT)
)ENGINE=INNODB;

CREATE TABLE AREA
( ID_MAESTRO CHAR(15) NOT NULL,
AREA VARCHAR(15) NOT NULL,
PRIMARY KEY (ID_MAESTRO,AREA),
FOREIGN KEY (ID_MAESTRO) REFERENCES CLIENTE (ID_CLIENT) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE PERSONAL_ADMON
( ID_PERSONAL CHAR(15) NOT NULL,
CARGO VARCHAR(15) NOT NULL,
PRIMARY KEY (ID_PERSONAL),
FOREIGN KEY (ID_PERSONAL) REFERENCES CLIENTE (ID_CLIENT) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE ALUMNO
( ID_ALUMNO CHAR(15) NOT NULL,
CURSO VARCHAR(40) NOT NULL,
PRIMARY KEY (ID_ALUMNO),
FOREIGN KEY (ID_ALUMNO) REFERENCES CLIENTE (ID_CLIENT) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE BIBLIOTECARIO
( ID_BIBLIOTECARIO CHAR(15) NOT NULL,
PNOM VARCHAR(15) NOT NULL,
SNOM VARCHAR(15),
PAPE VARCHAR(15) NOT NULL,
SAPE VARCHAR(15) ,
PRIMARY KEY (ID_BIBLIOTECARIO)
)ENGINE=INNODB;

CREATE TABLE PROVEEDOR
( ID_PROVEEDOR VARCHAR(3) NOT NULL,
NOMBRE VARCHAR(20) NOT NULL,
PRIMARY KEY (ID_PROVEEDOR)
)ENGINE=INNODB;

CREATE TABLE LIBRO
( ID_LIBRO VARCHAR(6) NOT NULL,
NOMBRE VARCHAR(100) NOT NULL,
N_EDICION INT NOT NULL,
OBSERVACION VARCHAR(200),
ISBN VARCHAR(17),
IDPROVE_DONA VARCHAR(3),
IDPROVE_VENDE VARCHAR(3),
PRIMARY KEY (ID_LIBRO),
FOREIGN KEY(IDPROVE_DONA) REFERENCES PROVEEDOR(ID_PROVEEDOR) ON UPDATE CASCADE ,
FOREIGN KEY(IDPROVE_VENDE) REFERENCES PROVEEDOR(ID_PROVEEDOR) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE EDITORIAL
( ID_EDITORIAL VARCHAR(4) NOT NULL,
PAIS VARCHAR(20) NOT NULL,
NOMBRE VARCHAR (50) NOT NULL,
PRIMARY KEY (ID_EDITORIAL)
)ENGINE=INNODB;

CREATE TABLE AUTOR
( ID_AUTOR VARCHAR(3) NOT NULL,
NOMBRE VARCHAR(30) NOT NULL,
PAIS_ORIGEN VARCHAR(20) NOT NULL,
FECHA_NAC DATE,
PRIMARY KEY (ID_AUTOR)
)ENGINE=INNODB;

CREATE TABLE MODULO
( ID_MODULO VARCHAR(2) NOT NULL,
DESCRIPCCION VARCHAR(200) NOT NULL,
PRIMARY KEY (ID_MODULO)
)ENGINE=INNODB;

CREATE TABLE USUARIO
( ID_USUARIO VARCHAR(2) NOT NULL,
PASSWORD VARCHAR(15) NOT NULL,
NOMBRE_USUARIO VARCHAR(15) NOT NULL,
ID_BIBLIOTECARIO CHAR(15) NOT NULL,
PRIMARY KEY (ID_USUARIO),
FOREIGN KEY(ID_BIBLIOTECARIO) REFERENCES BIBLIOTECARIO(ID_BIBLIOTECARIO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE PUBLICA
( ID_EDITORIAL VARCHAR(4) NOT NULL,
ID_LIBRO VARCHAR(6) NOT NULL,
PRIMARY KEY (ID_EDITORIAL, ID_LIBRO),
FOREIGN KEY(ID_EDITORIAL) REFERENCES EDITORIAL(ID_EDITORIAL) ON UPDATE CASCADE,
FOREIGN KEY(ID_LIBRO) REFERENCES LIBRO(ID_LIBRO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE ESCRIBE
( ID_AUTOR VARCHAR(3) NOT NULL,
ID_LIBRO VARCHAR(6) NOT NULL,
PRIMARY KEY (ID_AUTOR , ID_LIBRO),
FOREIGN KEY(ID_AUTOR) REFERENCES AUTOR(ID_AUTOR) ON UPDATE CASCADE,
FOREIGN KEY(ID_LIBRO) REFERENCES LIBRO(ID_LIBRO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE CATEGORIA
( ID_LIBRO VARCHAR(6) NOT NULL,
CATEGORIA CHAR(20) NOT NULL,
PRIMARY KEY (ID_LIBRO, CATEGORIA),
FOREIGN KEY (ID_LIBRO) REFERENCES LIBRO(ID_LIBRO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE TELEFONO
( ID_CLIENT CHAR(15) NOT NULL,
TELEFONO CHAR(9) NOT NULL,
PRIMARY KEY (ID_CLIENT, TELEFONO),
FOREIGN KEY (ID_CLIENT) REFERENCES CLIENTE (ID_CLIENT) ON UPDATE CASCADE
)ENGINE=INNODB;
CREATE TABLE PRESTAMO
( N_PRESTAMO VARCHAR(5) NOT NULL,
FECHA_PRESTAMO DATE,
FECHA_DEV DATE,
ID_CLIENT CHAR(15) NOT NULL,
ID_BIBLIOTECARIO CHAR(15) NOT NULL,
PRIMARY KEY (N_PRESTAMO),
FOREIGN KEY (ID_CLIENT) REFERENCES CLIENTE (ID_CLIENT) ON UPDATE CASCADE,
FOREIGN KEY(ID_BIBLIOTECARIO) REFERENCES BIBLIOTECARIO(ID_BIBLIOTECARIO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE EJEMPLAR
( ID_EJEMPLAR VARCHAR(2) NOT NULL,
ID_LIBRO VARCHAR(6) NOT NULL,
ESTADO BOOLEAN,
N_EJEMPLAR VARCHAR(2) NOT NULL,
N_PRESTAMO VARCHAR(5) NOT NULL,
PRIMARY KEY (ID_EJEMPLAR , ID_LIBRO),
FOREIGN KEY(ID_LIBRO) REFERENCES LIBRO(ID_LIBRO) ON UPDATE CASCADE ,
FOREIGN KEY(N_PRESTAMO) REFERENCES PRESTAMO(N_PRESTAMO) ON UPDATE CASCADE
)ENGINE=INNODB;

CREATE TABLE ACCEDER
( ID_MODULO VARCHAR(2) NOT NULL,
ID_USUARIO VARCHAR(2) NOT NULL,
PRIMARY KEY (ID_MODULO, ID_USUARIO),
FOREIGN KEY(ID_MODULO) REFERENCES MODULO(ID_MODULO) ON UPDATE CASCADE ,
FOREIGN KEY(ID_USUARIO) REFERENCES USUARIO(ID_USUARIO) ON UPDATE CASCADE
)ENGINE=INNODB;

ER Corregido


Mapeo


miércoles, 19 de agosto de 2009

Diagrama Entidad – Relación (E-R)




El Problema

La Biblioteca del instituto Evangélico Virginia Sapp cuenta con sistema manual de control de préstamos, actualmente todo se registra en un libro de control.

En la biblioteca se manejan fichas de autores y libros. En la ficha de cada autor se tiene el código de autor, nombre, país de origen y fecha de nacimiento. De cada libro se guarda el código, nombre, autor, editorial, tema, número de edición, categoría, estado, observación y stock. De cada cliente se guarda un ID, nombre, dirección y teléfono, si es alumno curso, si es Maestro área y si es personal administrativo su cargo. Los ejemplares son prestados a los clientes. Un cliente puede tomar prestados varios ejemplares. De cada préstamo interesa guardar número de préstamo, la fecha de préstamo y la fecha de devolución. También de los editoriales se conoce su nombre, un único código y país. Usuarios pueden existir de dos tipos: administrador y bibliotecario, de ambos interesa guardar un código, tipo de privilegio, nombre completo, nombre de usuario y contraseña.
Los libros pueden tener dos procedencias, compras y donaciones de ambos interesa saber un nombre, un código y la lista de libros donados o comprados.