Bases de Datos - atributos compuestos en E-R

 
Vista:
sin imagen de perfil
Val: 27
Ha aumentado 1 puesto en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

atributos compuestos en E-R

Publicado por Alejandro (15 intervenciones) el 17/01/2020 13:04:58
Buenas a todos, como van?
pues vereis estoy creando un modelo entidad relacion, la duda que tengo es como expresar atributos compuestos y que relación se usa en este caso, una relación heredada o simple?? para los atributos multivaluados he usado relacion heredada, es correcto tambien??

Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

atributos compuestos en E-R

Publicado por anonymous (41 intervenciones) el 17/01/2020 23:06:19
Siempre que hayan atributos multivaluados se deben crear nuevas estructuras hasta que normalice esas relaciones, porque cuando se detectan atributos multivaluados quiere decir que la BD no está debidamente normalizada(Tercera forma normal), por ejemplo la relación entre Estudiante y Libro en una Biblioteca es claro que es una relación con cardinalidad: N:M

Donde exista una relación de muchos a muchos en el modelo entidad relación, la relación se convierte en una tabla nueva que une las 2 entidades que se estaban relacionando originalmente. La nueva tabla tendrá su propia llave primaria y tendrá 2 llaves foráneas, las cuales corresponden a las llaves primarias de las otras dos tablas. Adicionalmente tendrá los campos adicionales que sean requeridos.

No es prudente dejar como primary Key una llave compuesta por dos atributos, en el caso de la tabla resultante del ejemplo, debería quedar con su propio PK (Prestamo_ID) y dos foráneas que son el Id del Libro a prestar y el Id del usuario o estudiante que presta, y estos dos forman un constarint de tipo Unique, porque un libro solo puede estar prestado una y solo una vez.

Esta tabla bien podría quedar así:

CREATE TABLE TBL_PRESTAMOS (
PRESTAMO_ID | NUMBER (4) NOT NULL PRIMARY KEY,
LIBRO_ID NUMBER (4) NOT NULL UNIQUE,
ESTUDIANTE_ID NUMBER (4) NOT NULL,
FECHA_PRESTAMO DATE DEFAULT SYSDATE NOT NULL,
FECHA_DEVOLUCION DATE NOT NULL,
CONSTRAINT FK_ESTUDIANTE_ID FOREIGN KEY (ESTUDIANTE_ID)
REFERENCES TBL_ESTUDIANTES (ESTUDIANTE_ID),
CONSTRAINT FK_LIBRO_ID FOREIGN KEY (LIBRO_ID)
REFERENCES TBL_LIBROS (LIBRO_ID),
CONSTRAINT UQ_ESTUDIANTE_LIBRO UNIQUE (ESTUDIANTE_ID, LIBRO_ID));

Observar imagen adjunta de este ejemplo para que comprendas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha aumentado 1 puesto en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

atributos compuestos en E-R

Publicado por Alejandro (15 intervenciones) el 19/01/2020 19:00:46
Antes de nada, muchas gracias por responder Jorge.
No lo he contado antes, pero estoy utilizando la herramienta case "Power Designer" para realizar el modelo E-R. En mi caso tengo una tabla "usuarios" el cual quiero saber si tienen discapacidad, en caso afirmativo, decir el tipo y el grado. El caso es que no se que tipo de relación usar para los atributos compuestos. De todas formas gracias por la respuesta de los multivaluados, para estos he hecho una inheritance (relacion heredada), en caso de los emails y telefonos.

Te adjunto una imagen del modelo E-R que estoy realizando.

bd
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

atributos compuestos en E-R

Publicado por anonymous (41 intervenciones) el 19/01/2020 23:05:29
Me supongo que un usuario podría tener más de una discapacidad, lo que daría una relación N:M, entonces tendrías por un lado la estructura de usuarios que ya tienes, otra donde registras los tipos de discapacidades (Auditiva, Visual, Motriz, etc.) y una resultante entre estas dos que tendrá su propia PK y dos FK que son las PK de quienes la conforman valga decir el DNI o Usuario_ID y la Discapacidad_ID

La relación que tienes de Ayuda_eco con usuarios está mal, no debe ser ahí entre estas, sino entre la intermedia que surge entre usuarios y discapacidades (Usuario_Discapacidad) y a esta última si le conectas la ayuda para saber sobre cual discapacidad efectivamente recibe apoyo o ayuda.

La relación resultante es muy similar al ejemplo que te adjunté de Estudiantes-Prestamos-Libros, lo que si debes tener cuidado es si por una discapacidad podría recibir más de una ayuda económica, lo que te daría otra estructura más para poder normalizar, porque ayuda se comportaría como un multivaluado, sin es que puede recibir más de un apoyo por una sola discapacidad
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 27
Ha aumentado 1 puesto en Bases de Datos (en relación al último mes)
Gráfica de Bases de Datos

atributos compuestos en E-R

Publicado por Alejandro (15 intervenciones) el 20/01/2020 09:05:34
Te comento, lo de la ayuda_económica no tiene nada que ver con la discapacidad. Este modelo es para conformar una base de datos para el área de empleo de una administración, lo de la ayuda es porque esta administración da ayudas económicas para ciertas personas con pocos recursos económicos. De todas formas muchas gracias.

Lo que si me gustaría saber es si el campo localidad esta bien planteado, he reusado el atributo Código Postal (CP) de la tabla "usuarios" y he hecho una tabla nueva haciendo ese atributo como PK para evitar la dependencia transitoria entre CP y Localidad, ademas del atributo dirección.

Por otra parte en las relaciones de herencia es correcto por ejemplo si tienen carnets (ya sea de conducir o de profesionalidad) plasmar ese campo en la tabla "usuarios" como un campo booleano??? y de ahí sacar la relación de herencia "tiene"?


Gracias de antemano Jorge.
bd2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar