Herramientas de usuario

Herramientas del sitio


informatica:programacion:cursos:desarrollo_web_backend:diseno_base_datos

Diferencias

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

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
informatica:programacion:cursos:desarrollo_web_backend:diseno_base_datos [2024/11/16 14:59] – u tempwininformatica:programacion:cursos:desarrollo_web_backend:diseno_base_datos [2024/11/19 12:11] (actual) – [Diseño de bases de datos] tempwin
Línea 1: Línea 1:
 ====== Diseño de bases de datos ====== ====== Diseño de bases de datos ======
  
-<WRAP center round info 60%>+<WRAP center round box 80%>
 Módulo perteneciente al curso [[informatica:programacion:cursos:desarrollo_web_backend|Desarrollo web back-end]] Módulo perteneciente al curso [[informatica:programacion:cursos:desarrollo_web_backend|Desarrollo web back-end]]
 </WRAP> </WRAP>
Línea 46: Línea 46:
  
 Es importante entender cómo se relacionan las entidades entre sí en una base de datos relacional. La relación entre dos entidades se define mediante una clave foránea, que es un atributo en una tabla que hace referencia a la clave primaria en otra tabla. Es importante entender cómo se relacionan las entidades entre sí en una base de datos relacional. La relación entre dos entidades se define mediante una clave foránea, que es un atributo en una tabla que hace referencia a la clave primaria en otra tabla.
-===== Recursos ===== 
- 
-  * [[https://www.php.net/manual/en/book.mysqli.php|MySQL Improved Extension]] 
-  * [[https://www.php.net/manual/es/book.mysql.php|Sistemas gestores de bases de datos MySQL]] 
-  * [[https://www.w3schools.com/sql/sql_intro.asp|Tutorial sobre diseño de bases de datos relacionales]] 
  
 ===== Claves primarias, únicas, múltiples y foráneas ===== ===== Claves primarias, únicas, múltiples y foráneas =====
Línea 87: Línea 82:
 </code> </code>
  
 +===== Relaciones entre tablas =====
  
 +Las relaciones entre tablas son una parte fundamental del diseño de bases de datos relacionales. Una relación se establece entre dos tablas cuando existe una conexión lógica entre los datos almacenados en ellas. 
 +
 +En este punto, vamos a ver las tres relaciones más comunes entre tablas: uno a muchos, uno a uno y muchos a muchos.
 +
 +==== Relación uno a muchos ====
 +
 +Un registro de una tabla se relaciona con muchos registros de otra tabla. 
 +
 +Por ejemplo, una tabla de "clientes" puede tener una relación uno a muchos con una tabla de "pedidos", donde cada cliente puede tener varios pedidos asociados. En este caso, la tabla de "clientes" sería la tabla principal y la tabla de "pedidos" sería la tabla secundaria. Para establecer esta relación, se utiliza una clave foránea en la tabla secundaria que hace referencia a la clave primaria de la tabla principal.
 +
 +<WRAP center round todo 60%>
 +IMAAAAAAAAAAAAAAAAAAAAGEN
 +</WRAP>
 +
 +Códigos SQL del ejemplo:
 +
 +<code sql>
 +CREATE TABLE Clientes (
 +    id_cliente INT PRIMARY KEY,
 +    nombre VARCHAR(50)
 +);
 +
 +CREATE TABLE Pedidos (
 +   id_pedido INT PRIMARY KEY,
 +   fecha_pedido DATE,
 +   id_cliente INT,
 +   FOREIGN KEY (id_cliente) REFERENCES Clientes(id_cliente)
 +);
 +</code>
 +
 +==== Relación uno a uno ====
 +
 +Un registro de una tabla se relaciona con un solo registro de otra tabla. 
 +
 +Por ejemplo, una tabla de "empleados" puede tener una relación uno a uno con una tabla de "detalles empleados", donde cada empleado tiene una sola información de contacto asociada en esta segunda tabla. En este caso, ambas tablas tienen una clave primaria y se utiliza una clave foránea en una de las tablas para establecer la relación.
 +
 +<WRAP center round todo 60%>
 +IMAAAAAAAAAAAAAAAAAAAAGEN
 +</WRAP>
 +
 +Códigos SQL del ejemplo:
 +
 +<code sql>
 +CREATE TABLE Empleados (
 +   id_empleado INT PRIMARY KEY,
 +   nombre VARCHAR(50),
 +   id_detalles_empleado INT UNIQUE,
 +   FOREIGN KEY (id_detalles_empleado) REFERENCES
 +Detalles_Empleados(id_detalles_empleado)
 +);
 +
 +CREATE TABLE Detalles_Empleados (
 +   id_detalles_empleado INT PRIMARY KEY,
 +   direccion VARCHAR(100),
 +   telefono VARCHAR(20)
 +);
 +</code>
 +
 +==== Relación muchos a muchos ====
 +
 +Muchos registros de una tabla se relacionan con muchos registros de otra tabla. 
 +
 +Por ejemplo, una tabla de "estudiantes" puede tener una relación muchos a muchos con una tabla de "cursos", donde muchos estudiantes pueden estar inscritos en muchos cursos diferentes. En este caso, se utiliza una tabla intermedia que contiene las claves primarias de ambas tablas para establecer la relación.
 +
 +<WRAP center round todo 60%>
 +IMAAAAAAAAAAAAAAAAAAAAGEN
 +</WRAP>
 +
 +Códigos SQL del ejemplo:
 +
 +<code sql>
 +CREATE TABLE Estudiantes (
 +   id_estudiante INT PRIMARY KEY,
 +   nombre VARCHAR(50)
 +);
 +
 +CREATE TABLE Cursos (
 +   id_curso INT PRIMARY KEY,
 +   nombre VARCHAR(50)
 +);
 +
 +CREATE TABLE Inscripciones (
 +   id_estudiante INT,
 +   id_curso INT,
 +   PRIMARY KEY (id_estudiante, id_curso),
 +   FOREIGN KEY (id_estudiante) REFERENCES
 +Estudiantes(id_estudiante),
 +   FOREIGN KEY (id_curso) REFERENCES Cursos(id_curso)
 +);
 +</code>
 +
 +===== Modelado de base de datos utilizando draw.io =====
 +
 +A continuación, aprenderás a modelar una base de datos utilizando la herramienta diagrams (antes conocida como draw.io), que es una herramienta online gratuita y de código abierto que te permite diseñar y crear diagramas de forma fácil y sencilla.
 +
 +Para empezar, lo primero que debes hacer es acceder a la [[https://app.diagrams.net|página web oficial de diagrams]] y crear una cuenta si aún no la tienes. Una vez que hayas iniciado sesión, podrás empezar a crear tu diagrama de base de datos.
 +
 +En diagrams, puedes crear formas y objetos personalizados para representar tablas, relaciones y otros elementos de tu base de datos.
 +
 +Además, también puedes utilizar diferentes estilos y colores para hacer que tu diagrama sea más fácil de entender.
 +
 +Para crear una tabla, simplemente arrastra y suelta la forma de tabla en tu lienzo. Luego,puedes agregar columnas y definir los tipos de datos que deseas utilizar para cada columna.
 +
 +Para representar las relaciones entre tablas, puedes utilizar las flechas de conexión y las etiquetas para indicar el tipo de relación (uno a uno, uno a muchos, muchos a muchos, etc.). También puedes personalizar la apariencia de las flechas y las etiquetas para que se ajusten a tu diseño.
 +
 +Una vez que hayas terminado de crear tu diagrama, puedes exportarlo en diferentes formatos (como PNG, PDF o SVG) para compartirlo con otros usuarios o para utilizarlo en tu proyecto.
 +
 +===== Creación del diagrama entidad/relación =====
 +
 +En esta sección del curso se aprenderá cómo crear un diagrama entidad/relación (ER) para una base de datos.
 +
 +El diagrama ER es una representación gráfica de las entidades, relaciones y atributos que conforman una base de datos relacional.
 +
 +Para crear un diagrama ER es importante seguir estos pasos:
 +
 +  * **Identificar las entidades**: las entidades son objetos o conceptos del mundo real que serán representados en la base de datos. Ejemplos de entidades pueden ser "clientes", "productos" o "pedidos".
 +  * **Identificar las relaciones**: las relaciones son las conexiones entre las entidades. Por ejemplo, un cliente puede realizar muchos pedidos, lo que significa que existe una relación "uno a muchos" entre las entidades "clientes" y "pedidos".
 +  * **Identificar los atributos**: los atributos son las características o propiedades que definen una entidad. Por ejemplo, un cliente puede tener atributos como "nombre", "dirección" o "email".
 +
 +Una vez que se han identificado las entidades, relaciones y atributos, se puede comenzar a crear el diagrama ER. Existen diferentes herramientas para crear diagramas ER, como diagrams.net.
 +
 +En el diagrama ER, las entidades se representan como rectángulos y las relaciones como líneas que conectan los rectángulos. Los atributos se representan dentro de los rectángulos.
 +
 +Es importante tener en cuenta que existen diferentes tipos de relaciones, como "uno a muchos", "uno a uno" y "muchos a muchos", cada una representada de una manera diferente en el diagrama ER.
 +
 +Para crear un diagrama ER efectivo, es necesario tener un conocimiento profundo de la estructura y los datos de la base de datos, así como una comprensión clara de las necesidades y requerimientos del proyecto.
 +
 +A continuación, se presenta un ejemplo sencillo de diagrama ER para una base de datos que almacena información de clientes y sus pedidos:
 +
 +<WRAP center round todo 60%>
 +VIDEOOOOOOOOOOOOOOOOOOOOOOOO
 +</WRAP>
 +
 +En este ejemplo, se han identificado dos entidades: "clientes" y "pedidos". Existe una relación "uno a muchos" entre las entidades "clientes" y "pedidos", ya que un cliente puede realizar muchos pedidos, pero cada pedido pertenece a un solo cliente. Los atributos identificados para la entidad "clientes" son "id_cliente" y "nombre_cliente", mientras que para la entidad "pedidos" son "id_pedido", "fecha_pedido" y "id_cliente".
 +
 +===== Integridad referencial y el diagrama entidad/relación =====
 +
 +La integridad referencial es un concepto clave en la construcción de bases de datos relacionales. Consiste en mantener la consistencia de los datos entre las tablas de la base de datos, mediante la utilización de claves foráneas.
 +
 +En un diagrama entidad/relación la integridad referencial se representa  mediante una línea que conecta la clave primaria de una tabla con la clave foránea de otra tabla. Esta línea indica que existe una relación entre las tablas y que la clave foránea de la segunda tabla hace referencia a la clave primaria de la primera tabla.
 +
 +La integridad referencial se puede definir mediante la utilización de cláusulas como ONDELETE o ON UPDATE, que especifican qué hacer cuando se intenta eliminar o actualiza runa fila en una tabla que está referenciada por una clave foránea en otra tabla. 
 +
 +Por ejemplo, si se define ''ON DELETE CASCADE'', al eliminar una fila en la tabla padre, se eliminarán automáticamente todas las filas en las tablas hijas que estén referenciando la fila eliminada.
 +
 +===== Teoría relacional: las cuatro formas normales del diseño de bases de datos =====
 +
 +La teoría relacional es un concepto fundamental en el diseño y construcción de bases de datos. Una base de datos bien diseñada debe seguir ciertas normas para garantizar su eficiencia, integridad y consistencia.
 +
 +Las cuatro formas normales del diseño de bases de datos son una serie de reglas que permiten estructurar una base de datos de manera óptima.
 +
 +==== La primera forma normal (1FN) ====
 +
 +La primera forma normal (1FN) establece que todas las tablas de la base de datos deben tener una clave primaria única y que cada columna debe ser atómica, es decir, no se permiten valores repetidos o combinados. 
 +
 +Por ejemplo, en una tabla de empleados, la información de teléfono y dirección debe estar en columnas separadas, no en una sola columna.
 +
 +==== La segunda forma normal (2FN) ====
 +
 +La segunda forma normal (2FN) se refiere a la eliminación de redundancias y establece que cada columna debe depender solo de la clave primaria de la tabla. 
 +
 +Por ejemplo, en una tabla de pedidos, la fecha del pedido debe estar en una tabla separada de los detalles del pedido, para evitar la redundancia de información.
 +
 +==== La tercera forma normal (3FN) ====
 +
 +La tercera forma normal (3FN) se enfoca en la eliminación de dependencias transitivas, es decir, cuando una columna depende de otra columna que no es la clave primaria. 
 +
 +Por ejemplo, en una tabla de empleados, si la dirección de un empleado depende de su departamento, la información de departamento debe estar en una tabla separada.
 +
 +==== La cuarta forma normal (4FN) ====
 +
 +Finalmente, la cuarta forma normal (4FN) se centra en la eliminación de dependencias multivaluadas. Una dependencia multivaluada ocurre cuando una tabla tiene más de una clave y las dependencias entre ellas no están claras. 
 +
 +Por ejemplo, en una tabla de ventas, si un producto puede estar en varias categorías, la información de categoría debe estar en una tabla separada.
 +
 +
 +===== Recursos =====
 +
 +  * [[https://www.php.net/manual/en/book.mysqli.php|MySQL Improved Extension]]
 +  * [[https://www.php.net/manual/es/book.mysql.php|Sistemas gestores de bases de datos MySQL]]
 +  * [[https://www.w3schools.com/sql/sql_intro.asp|Tutorial sobre diseño de bases de datos relacionales]]
 +  * [[https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html|Documentación de MySQL sobre claves primarias y foráneas]]
 +  * [[https://dev.mysql.com/doc/refman/8.0/en/partitioning-limitations-partitioning-keys-unique-keys.html|Documentación de PHP sobre el uso de claves en bases de datos]]
 +  * [[https://www.php.net/manual/es/book.pdo.php|Objetos de datos PHP]]
 +  * [[https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html|Crear tabla con FOREIGN KEY Constraints]]
 +  * [[https://www.php.net/manual/es/security.database.design.php|Diseño de bases de datos en PHP]]
informatica/programacion/cursos/desarrollo_web_backend/diseno_base_datos.1731765566.txt.gz · Última modificación: por tempwin