elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  Bases de Datos (Moderador: Carloswaldo)
| | | |-+  Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Diseño Conceptual: Entidades Fuertes Y Entidades Débiles  (Leído 3,936 veces)
Skar.2007

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
« en: 12 Marzo 2022, 19:16 pm »

SQL Server 2014

Hola a todos

En el Diseño Conceptual se indica que una Entidad Débil es aquella que no puede existir si es que previamente no existe otra Entidad (Fuerte).

Se debe entender que en las Relaciones de Uno a Varios las Entidades del lado Varios, ¿siempre son Entidades Débiles?

Desde ya Muchísimas Gracias.


En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
« Respuesta #1 en: 12 Marzo 2022, 20:22 pm »

No, las relaciones 1-N lo que indican es que cada elemento de la primera entidad puede estar relacionado con varios elementos de la segunda pero cada elemento de la segunda sólo puede estar relacionado con uno de la primera.
Sin embargo, remarco los "puede" porque esas entidades también pueden existir sin tener relación con ningún elemento de la otra entidad.

También cabe aclarar que hay diferentes definiciones para "Entidad débil":
  • Entidad que no puede existir sin una entidad fuerte.
  • Entidad que por sí sola no tiene una clave primaria y necesita de algún atributo de una entidad fuerte para conformarla.
  • ...
El resumen es: "dependencia absoluta". Visto de una forma práctica: "Tiene sentido que guarde en mi base de datos el registro 'x' de la entidad A si no está asociado a ningún registro 'y' de la Entidad B? No" -> Entonces A es una entidad débil

Esto como siempre digo depende del diseño que se haga. Hay personas que omiten las entidades débiles y diseñan todas como si de entidades fuertes se trataran o hay quienes no modelan la entidad débil y sus campos los incluyen directamente dentro de la entidad fuerte de la que dependen.

Ej: Tienes una base de datos de un centro educativo y quieres guardar: Clase, Estudiante y Dirección (de residencia del estudiante)
Voy a seguir la siguiente nomenglatura para diseñar las entidades: ENTIDAD (campos..) // Ejemplos...
* Usaré un ID autoincremental como clave primaria (PK) para agilizar las cosas aunque se podrían formar mediante alguno/s de los atributos restantes

Código:
CLASE (id, curso, letra, mascota_de_la_clase)                         // [1, 1, A, El calamar Baltasar] | [2, 1, B, El puercoespín Serafín] | [3, 2, A, La rana Gustavo]
DIRECCION (id, calle, portal, piso, letra, ciudad, pais)              // [1, ...] | [2, ...]
ESTUDIANTE (id, dni, nombre, id_clase (FK), id_direccion (FK))        // [1, 12345678A, Pepe, 1, 1] | [2, 87654321B, Juan, 3, 2]

La relación entre Clase - Estudiante es: 1-N (Cada clase puede tener varios estudiantes pero cada estudiante puede pertenecer a una sola clase)
La relación entre Estudiante - Dirección es: 1-1 (Cada estudiante puede tener una sola dirección y cada dirección tiene que estar asociada a un estudiante)

"¿Y si 2 estudiantes viven en la misma dirección? ¿La relación no sería 1-N?"
Si haces eso y después de un tiempo uno de los estudiantes cambia de dirección, irás a la base de datos buscarás el ID de la dirección de ese estudiante y la actualizarás. Qué habrá pasado? Que el otro estudiante se acaba de mudar también sin darse cuenta :o (porque el ID de sus direcciones son el mismo)

Por eso en un caso como este es preferible que la relación sea 1-1. Además nótese que he dicho "cada dirección tiene que estar asociada a un estudiante" y no "cada dirección puede estar asociada a un estudiante". Tendría sentido que un día haya que borrar a un alumno de la base de datos y se quedase su dirección ahí colgando sin saber cómo ha llegado ahí?? Yo diría que no. Por lo tanto la entidad Dirección tiene todas las papeletas para ser una entidad débil y aplicar las siguientes reglas:
  • "No guardar direcciones en la base de datos si no están asociadas a ningún estudiante"
  • "Si se elimina un Estudiante de la base de datos, se debe eliminar su dirección asociada"

Espero que con esto te haya aclarado un poco tus dudas.  :-X


« Última modificación: 12 Marzo 2022, 20:24 pm por K-YreX » En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Skar.2007

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
« Respuesta #2 en: 15 Marzo 2022, 00:27 am »

Gracias K-YreX

Excelente respuesta. Una explicación magistral.

Entonces en la relación siguiente...

Proveedor 1------------N Producto

... podemos afirmar que, ¿Producto no es una Entidad Débil?

Desde ya Muchísimas Gracias
En línea

K-YreX


Desconectado Desconectado

Mensajes: 1.008



Ver Perfil
Re: Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
« Respuesta #3 en: 15 Marzo 2022, 19:24 pm »

Las bases de datos siempre dependen mucho de la lógica de negocio, es decir, las reglas propias que apliques a tu problema concreto. Estas reglas de negocio son las que definen las relaciones.

Yo me haría la siguiente pregunta:
¿En mi base de datos quiero permitir que haya productos que no estén asociados a ningún proveedor?
  • Sí. Entonces Producto no es una entidad débil. Puede existir por sí mismo y no tiene dependencia absoluta.
  • No, si elimino un proveedor, siempre voy a eliminar sus productos. Entonces Producto podría modelarse como una entidad débil.


O lo podemos ver de una forma más práctica todavía. Un mismo producto puede ser proporcionado por más de un proveedor? Si la respuesta es "sí", entonces Producto es una entidad débil. ¿Por qué?

Tenemos fruteros (proveedores) y frutas (productos). Entonces tenemos las siguientes tablas:
Código:
PROVEEDOR (id - nombre)
-----------------------
1 - Proveedor 1
2 - Proveedor 2

PRODUCTO (id - nombre - id_proveedor)
-------------------------------------
1 - Manzanas - 1
2 - Peras - 2
Hasta este punto ambos modelos nos sirven. De momento Producto puede ser fuerte o débil pero...
Ahora quiero meter el siguiente registro en la tabla Producto:
Código:
3 - Manzanas - 2
Ahora la entidad Producto se acaba de volver débil. Para que fuese fuerte, la relación tendría que ser N-M para poder tener un único registro "Manzanas" y tenerlo relacionado con ambos proveedores a la vez. Pero no es el caso.
Entonces para este caso, la entidad Producto debería ser una entidad débil y si borras el "Proveedor 1" de la base de datos, tendrías que borrar sus manzanas pero no las manzanas del "Proveedor 2".
En línea

Código
  1. cout << "Todos tenemos un defecto, un error en nuestro código" << endl;
Skar.2007

Desconectado Desconectado

Mensajes: 15


Ver Perfil
Re: Diseño Conceptual: Entidades Fuertes Y Entidades Débiles
« Respuesta #4 en: 23 Marzo 2022, 03:10 am »

Espectacular K-YreX

Sos un groso.

Más claro, ni el Agua.

Pocas veces las respuestas son tan completas y tan satisfactorias que se tiene la sensación que ya lo aprendiste todo (gracias a tus respuestas, por cierto).

Permíteme felicitarte por el esfuerzo y la pasión que pones en tus entregas.

Simplemente Extraordinario.

Muchísimas Gracias.

En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
MER - Relacion entre 3 entidades
Bases de Datos
diego_lp 6 8,915 Último mensaje 23 Octubre 2010, 13:37 pm
por KuraraGNU
Mapear esquema Entidad-Relación con entidades débiles
Bases de Datos
Aikanáro Anário 0 5,085 Último mensaje 18 Febrero 2012, 05:54 am
por Aikanáro Anário
[Consulta] Query a entidades debiles
PHP
jagltoro 4 2,854 Último mensaje 10 Abril 2012, 00:20 am
por jagltoro
Consulta a Entidades Debiles
Bases de Datos
jagltoro 0 1,987 Último mensaje 14 Abril 2012, 17:38 pm
por jagltoro
relacionar entidades c#
.NET (C#, VB.NET, ASP)
m@o_614 0 2,109 Último mensaje 19 Mayo 2013, 21:39 pm
por m@o_614
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines