Herramientas de usuario

Herramientas del sitio


bloque2:diseno

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

bloque2:diseno [2022/02/15 22:51] – [Transformación de Modelo E/R a Relacional] fernandobloque2:diseno [2024/09/16 19:34] (actual) – editor externo 127.0.0.1
Línea 229: Línea 229:
  
  
-=== Claves Secundarias ===+=== Claves Alternativas o Secundarias ===
 Se suele llamar de este modo a todos los campos que identifican a cada registro de forma inequívoca, es decir, campos que almacenan valores que no se pueden repetir en más de un resgistro de una misma tabla.  Se suele llamar de este modo a todos los campos que identifican a cada registro de forma inequívoca, es decir, campos que almacenan valores que no se pueden repetir en más de un resgistro de una misma tabla. 
  
Línea 244: Línea 244:
   * El **identificador único** de la entidad se convierte en clave primaria. Siempre que pueda, añadiré un campo //id// como clave primaria.   * El **identificador único** de la entidad se convierte en clave primaria. Siempre que pueda, añadiré un campo //id// como clave primaria.
   * Los **atributos multivaluados** generan una nueva tabla con tres columnas: un //id//, el //id// de la tabla de la que surgen propagado como //clave ajena// y el valor del campo multivaluado. <code>(#id, -id_tabla_origen, atributo_multivaluado)</code>   * Los **atributos multivaluados** generan una nueva tabla con tres columnas: un //id//, el //id// de la tabla de la que surgen propagado como //clave ajena// y el valor del campo multivaluado. <code>(#id, -id_tabla_origen, atributo_multivaluado)</code>
 +
 **Relaciones:** **Relaciones:**
  
Línea 280: Línea 281:
 >Tablas empleados y despachos (Ejemplo 1) >Tablas empleados y despachos (Ejemplo 1)
  
-<code>+<code sql>
 -- Ejemplo 1: Clave primaria y ajena al mismo tiempo -- Ejemplo 1: Clave primaria y ajena al mismo tiempo
  
Línea 294: Línea 295:
   * Las relaciones de **herencia** se transforman como relaciones 1:1 entre tablas padres e hijas. Aplicando las reglas anteriores, se ha de crear una tabla por cada entidad hija con sus propias columnas.     * Las relaciones de **herencia** se transforman como relaciones 1:1 entre tablas padres e hijas. Aplicando las reglas anteriores, se ha de crear una tabla por cada entidad hija con sus propias columnas.  
     - Para relacionarlas, la forma más directa es propagar la clave primaria de la tabla padre como claves ajenas en las tablas hijas; Las tablas hijas tienen como clave primaria el campo clave de la tabla padre (Ejemplo 1).      - Para relacionarlas, la forma más directa es propagar la clave primaria de la tabla padre como claves ajenas en las tablas hijas; Las tablas hijas tienen como clave primaria el campo clave de la tabla padre (Ejemplo 1). 
-    - La otra forma, menos común, es transfomarla como si fueran dos relaciones **1:N**: las tablas hijas tienen su propia clave primaria (id), y añadirán una columna nueva que es la clave primaria de la entidad padre, propagada como clave ajena. En este caso, al crear las tablas hijas en el SGBD, las claves ajenas deben tener ser columnas indexadas sin repeticiones/duplicados (''UNIQUE'') y sin valores nulos (''NOT NULL'', o la propiedad ''requerido'' en Access).// (Ejemplo 2)+    - La otra forma, menos común, es transfomarla como si fueran dos relaciones **1:N**: las tablas hijas tienen su propia clave primaria (id), y añadirán una columna nueva que es la clave primaria de la entidad padre, propagada como clave ajena. //En este caso, al crear las tablas hijas en el SGBD, las claves ajenas deben tener ser columnas indexadas sin repeticiones/duplicados (''UNIQUE'') y sin valores nulos (''NOT NULL'', o la propiedad ''requerido'' en Access).//   (Ejemplo 2).
    
- 
 Ejemplo: Una pista puede ser una pista_abierta o una pista_cerrada. Ejemplo: Una pista puede ser una pista_abierta o una pista_cerrada.
 {{ :bloque2:conversion-herencia.png?700 |}} {{ :bloque2:conversion-herencia.png?700 |}}
Línea 302: Línea 302:
 >Tablas pistas, pistas_abiertas y pistas_cerradas >Tablas pistas, pistas_abiertas y pistas_cerradas
  
-<code>+<code sql>
 -- Ejemplo 1: Claves primarias y ajenas al mismo tiempo -- Ejemplo 1: Claves primarias y ajenas al mismo tiempo
  
Línea 319: Línea 319:
     * Si la cardinalidad es **N:M**, se crea una tabla nueva como el caso general de relación N:M. La clave primaria se compone de dos columnas que referencian al mismo id de la propia tabla.     * Si la cardinalidad es **N:M**, se crea una tabla nueva como el caso general de relación N:M. La clave primaria se compone de dos columnas que referencian al mismo id de la propia tabla.
     * Si la cardinalidad es **1:N**, se transforma como si se tratara de una relación 1:N, se propaga la clave primaria a la misma tabla como clave ajena.      * Si la cardinalidad es **1:N**, se transforma como si se tratara de una relación 1:N, se propaga la clave primaria a la misma tabla como clave ajena. 
-    * Si la cardinalidad es **1:1**, al tratarse de la misma tabla, se transforma como si se tratara de una relación 1:N. //Si usamos esta forma al crear la tabla en el SGBD la columna clave ajena no permitirá valores repetidos (indexada sin repeticiones, ó ''UNIQUE'')//.+    * Si la cardinalidad es **1:1**, al tratarse de la misma tabla, se transforma como si se tratara de una relación 1:N. //En este caso, al crear la tabla en el SGBD la columna clave ajena no permitirá valores repetidos (indexada sin repeticiones, ó ''UNIQUE'')//.
  
 {{ :bloque2:reflexividad.png?400 |}} {{ :bloque2:reflexividad.png?400 |}}
 >Un empleado puede supervisar a varios empleados >Un empleado puede supervisar a varios empleados
  
-<code>+<code sql>
 -- Relacion 1:N y 1:1 -- Relacion 1:N y 1:1
 empleados(#id, nombre, apellidos, dni, -id_empleado_supervisor) empleados(#id, nombre, apellidos, dni, -id_empleado_supervisor)
bloque2/diseno.1644965500.txt.gz · Última modificación: 2024/09/16 19:34 (editor externo)