| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa |
| bases_de_datos:diseno:modelo_relacional [2021/07/01 13:00] – [Restricciones del modelo relacional] alberto | bases_de_datos:diseno:modelo_relacional [2021/07/01 13:19] (actual) – [Restricciones de usuario] alberto |
|---|
| |
| ===== Estática del Modelo Relacional ===== | ===== Estática del Modelo Relacional ===== |
| |
| Una relación se compone de un nombre, unos atributos (con sus correspondientes dominios) y un conjunto de tuplas, y se define de la siguiente manera: | Una relación se compone de un nombre, unos atributos (con sus correspondientes dominios) y un conjunto de tuplas, y se define de la siguiente manera: |
| {{ :bases_de_datos:diseno:definicionrelacion.png?direct |Definición de relación}} | {{ :bases_de_datos:diseno:definicionrelacion.png?direct |Definición de relación}} |
| * **Valores de uno o varios atributos que no pueden repetirse** | * **Valores de uno o varios atributos que no pueden repetirse** |
| * **Atributos que deben tener siempre valores para todas las tuplas de la relación**: En SQL se define como **NOT NULL**. | * **Atributos que deben tener siempre valores para todas las tuplas de la relación**: En SQL se define como **NOT NULL**. |
| * **Integridad referencial**: Forma en la que los datos de dos o más tablas se deben relacionar para no atentar contra la integridad de la base de datos (que no haya información repetida). Esto se hace a través de la **Clave Ajena** o //**FOREIGN KEY**// en SQL. Esta relación entre tablas se representa del siguiente modo: {{ :bases_de_datos:diseno:relaciontablas.png?direct |Relación entre tablas a través de la clave ajena}} | * **Integridad referencial**: Forma en la que los datos de dos o más tablas se deben relacionar para no atentar contra la integridad de la base de datos (que no haya información repetida). Esto se hace a través de la **Clave Ajena** o //**FOREIGN KEY**// en SQL. Se representa mediante una flecha que sale de la clave ajena y apunta hacia la clave primaria de la tabla con la que se relaciona. Podemos ver un ejemplo: {{ :bases_de_datos:diseno:relaciontablas.png?direct |Relación entre tablas a través de la clave ajena}} |
| * **Operación restringida**: El borrado (DR) o la modificación (UR) de las filas de la relación que contiene la clave ajena no se permite mientras existan tuplas en la relación a la que se referencia. En SQL es conocida como **NO ACTION** o **RESTRICT**. | * **Operación restringida**: El borrado (DR) o la modificación (UR) de las filas de la relación que contiene la clave ajena no se permite mientras existan tuplas en la relación a la que se referencia. En SQL es conocida como **NO ACTION** o **RESTRICT**. |
| * **Operación en cascada**: Cuando se elimina (DC) o modifica (UC) una tupla de la relación que es referenciada, los cambios se transmiten en cascada a las tuplas de la relación que contiene la clave ajena cuyos valores se han modificado. Conocida en SQL como **CASCADE**. | * **Operación en cascada**: Cuando se elimina (DC) o modifica (UC) una tupla de la relación que es referenciada, los cambios se transmiten en cascada a las tuplas de la relación que contiene la clave ajena cuyos valores se han modificado. Conocida en SQL como **CASCADE**. |
| Se han expuesto las restricciones básicas que deben tener en cuenta los usuarios en el diseño de bases de datos relacionales, pero existen más (SET NULL, SET DEFAULT, etc). | Se han expuesto las restricciones básicas que deben tener en cuenta los usuarios en el diseño de bases de datos relacionales, pero existen más (SET NULL, SET DEFAULT, etc). |
| |
| | ===== Reglas básicas para la transformación del modelo E/R al modelo relacional ===== |
| | En la segunda fase del diseño tenemos que transformar el esquema realizado en el modelo Entidad/Interrelación a un esquema lógico, ya que no existe ningún Sistema Gestor de Bases de Datos que soporte el modelo E/R. |
| | |
| | * **Primera regla de transformación**: Toda entidad se transforma en una relación o tabla, y los atributos o características asociadas a ella pasan a ser atributos de la relación. En general, el nombre de la tabla suele ser el plural del nombre de la entidad. |
| | * **Segunda regla de transformación**: las interrelaciones cuyo tipo de correspondencia es N:M se transforman en una nueva relación cuyo nombre se corresponde con el nombre de la interrelación y donde la clave primaria se compone de los atributos identificadores de las dos entidades que relaciona. |
| | * **Tercera regla de transformación**: La transformación de interrelaciones cuyo tipo de correspondencia es 1:N se traduce en una propagación de clave o en una nueva relación si la interrelación posee atributos. |
| | |
| | EJEMPLO 1: \\ |
| | {{:bases_de_datos:diseno:transformacionejemplo11.png?direct|Interrelación de correspondencia N:M}}{{:bases_de_datos:diseno:transformacionejemplo12.png?direct|Transformación de una interrelación N:M}}{{:bases_de_datos:diseno:transformacionejemplo13.png?direct|Transformación de una interrelación N:M con las opciones de borrado (BC) y modificación (MC) en cascada}}\\ |
| |
| | \\ |
| | EJEMPLO 2: \\ |
| | {{:bases_de_datos:diseno:transformacionejemplo21.png?direct|Interrelación Trabajar con correspondencia 1:N}}{{:bases_de_datos:diseno:transformacionejemplo22.png?direct|Transformación de la Interrelación Trabajar}} |