Base De Datos De Una Mensajeria
Enviado por rubisanz • 7 de Mayo de 2014 • 1.305 Palabras (6 Páginas) • 583 Visitas
SERVICIO DE MENSAJERÍA
Se desea automatizar la gestión de información de una empresa de transportes que reparte paquetes por todo México. Los encargados de llevar los paquetes son los camioneros, de los que se quiere guardar nombre, teléfono, dirección, salario y población en la que vive.
De cada paquete transportado interesa conocer el código de paquete, descripción, destinatario y dirección del destinatario. Un camionero distribuye muchos paquetes, y un paquete sólo puede ser distribuido por un camionero.
De las ciudades a las que llegan los paquetes interesa guardar el código de la ciudad y el nombre. Un paquete sólo puede llegar a una ciudad. Sin embargo, a una ciudad pueden llegar varios paquetes.
De los camiones que llevan los camioneros, interesa conocer la matrícula, marca, modelo, tipo y potencia. Un camionero puede conducir diferentes camiones en fechas diferentes, y un camión puede ser conducido por varios camioneros.
Diagrama Entidad-Relación (esquema conceptual)
En la entidad Camioneros se encuentra el atributo teléfono que es multivaluado debido a que puede tomar múltiples valores (teléfono celular, casa, oficina) por lo que se debe convertir en una entidad débil que se relaciona con la entidad Camioneros. No tendrá llave primaria por que algunos chóferes pueden compartir el número telefónico. También se encuentran dos atributos compuestos: dirección y nombre. Estos atributos se descomponen en sus respectivos atributos simples.
En la entidad Paquetes, se localiza el atributo dirección que es de tipo compuesto por lo tanto se convierte en sus atributos simples.
Modelo Relacional
Regla no. 1
Todos los tipos de entidad presentes en el esquema conceptual se trasformarán en tablas en el esquema relacional manteniendo el número y tipo de atributos.
Tablas Atributos
Camioneros (**nombre, calle, num, colonia, ciudad, estado, salario)
Teléfono (teléfono)
Ciudad (cod_ciudad, nombre)
Paquetes (código, descripción, destinatario, calle, num, colonia, ciudad, estado)
Camiones (matricula, marca, modelo, tipo, potencia)
Conducen (fecha)
Regla no. 2
Si en un tipo de interrelación binaria es de 1:N ambos tipos de entidad participan en forma total o el tipo de entidad que interviene con cardinalidad máxima N participa en forma parcial, entonces cada tipo entidad que participa con cardinalidad máxima 1 pasa a formar parte de la tabla correspondiente al tipo de entidad que participa con cardinalidad máxima N, heredando el atributo que participa como llave primaria o clave primaria. Este atributo será definido como llave foránea o clave foránea de esta tabla.
Tablas Atributos
Camioneros (nombre, calle, num, colonia, ciudad, estado, salario) nombre
Teléfono (teléfono)nombre
Ciudad (cod_ciudad, nombre)
Paquetes (código, descripción, destinatario, calle, num, colonia, ciudad, estado) nombre, cod_ciudad
Camiones (matricula, marca, modelo, tipo, potencia)
Conducen (fecha) matricula , nombre
**Los atributos nombre, apellido1, apellido2 fueron englobados en el atributo nombre.
Código
CREATE TABLE Camioneros
(
nombre varchar(60) not null primary key,
/*define llave primaria de tipo no nulo por que el atributo nombre es el identificador del chofer y no se puede duplicar */
calle varchar(20),
num int,
colonia varchar(20),
ciudad varchar(15),
estado varchar(20),
salario smallmoney
)
CREATE TABLE Teléfono
(
teléfono varchar(20),
/* teléfono no es definido como llave primaria por que puede darse el caso de que dos camioneros comparten el mismo numero de teléfono*/
nombre varchar(60),
Constraint fk_nombre foreign key (nombre)
references Camioneros (nombre)
/*define nombre de la regla (fk_nombre) de llave foránea y especifica el atributo nombre que hace referencia a la Tabla Camioneros*/
)
CREATE TABLE Ciudad
(
cod_ciudad int not null primary key,
/*define llave primaria de tipo no nulo por que el atributo cod_ciudad es el identificador del la ciudad y no se puede duplicar */
nombre char(15)
)
CREATE TABLE Paquetes
(
código int not null primary key,
/*define llave primaria de tipo no nulo por que el atributo codigo es el identificador del paquete y no se puede duplicar */
descripción text,
destinatario varchar(60),
calle varchar(20),
num int,
colonia varchar(20),
ciudad char(15),
estado varchar(20),
nombre varchar(60),
cod_ciudad int,
Constraint fk_nombrep foreign key (nombre)
references Camioneros (nombre),
/*define nombre de la regla (fk_nombrep) de llave foránea y especifica el atributo nombre que hace referencia a la Tabla Camioneros*/
Constraint fk_cod_ciudad foreign key (cod_ciudad)
references Ciudad (cod_ciudad)
/*define el nombre de la regla (fk_cod_ciudad)de llave foránea y especifica el atributo cod_ciudad que hace referencia a la Tabla Ciudad*/
)
CREATE TABLE Camiones
(
matricula varchar(10) not null primary key,
/*define llave primaria de tipo no nulo por que el atributo matricula es el identificador del Camion y no se puede duplicar */
marca varchar(10),
modelo varchar(16),
tipo varchar(14),
potencia varchar(21),
)
CREATE TABLE Conducen
(
fecha datetime not null, /*define dato de tipo no nulo*/
nombre varchar(60),
Constraint fk_nombrecond foreign key (nombre)
references Camioneros (nombre),
/*define el nombre de la regla (fk_nombrecond)de llave foránea y especifica el atributo nombre que hace referencia a la Tabla Camioneros*/
matricula varchar(10),
Constraint fk_matricula foreign key (matricula)
references Camiones (matricula),
/*define el nombre de la regla (fk_matricula)de llave foránea y especifica el atributo matricula
...