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

Una duda con un modelo

Estas en el tema de Una duda con un modelo en el foro de Bases de Datos General en Foros del Web. Hola que tal como practicando estoy realizando una aplicacion de venta y compras de videos, y tengo algunas dudas con algunas tablas en la tabla ...
  #1 (permalink)  
Antiguo 26/03/2009, 20:07
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Una duda con un modelo

Hola que tal como practicando estoy realizando una aplicacion de venta y compras de videos, y tengo algunas dudas con algunas tablas

en la tabla clientes entiendo que existen dos tipos, cliente natural y juridico
realizo una tabla por cada tipo de cliente ? o creo una tabla cliente y la tabla natural y juridico en dos tablas aparte con fk, tengo esta duda por que en el sistema que pienso realizar emito varios documentos como

proforma ( cliente natural o juridico)
boleta(cliente natural)
factura(cliente juridico)

tengo esa duda :S
  #2 (permalink)  
Antiguo 26/03/2009, 20:46
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

Un saludo DrKnow

Si lo unico que piensas manejar en cuanto a personas son esos dos tipos de clientes, puedes realizar 2 tablas por separado.
Pero si dentro de tu diseño de BD vas a contemplar los empleados, proveedores, clientes (juridico y natural) sería mejor tener una tabla persona en general y todas unirlas a las tablas correspondientes. De esta forma, evitarías tablas y campos repetitivos en tu diseño y el mantenimiento sería mucho mas legible.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 27/03/2009, 11:36
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Respuesta: Una duda con un modelo

claro no ? por que en si todos son personas algo asi seria

Persona
-Proveedor
-Empleado -- Usuario
-Cliente
---- Natural
---- Juridico

El usuario seria parte de empleado ? o se hace en una entidad aparte ?

Luego tambien tengo documentos proforma,boleta,factura,guia de remision
cotizacion, orden de compra

tambien hago lo mismo con los documentos que pienso emitir, creo una entidad
Documento el cual tendria datos comunes en todos los documentos como codigo,fecha de emision,subtotal,tota y creo la tabla con sus atributos propios ?

Última edición por Drknow; 27/03/2009 a las 11:46
  #4 (permalink)  
Antiguo 27/03/2009, 12:09
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

Cita:
El usuario seria parte de empleado ? o se hace en una entidad aparte ?
sería una entidad aparte. Por ejemplo, en empleado podrías tener información de nomina, vacaciones, fecha de ingreso etc. información que no necesitaría un usuario.

Pero vuelvo y te digo Drknow, mira los alcances del sistema y que tantas cosas piensas abarcar en el.
Si tu sistema es algo simple, es mas complejo trabajar con tantas tablas anidadas para hacer cosas muy simples. En los documentos, no se justificaría crear una nueva tabla para meter 10 o 15 registros. Analiza si cada tipo de documento tiene sus atributos propios relevantes y si se justifica hacerlo de esta forma.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 30/03/2009, 14:31
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Respuesta: Una duda con un modelo

Me podrias dejar un modelo como el que dices tener una entidad Persona o una entidad Documento yrelacionarlas con sus tablas hijas solamente un modelo pequeño para tener una referencia y darme cuenta que modelo me es mas util

gracias .
  #6 (permalink)  
Antiguo 30/03/2009, 15:48
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

Con mucho gusto Drknow

Vamos a tomar una tabla personas, una tabla empleados y una tabla clientes. Empleados y clientes serán hijas de personas ya que tienen atributos en común.

//creamos las tablas.

Código sql:
Ver original
  1. CREATE TABLE personas(cedula INTEGER PRIMARY KEY, nombre text, direccion text, telefono text);
  2.  
  3. CREATE TABLE cliente(cod_per INTEGER, profesion text, FOREIGN KEY (cod_per) REFERENCES personas(cedula));
  4.  
  5. CREATE TABLE empleado(cod_per INTEGER, fecha_ingreso DATE,cargo text,sueldo FLOAT, FOREIGN KEY (cod_per) REFERENCES personas(cedula));

//Ingresamos 2 personas, una será empleado otra cliente.
Código sql:
Ver original
  1. INSERT INTO personas VALUES(132,'daniel orozco','cra 16 # 3-90','8890203');
  2. INSERT INTO personas VALUES(133,'ana maria','cra 17 # 2-97','8798201');

//ingresamos empleado
Código sql:
Ver original
  1. INSERT INTO empleado VALUES(133,'2008-01-01','asesor',1200); //ana maria es empleada

//ingresamos cliente
Código sql:
Ver original
  1. INSERT INTO cliente VALUES(132,'Ingeniero'); //daniel ahora es cliente

Si queremos tener toda la información de empleado sería con:

Código sql:
Ver original
  1. SELECT personas.*,fecha_ingreso,cargo,sueldo FROM personas INNER JOIN empleado ON personas.cedula = empleado.cod_per;

Para el ingreso de los datos, podrias hacer uso de un procedimiento almacenado, que te ingrese el empleado en la tabla persona y en la tabla empleado en un solo llamado.

Espero haberte aclarado tus dudas.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming

Última edición por huesos52; 30/03/2009 a las 15:56
  #7 (permalink)  
Antiguo 31/03/2009, 14:37
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Una duda con un modelo

muchas gracias la duda a sido resuelta, por otro lado si estamos hablando de volùmenes altos de informaciòn con respecto a clientes y documentos(transacciones) boleta,factura,etc
que seria mejor trabajar las tablas con herencia o cada entidad con su tabla ?
siempre he tenido esta duda con respecto a los volumenes altos de informacion.
No se si puedes dar un comentario que explique esa duda .
gracias.
  #8 (permalink)  
Antiguo 31/03/2009, 15:07
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

En mi opinión, si el volumen de datos es muy grande, es mejor tener tablas por separado.
Esto lo digo pensando en el ejemplo anterior que te dí. La tabla cliente va a tener el total de registros de cada cliente. Ese mismo numero de registros estaría en la tabla persona con parte de la información del cliente. A su vez, en tabla persona estarán todos los empleados y tipos de personas que existan. hacer esto en una tabla con 1 millón de registros creo que no es muy optimo para el sistema.

Para esos casos, creo que hay que salirse un poco de la normalizacion de las tablas y pensar un poco mas en el rendimiento.

Por el contrario, si tienes tablas separadas, al momento de buscar un empleado, la cantidad de información será menor y las consultas serán directas sin necesidad de anidarlas.

Puede haber otras opiniones al respecto.

Un saludo.
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #9 (permalink)  
Antiguo 31/03/2009, 20:24
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Respuesta: Una duda con un modelo

mmm ok mira como dije antes estoy pensando hacer un sistema de venta y compra de videos (dvd,vcd,etc) tengo una consulta en la parte de transacciones

factura - guia de remision

un detalle de guia puede contener parte o todo el detalle de la factura y tambien una guia puede contener varias facturas,

por ejemplo mi detalle de factura 1 tiene 3 item y mi factura 2 5 item
mi detalle de guia puede contener 2 item de la factura 1 y 4 item de la factura 2

en ese caso es necesario crear otra entidad (factura_guia) para que almacene dichos items
estoy un poco confundido :S
  #10 (permalink)  
Antiguo 01/04/2009, 09:03
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

Drknow te recomiendo leas un poco de normalización de bases de datos. Este link está bueno. http://www.mysql-hispano.org/page.php?id=16&pag=1

Con respecto a tu pregunta, te voy a plantear un ejemplo sencillo y facil de entender de cuando es necesario la inclusión de una nueva tabla.

Tenemos productos y factura en dos tablas. 1 producto puede estar en múltiples facturas, 1 factura puede tener muchos productos. (Relacion n-m) En cual de las dos tablas se pondría la llave foránea? Si se pone el código de la factura en el producto, cuantas veces tendríamos que repetir el producto en la tabla con la cantidad de facturas en la que puede estar? Si ponemos ponemos el código del producto en la tabla factura, tendremos que hacer una factura por cada producto? En estos casos es necesario la creación de una nueva tabla que comparten los códigos y si se requiere de mas campos que tengan en común.

Este enlace te puede servir. Habla del modelo entidad-relación Es corto pero muy explicativo.
http://www.tejedoresdelweb.com/wiki/..._modelo_er.pdf

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #11 (permalink)  
Antiguo 01/04/2009, 13:50
Avatar de Drknow  
Fecha de Ingreso: febrero-2008
Mensajes: 121
Antigüedad: 16 años, 9 meses
Puntos: 1
Pregunta Respuesta: Una duda con un modelo

ok gracias voy a leerlo para ganar mas tècnica para modelar .

Bueno tengo el toad data modeler que me ayuda a modelar pero como maximo solo me deja insertar 25 tablas, conoces algun otro software que ayude a modelar BD ? algo sencillo que no te genere codigo solo quiero diseñar el modelo de BD para organizarme mejor .



gracias
  #12 (permalink)  
Antiguo 01/04/2009, 14:02
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 9 meses
Puntos: 360
Respuesta: Una duda con un modelo

Visual paradigm o netbeans te pueden servir.

Un saludo
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
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:25.