Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

normalizar una base de datos

Estas en el tema de normalizar una base de datos en el foro de Mysql en Foros del Web. buenas noches amigos, tengo una confusion a la hora de normalizar y relacionar las tablas.. tengo que hacer un sistema de gestion de correspondencias militares ...
  #1 (permalink)  
Antiguo 30/11/2011, 23:36
 
Fecha de Ingreso: diciembre-2010
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 2
normalizar una base de datos

buenas noches amigos, tengo una confusion a la hora de normalizar y relacionar las tablas..

tengo que hacer un sistema de gestion de correspondencias militares ( donde se emiten memorandum, oficios, cartas etc etc) el cual el usuario accesa al sistema elije que tipo de correspondencia va emitir, (memorandum, oficios, etc) luego se almacenan en el servidor y la salida de sistema es la correspondencia en PDF

las correspondencias van dirigidas a personal civil o militar,, agradeciendo su colaboracion prestada..

tengo estas tablas maestras (3forma normal)

aca guardo los datos elementales de las personas

TABLA DATOS PERSONALES
Id_persona (PK)
Nombre
Apellido
Direccion
Telefono
Sexo
Email



Usuario esta guardo los datos de los usuarios del sistema
Id_usuario (PK)
Id_persona
Login
Pass
Tipo (administrador u operador)

Departamentos aca guardo los nombres de los departamentos de la empresa (ejemplo dpto computacion)
Id_dpto (PK)
Nombre_departamento

Secciónes esta son los nombres de cada subdivision de los departamentos (ejemplo seccion soporte tecnico)
Id_seccion (PK)
Nombre_seccion

Cargos aca guardo los cargos existente de la empresa
Id_cargo (PK)
Nombre

Componente_militar aca guardo los 4 componentes aviacion, ejercito, ect ect

Id_componente (PK)
Nombre_componente

Grado_militar aca los grados militares, teniente, coronel etc etc

Id_componente (PK)
Nombre_componente



Correspondencia


Id_correspondencia (PK)
Remitente(la persona que la envia)
Destino(la persona quien va dirigida)
Fecha
Asunto (es el motivo por el cual se envia)

Y Tengo estas otras tablas hijas

Cargo_asignado (relacional) relaciono las tablas cargos, departamento y seccion, para obtener el cargo de un trabajador, ejemplo (cargo: jefe, dpto: computacion, seccion: soporte tecnico)
Id_cargo_asignado (PK)
Id_cargo (FK, desde Tabla cargo)
Id_dpto (FK, desde Tabla departamento)
Id_seccion (FK, desde Tabla Secciones)
Id_persona (FK, desde Tabla datos personales)


Rango_militar (relacional) aca relaciono las tablas componentes y rango para obtener el rango completo del personal militar
Id_rango_militar
Id_componente (FK, desde Tabla componente)
Id_grado (FK, desde Tabla grado)



ese es el bosquejo que tengo
  #2 (permalink)  
Antiguo 01/12/2011, 09:30
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 6 meses
Puntos: 447
Respuesta: normalizar una base de datos

Y cuál es el problema??? en tu post no mencionas qué es lo que necesitas de ayuda.

Si es alguna opinión en cuanto al modelo de BD, este no sería el foro más adecuado para preguntar, podrías utilizar el foro de Base de datos General... además, el modelo dependerá de tus necesidades, por lo que no es posible que no te podamos dar una ayuda puntual.

Saludos
Leo.
  #3 (permalink)  
Antiguo 01/12/2011, 12:08
 
Fecha de Ingreso: diciembre-2010
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: normalizar una base de datos

ok amigo muchas gracias por tu aporte.. tienes razon es que no sabia donde publicarlo.. y bueno mi pregunta era que me dieran su opinion si estan bien distribuidas las FK en las tablas HIJAS.. y si tienen alguna recomendacion en los campos de las tablas si estan mal distribuidos ? o si se ven bien..?.. muchas graciass
  #4 (permalink)  
Antiguo 01/12/2011, 13:31
Colaborador
 
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 2.097
Antigüedad: 17 años, 6 meses
Puntos: 447
Respuesta: normalizar una base de datos

Hola de nuevo endgel:

Tal como te comenté en el post anterior, es muy difícil poderte dar una respuesta puntual a tu problema, pues la lógica de negocios es muy distinta de un acaso a otro. A primera vista creo que el modelo es correcto, es decir, manejas correctamente las tablas catálogos y las tablas relación... las relaciones son correctas, pero habría que revisar caso a caso para ver si la cardinalidad de las tablas no implicaría un nuevo diseño... por ejemplo, para la parte de la tabla Correspondencia, estás considerando que un correo se envía a una sola persona ¿es esto correcto?.

A nivel corporativo por ejemplo es común enviar oficios o memorandos a más de una persona (el remitente suele ser una persona, pero por ejemplo se puede enviar una copia al archivo de la empresa, al área almacén, al proveedor, etc)... aquí entonces depende de tu lógica de negocios.

Otro caso típico que se tiene que valorar por separado es el de los teléfonos. ¿cada persona tiene sólo un teléfono o puede tener varios? por ejemplo un director puede tener asignados un número personal y también el número de su secretaria para ser localizado.

Lo mismo tendrías que analizar para todas las tablas... es decir buscar aquellos campos que son susceptibles de tener múltiples valores.

Checa también esta liga:

http://www.eduardoortega.me/2011/07/...do-de-objetos/

hablan sobre SQL Server, pero creo que las reglas aplican también para cualquier BD.

Saludos
Leo.
  #5 (permalink)  
Antiguo 01/12/2011, 14:54
 
Fecha de Ingreso: diciembre-2010
Mensajes: 26
Antigüedad: 13 años, 6 meses
Puntos: 2
Respuesta: normalizar una base de datos

si bueno como mi sistema es de corto alcance.. asumiendo que solo se maneja 1 nro de tfl por persona.. y un solo destinatario.... cabe destacar que mi sistema es solo para el registro de las correspondencias enviadas, mas no para las recibidas...

amigo en la tabla correspondencia

Id_correspondencia (PK)
Remitente(la persona que la envia)
Destino(la persona quien va dirigida)
Fecha
Asunto (es el motivo por el cual se envia)

remitente y destino son el Cargo_asignado , ya que las mismas van diriigidas a cierta persona con tal cargo de tal dpto...

tonces en esa tabla tengo la duda si coloco esos 2 campos.. o coloco Cargo_asignado_destino y Cargo_asignado_remitente

siendo Cargo_asignado una FK de esa misma tabla...

y asi me traen el destino u origen de la misma..


espero haberme explicado..

Etiquetas: normalizar, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:28.