Introducción a desarrollo web con PHP y Yii

1

Desarrollo web con G2: Framework PHP práctico y seguro

2

Desarrollo web con PHP y Yii: Instalación y uso eficiente

3

Arquitectura MVC: Modelo, Vista y Controlador

4

Instalación y Configuración de Yii en Entorno Local

5

Estructura de Archivos en Proyectos Yii2 Básicos

6

Configuración Básica de Proyectos en Yii con Variables de Entorno

Quiz: Introducción a desarrollo web con PHP y Yii

Esquema de la aplicación

7

Creación de una Biblioteca Personal con Yii2 y Bases de Datos

8

Creación y Gestión de Bases de Datos en SQL: Tablas y Buenas Prácticas

9

Tablas de Clubes y Miembros en MySQL

Quiz: Esquema de la aplicación

Modelos, vistas y controladores

10

Comandos en Yii: Creación y Ejecución de Controladores en Terminal

11

Modelos en PHP: Creación y Manipulación de Datos

12

ActiveRecord: Integración de Bases de Datos en Frameworks PHP y Ruby

13

Gestión de Autores y Libros en Yii: Creación y Consulta Eficiente

14

Relaciones ActiveRecord en Yii: Conectar Libros y Autores

15

Relaciones de uno a muchos en Yii: Obtener libros de un autor

16

Creación y Uso de Controladores Web en Yii Framework

17

Redirección y manejo de errores en controladores Yii

18

URLs Amigables: Gestión y Creación con URL Manager en PHP

19

Vistas en PHP con Yii y Smarty para Web Apps Sin Frameworks Frontend

20

Plantillas Smarty con Yii: Instalación y Uso Básico

Quiz: Modelos, vistas y controladores

Manejo de usuarios con Yii2

21

Creación y Gestión de Usuarios en Aplicaciones Web Seguras

22

Ofuscación y Validación de Contraseñas en Yii Framework

23

Implementación de Login y Gestión de Usuarios en Yii2

24

Controlador en Yii: Creación y Manejo de Usuarios

25

Creación de Formularios con ActiveForm y Smarty en PHP

26

Validación de Datos en Modelos y Formularios con Yii2

27

Validaciones y Filtros en PHP para Gestión de Usuarios

Quiz: Manejo de usuarios con Yii2

Enlaces, navegación y tablas intermedias

28

Creación y Gestión de Libros en Aplicaciones Web

29

Crear y Gestionar Repisas de Libros en PHP

30

Condicionales y funciones para gestionar libros en la aplicación

31

Calificación de Libros con Validación en PHP y Yii Framework

32

Generación de Información a Partir de Datos en Bases de Datos

33

Relaciones de Tablas en Bases de Datos: Cálculo de Promedios

34

Modificaciones de Menú y Layout en Aplicación Web con G

Quiz: Enlaces, navegación y tablas intermedias

Despliegue y cierre del proyecto

35

Deploy de Aplicaciones en Heroku: Paso a Paso Práctico

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Tablas de Clubes y Miembros en MySQL

9/35
Recursos

¿Cómo crear tablas para gestionar clubes y miembros en MySQL?

Diseñar una base de datos inteligente es clave para cualquier sistema que pretenda gestionar clubes de lectura de manera eficiente. En este artículo, te guiaré a través de la creación de tablas en MySQL para almacenar datos sobre clubes y sus miembros. Acompáñame para entender la lógica detrás de cada tabla y cómo garantizar la integridad y unicidad de la información.

¿Qué información debe contener la tabla de clubes?

Al pensar en la estructura de una tabla que albergue datos sobre clubes de lectura, es importante definir correctamente sus columnas para maximizar el valor de la información almacenada.

CREATE TABLE IF NOT EXISTS clubs (
    club_id INTEGER PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(100) NOT NULL UNIQUE,
    description VARCHAR(500),
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);
  • Identificación y nombre: Cada club tendrá un club_id único que será incrementado automáticamente. El name del club es un texto que no puede repetirse ni quedar vacío.
  • Descripción: Optativa, permite una longitud considerable que admite campos vacíos.
  • Tiempos de creación y modificación: Cruciales para entender cuándo y cómo evoluciona la información. Usamos CURRENT_TIMESTAMP para anotar automáticamente estos eventos en su ocurrencia.

¿Cómo asegurar la integridad de los datos con claves únicas y fechas?

Es fundamental definir correctamente las propiedades de integridad de las columnas clave para evitar duplicidades y asegurar la integridad de los datos.

  • Columnas únicas: El nombre del club se define como único para evitar entradas duplicadas.
  • Fechas automáticas: Marcamos cuándo se crea y modifica con DEFAULT CURRENT_TIMESTAMP y ON UPDATE CURRENT_TIMESTAMP respectivamente, facilitando auditorías o revisiones futuras.

¿Cómo y por qué asociar usuarios y clubes?

Asociar usuarios a clubes implica la creación de una tabla de relación que indica qué usuarios pertenecen a qué clubes y si tienen roles especiales dentro de ellos.

CREATE TABLE IF NOT EXISTS club_members (
    club_member_id INTEGER PRIMARY KEY AUTO_INCREMENT,
    user_id INTEGER UNSIGNED NOT NULL,
    club_id INTEGER UNSIGNED NOT NULL,
    is_admin TINYINT NOT NULL DEFAULT 0,
    created_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
    modified_at TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    UNIQUE KEY no_rep (user_id, club_id)
);
  • Roles en el club: La columna is_admin define si un miembro es administrador del club. Se inicia en cero, considerando que usualmente los miembros nuevos no son administradores.
  • Clave única compuesta: La combinación user_id y club_id garantiza que un usuario no pueda unirse varias veces al mismo club con la misma relación, evitando duplicaciones y errores.

¿Por qué usar índices únicos en combinación de columnas?

El uso de un índice único compuesto es esencial cuando trabajamos con dos o más columnas que, en conjunto, deberían ser únicas. Esta práctica es común en tablas de relaciones donde necesitamos evitar repeticiones de parejas de datos (como user_id y club_id en nuestra tabla club_members).

¿Qué otras tablas son necesarias en nuestro sistema?

Para completar el diseño de la base de datos, es recomendable considerar tablas adicionales:

  • Usuarios (Users): Gestiona la información personal de cada miembro.
  • Préstamos (Loans): Controla qué libros se han prestado entre miembros.
  • Libros de los usuarios (User Books): Almacena qué libros posee cada usuario.

Estas tablas complementarias se discutirán más adelante en el contexto del modelo user, asegurando un sistema robusto y adaptable a futuras necesidades.

Con esta guía, has adquirido no solo conocimientos sobre la creación de tablas en MySQL, sino también sobre cómo optimizar la integridad y unicidad de tu base de datos. ¡Sigue adelante y aplica estos conceptos para llevar tu sistema al siguiente nivel!

Aportes 5

Preguntas 0

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Esta clase es Oro en polvo para todos los que amamos el back-end.
En este espacio, también les quiero dar un tip que se usa en la industria , y es que en Producción el comando Delete está prohibido, porque las tablas deben ser auditables. Entonces, se maneja un concepto que se llama SoftDelete, en donde a todas las tablas les agregas un campo llmada status\_id, que nomalmente viene de la tabla status, con dos valores, 1 para activo y 2 para inactivo. Así, modelas el sistema para que, en vez de borrar un registro, le cambie el status a 2, y para que solo traiga los registros activos en los listados, es decir, los que tienen status de 1. Hay muchas formas de hacer Soft Delete, de hecho, laravel agrea un campo que se llama deleted\_at, que si es nulo toma el registro como activo y si tiene una fecha lo toma como borrado, Les recomiendo que investiguen un poco sobre el tema.
No me quedaron claras las razones para usar el terminal en esta clase
**Aqui un ejemplo de lo que se puede hacer utilizando la herramienta YII migrate, es muy util para gestionar todo lo que vayas agregar a la DB cuando trabas con equipos numerosos de trabajo. Si trabajas con control de versiones todos tendran al dia los cambios realizados sobre la db.** Aqui un poco mas a profundidad sobre este tema <https://www.yiiframework.com/doc/guide/2.0/en/db-migrations> ![](https://static.platzi.com/media/user_upload/imagen-129ec409-18e8-453c-bdac-35da2dc06a4f.jpg)
Asi voy hasta ahora ![](https://static.platzi.com/media/user_upload/image-b54da838-f800-4dc4-8aaa-2a327d6157d2.jpg)