none
Modelo Entidad - Relacion a Modelo Relacional en Sql Server

    Question

  • Se presenta la siguiente situacion . .

    si tengo una generalizacion en la cual tengo un supertipo y varios subtipos  . . .por ej:

     

    supertipo = persona

    subtipos = empleado, estudiante

     

    el empleado tendra unos atributos como sueldo

    el estudiante tendra un atributo especialidad  .

     

    en el modelo entidad relacion crearia tres tablas

    por cada ocurrencia de persona  . .hay 0 o 1 estudiante

    por cada ocurrencia de persona  . .hay 0 o 1 empleado

     

    sin embargo al pasarlo al modelo relacional  . .y especificamente a sql server como quedaria . .una relacion uno a uno? como ?

     

    o es mejor colocar como atributos las entidades?

     

    si los pongo como atributos afectaria la escalabilidad de la base de datos?

     

     

     

    Friday, November 12, 2010 2:36 PM

Answers

  • Hola.

    En fondo dependerá mucho de lo grande que vayan a ser, qué uso se le dará, qué distribución entre los distintos tipos y subtipos exista, etc. Si tienes que implementar 50 campos y de los 50, 10 se llenarán casi siempre y el resto sólo cuando sean de un tipo concreto que además suponen una pequeña parte del total, mejor llevar esos campos a otra tabla, con relación 1 a 0. Pero si son un par o tres de campos únicamente, se simplifica bastante la gestión si todo está en la misma tabla. No estaría normalizado, pero bueno, es mucho más práctico. Llevado al extremo sería una tabla para usuarios, otra para empleados, otra estudiante, otras dos para los tipos de supervisor y hasta otra para el evaluador. Quizá demasiado.

    Si tienes la lista de atributos de cada parte, a lo mejor podemos sugerirte algo más concreto.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    Saturday, November 13, 2010 7:17 AM
    Moderator

All replies

  • En SQL Server, lo más práctico es tener una tabla de estudiantes y otra de empleados.

    Eso si es para trabajar de verdad.

    Ahora, si es un trabajo para la Universidad o Colegio puedes tener la tabla personas con los atributos y luego una tabla de estudiantes y otra de empleados. Estudiantes tendrá los atributos exclusivos del estudiante y empleados los atributos exclusivos de empleados. 

    Los estudiantes tendrán un identificador que apunta a personas lo mismo los empleados.

     

     

    Friday, November 12, 2010 8:37 PM
  • tengo una tabla usuario . .me parecio mas practico poner el ejemplo de persona . . empleado y estudiante . .

     

    sin embargo el escenario es este . .la tabla usuario y unas tblas que son evaluador y supervisor como lo explicaba con persona y los subtipos empleado y estudiante . . 

     

    los atributos del supervisor son diferentes en cuanto el supervisor puede ser interno y externo . . y el evaluador no tiene este atributo . .

     

    lo mejor seria en la misma tabla usuario colocar un campo que sea tipo? y colocar como nulos los campos que puedan ser escritos o bien para evaluador o bien para estudiante?

     

    la crear la relacion de uno a uno . .de usuario - evaluador  . . y usuario  - supervisor? y la tabla evaluador llevaria los campos concernientes exclusivamente a este . . lo mismo supervisor?

    Friday, November 12, 2010 9:22 PM
  • Hola.

    En fondo dependerá mucho de lo grande que vayan a ser, qué uso se le dará, qué distribución entre los distintos tipos y subtipos exista, etc. Si tienes que implementar 50 campos y de los 50, 10 se llenarán casi siempre y el resto sólo cuando sean de un tipo concreto que además suponen una pequeña parte del total, mejor llevar esos campos a otra tabla, con relación 1 a 0. Pero si son un par o tres de campos únicamente, se simplifica bastante la gestión si todo está en la misma tabla. No estaría normalizado, pero bueno, es mucho más práctico. Llevado al extremo sería una tabla para usuarios, otra para empleados, otra estudiante, otras dos para los tipos de supervisor y hasta otra para el evaluador. Quizá demasiado.

    Si tienes la lista de atributos de cada parte, a lo mejor podemos sugerirte algo más concreto.


    Alberto López Grande
    SQL Server MVP
    Visita mi blog en http://qwalgrande.blogspot.es/

    Saturday, November 13, 2010 7:17 AM
    Moderator
  • Gracias por responder . . .

    la relacion la tengo de la sigueinte forma en el MER

     

     

    cual seria la mejor forma . .?

    en el diagrama que hago en sql server como identificaria cual usuario es el interventor  y cual el evaluador .. la relacion a evaluacion seria usuario  - evaluacion . .y usuario - informe . . . claro que en el MER se ve un poco mejor pues los supervisores realizan informes y los evaluadores la evaluacion y hay dos relaciones correspondientes  . .supervisor realiza informe y evaluador aplica evaluacion. .

     

    PD. Si conocen algo mejor que Word para hacer estos diagramas de MER que bueno seria ps con visio encuentro unicamente el relacional . .

    y 2 en el caso de tener mas campos tendria que implementar la relacion 1 a 1 . . y por lo que he leido con una restriccion check para que un usuario no pueda estar en las dos tablas?

    Tuesday, November 16, 2010 1:21 AM
  • Hola

    ¿ Has podido solucionar tu problema ?

    Saludos

    Eduardo Portescheller
    Thursday, November 18, 2010 12:56 PM
    Owner