Duda en Diseño de las Tablas

Publicado en 'Programación' por celsoxvi, 3 May 2012.





  1. celsoxvi

    celsoxvi Miembro de bronce

    Registro:
    1 Mar 2009
    Mensajes:
    1,196
    Likes:
    72




    Hola Comunidad;
    Bueno tengo una Duda y es que ahora estoy aprendiendo un poquito mas sobre Base de Datos y Diseño, pero ahora tengo una Duda.

    Resulta que el Diseño esta orientada a una pequeña tienda de Computo, Bueno en Esa tienda lo tienen es el Personal de Servicio (Gerente, Administrador, Ventas, Soporte), Y tienen a sus Clientes (Natural, Jurídica), Todas estas tienen un Usuario y Contraseña.

    Un Docente me dijo que utilice Privilegios de Sistema para Evitar estar haciendo Herencia, Porque si Notas puedo Crear fácilmente una Tabla PERSONA, En donde a Base a esta cree otra Tabla Llamada Natural, Jurídica y Personal, Pero ¿como lo haría con una Tabla llamada Privilegios?, Ya que si por ejemplo yo creo Solamente una tabla llamada PERSONA y por Ejemplo en la Tabla VENTA necesite Guardar el ID del Usuario a quien lo realizo la venta y el ID de quien realiza la Venta ¿tendría que hacer doble Relación Tanto para mi Cliente como de mi Vendedor?.
    Espero que me puedan despejar esta dudita.
     


  2. Leonardo

    Leonardo Miembro de bronce

    Registro:
    15 Mar 2011
    Mensajes:
    1,321
    Likes:
    195
    tablas:
    tbl_cliente (no tienen privilegios)
    tbl_personal (incluyes privilegios como campos y id si lo pones en otra tabla, como quieras)
     
  3. celsoxvi

    celsoxvi Miembro de bronce

    Registro:
    1 Mar 2009
    Mensajes:
    1,196
    Likes:
    72
    He pasado en Limpio lo que en verdad Requiero, Y mas o menos es asi:

    He hecho un Recopilacion de los Campos que voy a Necesitar en las Tablas y ha quedado de la Siguiente Forma:

    PERSONA NATURAL:
    Nombres
    Apellidos
    DNI
    Fecha Nacimiento
    Sexo
    Ubigeo
    Direccion
    Telefono
    Celular
    Email
    Observacion

    PERSONA JURÍDICA:
    Nombre o Razon Social
    Representante Legal
    Actividad
    Ubigeo
    Telefono
    Direccion Fiscal
    Direccion Envio
    Email
    Observacion

    PERSONA TRABAJADOR
    Nombres
    Apellidos
    DNI
    Fecha Nacimiento
    Sexo
    Ubigeo
    Direccion
    Telefono
    Celular
    Email
    Observacion
    Sueldo

    el Pequeño Sistema va a tener Privilegios, por ejemplo cuando es un Administrador, Cuando es un Gerente, Cuando es un Usuario o Empresa. Entonces lo que se me ha Planteado hacer es Crear una Tabla Mayor Llamada PERSONA, Una Tabla que se Llame NIVELES (Serán los Niveles de Privilegios) que estará Relacionada con la tabla PERSONA ya que en esa tabla se agregaran 2 campos mas llamados usuario y contraseña, Una Tabla CLIENTE Que herede de PERSONA y otra tabla TRABAJADOR que Herede de PERSONA, Porque como ya Saben, una Persona Sea Natural o Jurídica, Para nosotros es un CLIENTE, Entonces como haría para hacer las Tablas ya que me marea un Poco esto. Gracias
     
    Última edición: 4 May 2012
  4. Leonardo

    Leonardo Miembro de bronce

    Registro:
    15 Mar 2011
    Mensajes:
    1,321
    Likes:
    195
    a mi parecer te haces bolas, siempre ve la solucion mas sencilla porque en la vida real trabajar con muchas tablas es dolor de cabeza innecesario.

    no te traumes si habran campos q no se llenan jamas.
    cuando te llenes de tablas detalle y relaciones redundantes te daras cuenta.

    yo q tu
    PERSONA NATURAL, PERSONA JURÍDICA y PERSONA TRABAJADOR lo pongo en un solo campo, seria algo asi como un comboBOX, osea lo manejas por el lado de INTERFAZ.
    NO OLVIDES q se trata de un programa y no solo es tablas y relaciones.
    asi no tendras problemas para la contraseña y user.
     
  5. fresco

    fresco Miembro nuevo

    Registro:
    11 Oct 2011
    Mensajes:
    6
    Likes:
    0
    Hola, no entiendo muy bien lo que quieres hacer... asi que te dire algunas cosas que quizas puedan ayudarte. crea una tabla niveles, una tabla tipo de persona, una tabla usuarios, una tabla persona, una tabla ventas, una tabla detalle_ventas.
    tabla niveles---> gerente, administrador, etc
    tabla tipo de persona----> natural, juridica, etc
    tabla usuarios----> los usuarios que se logearan en el sistema
    tabla persona----> todos los campos que necesites, se llenaran de acuerdo al tipo de persona
    tabla ventas----> ira el id de persona, id_usuario
    tabla detalle----> detalles de la ventas, etc.
    Son muchas tablas, pero te servira para tener un mayor control.
    Saludos.
     
  6. celsoxvi

    celsoxvi Miembro de bronce

    Registro:
    1 Mar 2009
    Mensajes:
    1,196
    Likes:
    72
    [​IMG]

    Esta es una parte del Modelo del Sistema que tengo, no respondí antes porque tenia que terminar otro trabajo pendiente de la Universidad, pero bueno volviendo al Caso, tengo esta Tabla Principal PERSONA, con sus Atributos Comunes que comparte el PROVEEDOR, CLIENTE, TRABAJADOR, Ahora bien solamente tengo unas 2 Preguntas.

    PERSONA es la Tabla General y de ahí Derivaremos si es CLIENTE, PROVEEDOR, TRABAJADOR, ya eso es Programación y Procesos Almacenados, Pero bueno, tengo una Duda con Respecto a Cliente, mi CLIENTE puede ser Natural o Jurídico, por lo que he pensado en Poner un Campo Booleano en la tabla CLIENTE (agrego un campo llamado Personanoj que 1 sea Natural y 0 Jurídico) ¿Es Dable, Que Opinas?, Ahora ¿donde queda el Nombre de razón social? pues lo que he pensado es que sea Nombre de la tabla PERSONA, Porque mi Proveedor también es una persona Jurídica.

    Ahora si por ejemplo tengo un CLIENTE Jurídico, Pues necesitare registrar uno o varios representantes, no se como hacer esta ultima parte y ya dejo de Molestar :D
     
  7. Fumador

    Fumador Miembro frecuente

    Registro:
    22 Jun 2009
    Mensajes:
    162
    Likes:
    10
    Los campos de persona deberían tener nombres más generales ya que representa a diferentes entidades, por ejemplo

    nombre NOT NULL -> ahi metes los nombres
    apellido NULL -> naturales
    ruc NULL -> juridicos y/o naturales
    documento NULL -> naturales
    ....

    Y por los respresentastes (si los registras, supongo que serán también personas) has tu tabla intermedia: dbn_cliente_representante y metes el id_cliente y el id_representante y sólo consultas todos los representantes por id_cliente... ya en tu programación tienes que asegurar que todos los clientes que están en esa tabla sean Jurídicas. Suerte.