quien me ayuda a armar una base de datos?
-
en la facu me pidieron un trabajo practico que consiste en armar una base de datos.
Aqui va el enunciado:
Setrata de un grupo de empresas dedicadas al transportes. La informacion se centra en los diferentes medios de transporte de los que dispone cada compañia y en los productos que transportan.
* La informacion de interes relacionada con las distintas empresas es: codigo de la empresa, nombre, domicilio,nro de empleados, tipo de empresa, nombre de su director, presupuesto en mantención de vehiculos y volumen de negocio.
*El tipo de empresa puede ser local, nacional o internacional.
* El volumen de negocio puede ser Hasta 50, de 51 a 100 0 mas de 100
Hasta aca facil no? (jeje)
Ademas:
1) Cada empresa dispone de una serie de medios de transporte que pueden ser de diferentes categorias. Cada uno de estos medios de transporte se identifica por un codigo unico, marca, peso y potencia.
2) Todas las empresas del grupo disponen de una serie de empleados destinados a la conduccion/pilotaje de los transportes antes mencionados, de tal forma que cada uno de ellos es empleado de una empresa en concreto, pero puede conducir/pilotar un transporte de cualquier empresa, variando de vehiculo en diferentes fechas. Por supuesto que se necesita saber que empleado a conducido que vehiculo y en que fecha sin tener en cuenta para que empresa ha conducido el vehiculo. La info que interesa de cada uno de ellos es el codigo asignado, nombre, apellido y tipo de carnet de conduccion/pilotaje que tiene.
3. Las empresas se organizan estructuralmente en departamentos, cuyos datos de interés son: código de departamento, ubicación, y descripción. Al haber formado un grupo, puede haber departamentos que, perteneciendo a una empresa, presten servicio a otras. Parece claro que un empleado solamente lo es de una empresa, sin embargo puede dar servicio a más de una empresa a través de su departamento. Por supuesto, cada empresa puede disponer de más de un departamento. Se necesita conocer, por una parte, qué departamento pertenece a qué empresa, qué empleado pertenece a qué departamento y por otra, que departamento presta servicio a qué empresas.
4. Además de lo expuesto, es necesario conocer a los directores de los departamentos, sabiendo que un empleado solamente lo puede ser de un departamento y éste, tener un solo director.
5. En cuanto a los vehículos (medios de transporte) es necesario conocer otra información relativa a su mantenimiento, ya que las empresas necesitan conocer cuál será el presupuesto dedicado a este fin para cada año. Por ello, las empresas tienen una serie de talleres a los que llevan sus vehículos para realizar dichas operaciones de mantenimiento. Los talleres están concertados por cada una de las empresas, con lo que es necesario conocer cuál es la que los ha concertado, pero los pueden usar indistintamente cualquiera de ellas ya que utilizan indistintamente los vehículos y no es necesario conocer qué empresa lleva un determinado vehículo al taller. Cada tallerse identifica por un código de taller, dirección y especialidad.
6. Las operaciones especificadas en el párrafo anterior están tipificadas de acuerdo con un catálogo de operaciones de mantenimiento que se realizan sobre los vehículos, identificándose cada una de ellas por un código y una descripción, teniendo interés el registro de cada una de las operaciones realizadas sobre cada vehículo y el taller en el que se llevó a cabo. Es necesario conocer el tiempo que permaneció cada uno de los vehículos en el taller para cada operación. El coste de las operaciones depende del taller en que se realice, por lo que se necesita conocer cuales son las operaciones disponibles en cada taller y a qué precio.
7. A cada uno de los vehículos se le asigna diariamente una determinada carga que deberá transportar según un itinerario estándar. La carga se caracteriza por una descripción, su valor en pesetas y su lugar de procedencia. Los vehículos transportan diferentes tipos de carga en diferentes fechas, y sobre diferentes itinerarios. Los itinerarios se caracterizan por su punto de partida, su punto de destino y un índice que describe la "calidad" de los mismos. Este índice es un número entero que varía entre
1 y 10.
Algunas de las restricciones existentes son:
· NO PUEDEN existir conductores / pilotos ni vehículos que no pertenezcan a alguna empresa.
· Pueden existir empresas sin vehículos o sin pilotos /conductores
· NO PUEDEN existir talleres que no sean concertados.
· NO todas las operaciones de mantenimiento tipificadas tienen por qué haberserealizado.
· No hay itinerarios que no se realicen.
************************************************** ************************************************** ****
pk=clave primaria
pf=clave foranea
Lo que se me ocurrio es lo siguiente:
EMPRESA EMPRESATIPO
-codigo (pk) -idtipo (1)(pk)
-nombre -tipoempresa
-domicilio
-nroempl
-idtipo (1) (pf) VOLUMEN
-director -idvolumen(2)(pk)
-presupueto -volumen
-idvolumen (2)(pf)
-idgpotransporte(3)(pf)
-idgpodepto(4)
1)Esta tabla corresponde al item1 (como para no perdernos)
esto es lo que no se si esta bien...
GRUPOTRANSPORTE MEDIOSTRANSPORTE CATEGORIA
-idgpotransporte(3)(pk) -codtrans(5)(pk) -idcat(6)(pk)
-codtrans(5)(pf) -marca -categoria
-descripcion -peso
-potencia
-idcat(6)(pf)
tuve que inventar la tabla grupotransporte porque no se me ocurrio otra forma de conectar la tablas MEDIOSTRANSPORTE Y CATEGORIA en la tabla principal EMPRESA. TIREN IDEAS
aQUI YA EMPIEZAN LAS CONFUSIONES PORQUE EL PUNTO 2 CREO QUE ESTA RELACIONADO CON EL 1, Y YO INTENTE HACERLO PERO SI EXPONGO LO QUE HICE CREO QUE LOS MAREARIA, Y LO MEJOR ES IR AVANZANDO DE A POCO.
GRACIAS Y ESPERO SUS COLABORACIONES.
SALUDOS -
Hasta el punto 4 yo lo haria asi o mas o menos asi
lo unico que faltan son los tipos de campos q no los puse por vago pero las PK trata q sean numeros y no caracteres por que si no vas a tener quilombo con las mayusculas/minusculas y otras cosas mas.Código:Empresa ( cod_empresa (PK), nombre , domicilio , nroempleados, cod_tipoempresa(PF) , nombredir, presmantencion, cod_volnegocio (PF) ) Tipo_Empresa ( cod_tipoempresa (PK), tipoempresa ) Vol_negocios ( cod_volnegocio (Pk), volnegocio ) Transporte ( cod_trans (PK), marca, peso, potencia ) Empresa_Transporte ( cod_trans (PK), cod_empresa (PK) ) Empleado ( cod_empleado (PK), cod_empresa (PK), nombre, apellido, tipo_carnet, cod_depto (PF) ) Empleado_Transporte ( cod_empleado (PK), cod_trans (PK), fecha (PK), ) Departamentos ( cod_depto (PK), cod_empresa (PK), director ) Servicio_Empresa_Dptos ( cod_depto (PK) cod_empresa (PK) )
Saludos - Me falta lo de los talleres concertados, no entiendo qué significa.Código:
(Punto 1) Empresas ( idempresa int not null primary key auto_increment, nombre varchar(255) not null, domicilio varchar(255) not null, idtipoempresa int not null (fk), director varchar(255) not null, presupuesto varchar(255) not null, idvolumen int not null (fk) ) TiposDeEmpresa ( idtipoempresa int not null primary key auto_increment, descripcion varchar(255) not null ) VolumenesDeNegocio ( idvolumen int not null primary key auto_increment, descripcion varchar(255) not null ) Vehiculos ( idvehiculo int not null primary key auto_increment, idempresa int not null (fk), idcategoria int not null (fk), marca varchar(255) not null, peso int not null, potencia int not null ) CategoriasDeVehiculo ( idcategoria int not null primary key auto_increment, descripcion varchar(255) ) --- (Punto 2) Empleados ( idempleado int not null primary key auto_increment, idempresa int not null (fk), iddepartamento int not null (fk), nombre varchar(255) not null, apellido varchar(255) not null, idtipodecarnet int not null (fk), ) TiposDeCarnet ( idtipodecarnet int not null primary key auto_increment, descripcion varchar(255) not null ) Viajes ( idviaje int not null primary key auto_increment, fecha datetime not null, idempleado int not null (fk), idvehiculo int not null (fk) ) --- (Punto 3) DepartamentosPorEmpresa ( iddepartamento int not null primary key auto_increment, idempresa int not null (fk), descripcion varchar(255) not null, ubicacion varchar(255) not null ) ServiciosPorDepartamento ( idservicio int not null primary key auto_increment, iddepartamentoprestador int not null (fk), idempresaprestataria int not null (fk), ) --- (Punto 4) Especifica que un departamento no puede tener mas de un director, pero no especifica si un director puede serlo de mas de un departamento. En el primer caso, se agrega el campo director varchar(255) not null a DepartamentosPorEmpresa... (o una tabla Directores si se quire tipificado). En el segundo caso: Directores ( iddirector int not null primary key auto_increment, descripcion varchar(255) not null ) DepartamentosPorDirector ( iddxd int not null primary key auto_increment, iddepartamento int not null (fk), iddirector int not null (fk), ) --- (Punto 5) Talleres ( idtaller int not null primary key auto_increment, direccion varchar(255) not null, idespecialidad int not null (fk), ) EspecialidadesDeTaller ( idespecialidad int not null primary key auto_increment, descripcion varchar(255) not null ) --- (Punto 6) Mantenimiento ( idmantenimiento int not null primary key auto_increment, idtipodeoperacion int not null (fk), idtaller int not null (fk), fechaingreso datetime not null, fechasalida datetime null, realizada bit not null ) TiposDeOperacion ( idtipodeoperacion int not null primary key auto_increment, descripcion varchar(255) not null ) OperacionesPorTaller ( idoxt int not null primary key auto_increment, idoperacion int not null (fk), idtaller int not null (fk), precio currency not null, ) --- (Punto 7) Transportes ( idtransporte int not null primary key auto_increment, fecha datetime not null, idcarga int not null (fk), iditinerario int not null (fk) ) TiposDeCarga ( idcarga int not null primary key auto_increment, descripcion varchar(255) not null, precio currency not null, procedencia varchar(255) not null ) Itinerarios ( iditinerario int not null primary key auto_increment, puntodepartida varchar(255) not null, puntodedestino varchar(255) not null, indicedecalidad int not null )
Espero que te sirva. -
Antes que nada gracias por tomarte el tiempo y armarme el DER del ejercicio, lo que pasa es que estoy un poco perdido en el tema y necesito un par de ejercicios de ejemplo como para poder arrancar...
Bueno estuve viendo lo que hiciste y trate de analizarlo y necesito que me aclares un par de puntos asi ya voy entrando en el tema...
Con respecto al "punto 3" vos hiciste una tabla serviciopor departamento y no entendi bien el porque del campo iddepartamentoprestador y idempresapretataria...
no seria iddepartamento y idempresa?
Y en el punto 4 hiciste otra tabla que me parece que estaria demas, la de "departamentospordirector", yo lo solucionaria agregandole el campo iddepartamento a la tabla directores
y hasta ahi analicé, como veras me llevo varios dias analizar tu trabajo, obviamente que lo tuyo no creo que este mal, solo lo sugiero como para discutir la opimizacion de la base de datos y ver si no estoy tan perdido
Saludos y muchas gracias
Los otros puntos los estoy analizando en cuanto logre entender los enunciados con lo que hiciste te aviso... -
PARA SISTEMAS DE PROCESAMIENTO DE DATOS 3, ESTAMOS VIENDO FORMAS NORMALES , DER, MER, ETC DE BASES DE DATOS, ES UN TERCIARIO PARA ANALISTA DE SISTEMAS, Y EL AÑO PASADO ESTABA EN OTRA SEDE, Y EN LA QUE ESTOY AHORA DIERON OTRAS COSAS QUE YO NO VI (MUCHA TEORIA DE BASES DE DATOS, Y COMO ARMARLAS ("yo vi sql")).
ENTONCES RECURRI A FOROS PARA QUE ME AYUDARAN POR LO MENOS PARA HACER EL PRIMER TRABAJO YA QUE NO SABIA POR DONDE EMPEZAR Y POR SUERTE HAY GENTE QUE SE TOMO EL TIEMPO PARA AYUDARME, Y NI SIQUIERA DEBE HABER PENSADO LO QUE ESTAS PENSANDO VOS (SINO ACLARAME EL PORQUE DE LAS COMILLAS A LA "tarea"). YO TENGO UN CYBER Y NO NECESITO ARMAR NINGUNA BASE DE DATOS PARA NINGUNA EMPRESA (Y SI LO TUVIESE QUE HACER SOLO EXPONDRIA LAS DUDAS Y NO EL TRABAJO ENTERO).
SALUDOS Y GRACIAS POR PREOCUPARTE... ?¿
