====== Modelo Relacional ====== ===== Elementos básicos del Modelo Relacional ===== Los elementos básicos del modelo relacional son las relaciones, cuya representación gráfica se realiza en forma de tabla. En las relaciones se pueden distinguir varios tipos de elementos: * **Nombre**: Nombre de la tabla. * **Atributos**: Representan las columnas de la tabla y define los datos que va a contener cada elemento. * **Tuplas o filas**: Elementos (datos) que contiene la tabla. Dentro de una relación podemos distinguir además dos nociones: * **Grado**: número de atributos (columnas) que posee la relación. * **Cardinalidad**: número de tuplas (filas) de la relación. En estas tablas se prohibe que exista más de un valor en cada celda. ===== 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: {{ :bases_de_datos:diseno:definicionrelacion.png?direct |Definición de relación}} Los dominios son opcionales, pues los atributos pueden tomar valores en un conjunto acotado definido previamente, o bien y en principio, ser infinitas las posibilidades de un valor determinado. Dentro de las relaciones existen principalmente dos tipos: relaciones base y vistas. Las relaciones base son relaciones con existencia propia, las vistas son relaciones que provienen de otras relaciones base (por ejemplo, el resultado de una búsqueda). ==== Restricciones inherentes del modelo relacional ==== * **Ningún atributo puede tomar más de un valor para cada tupla**: Es lo mismo que decir que en cada una de las celdas de una tabla que represente una relación no puede haber más de un valor. * **No importa el orden ni de las tuplas ni de los atributos** * **Todas las tuplas de una relación deben ser distintas**: Si no, se duplicaría información. Al menos debe haber un atributo que identifique inequívocamente esa tupla: **Clave primaria** o //**PRIMARY KEY**// en lenguaje SQL. * **Regla de integridad de la entidad**: Ningún atributo que forme parte de la clave primaria puede tomar un valor nulo. ==== Restricciones de usuario ==== * **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**. * **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 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). ===== 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}}