Las bases de datos son fundamentales en el desarrollo de software moderno, constituyendo la columna vertebral de prácticamente cualquier aplicación que manejamos diariamente. Aunque muchos las confunden con simples hojas de cálculo, su estructura, reglas y capacidades van mucho más allá. Entender cómo funcionan y cómo se relacionan entre sí es esencial para cualquier persona interesada en la programación o el manejo de datos a nivel profesional.
¿Qué son realmente las bases de datos y por qué no son como Excel?
Muchas personas creen erróneamente que las bases de datos son simplemente tablas similares a Excel, donde se pueden colocar datos de cualquier tipo sin restricciones. Sin embargo, las bases de datos son sistemas estrictos que manejan tipos específicos de datos bajo reglas claras.
La diferencia fundamental radica en que Excel es una hoja cuadriculada flexible donde puedes colocar cualquier información sin restricciones, mientras que las bases de datos están diseñadas para mantener la integridad y evitar la redundancia de los datos. Esta característica es crucial porque de ellas dependen operaciones críticas de negocios como:
Transacciones bancarias
Sistemas de autenticación de usuarios
Registros de vuelos
Operaciones comerciales
Estos sistemas requieren estructuras estrictas de almacenamiento para garantizar la consistencia y confiabilidad de la información.
¿Cómo se estructuran las bases de datos para evitar redundancia?
Para evitar la redundancia, las bases de datos se organizan en tablas que representan categorías específicas de datos, las cuales se conectan entre sí mediante relaciones bien definidas.
Ejemplo práctico: estructura de una red social
Imaginemos que estamos diseñando la base de datos para una red social. Necesitaríamos, como mínimo, tres tablas principales:
Tabla de Usuarios:
ID de usuario (número entero, llave primaria)
Nombre de usuario (texto)
Contraseña (texto)
Fecha de registro (fecha)
Tabla de Posts:
ID del post (número entero, llave primaria)
ID del usuario (número entero, llave foránea)
Contenido (texto)
Fecha de publicación (fecha)
Contador de likes (número)
Contador de comentarios (número)
Tabla de Comentarios:
ID del comentario (número entero, llave primaria)
ID del post (número entero, llave foránea)
ID del usuario (número entero, llave foránea)
Contenido (texto)
Fecha (fecha)
Contador de likes (número)
En esta estructura, cada tabla tiene una llave primaria que identifica de manera única cada registro. Además, utilizamos llaves foráneas para establecer relaciones entre tablas, permitiendo conectar, por ejemplo, un comentario con el post al que pertenece y con el usuario que lo creó.
Conceptos clave en la estructura
Llave primaria: Identificador único para cada registro en una tabla.
Llave foránea: Campo que establece una relación con la llave primaria de otra tabla.
Tipos de datos: Cada campo tiene un tipo específico (número, texto, fecha) que determina qué información puede contener.
¿Qué tecnologías se utilizan para implementar bases de datos?
Existen diferentes motores de bases de datos, que son herramientas de software especializadas en almacenar y gestionar estas estructuras:
MySQL: La base de datos relacional más común en el mundo
PostgreSQL: Base de datos de alto rendimiento utilizada en proyectos profesionales grandes
SQL Server: Solución de Microsoft para bases de datos empresariales
Oracle: Sistema de bases de datos para aplicaciones corporativas
SQLite: Versión ligera para aplicaciones más pequeñas
Estos motores de bases de datos funcionan como servidores que permiten que múltiples usuarios accedan, lean y modifiquen la información simultáneamente bajo reglas específicas.
SQL: el lenguaje de las bases de datos
Para interactuar con bases de datos relacionales, se utiliza un lenguaje específico llamado SQL (Structured Query Language). Este lenguaje permite realizar consultas como la siguiente:
SELECT comentarios.*FROM comentarios
JOIN usuarios ON comentarios.usuario_id= usuarios.idWHERE usuarios.nombre_usuarioLIKE'f%';
Esta consulta seleccionaría todos los comentarios de usuarios cuyo nombre comienza con la letra "f". El dominio de SQL es una habilidad muy valorada y bien remunerada en el mercado laboral.
Bases de datos no relacionales (NoSQL)
Además de las bases de datos relacionales, existen otros tipos:
Bases de datos documentales: Almacenan datos en formato similar a JSON (MongoDB)
Bases de datos de grafos: Optimizadas para relaciones complejas entre entidades
Bases de datos llave-valor: Almacenan pares simples de llave y valor (Redis)
Estas alternativas son útiles para casos específicos donde las bases de datos relacionales tradicionales no son la mejor opción.
Las bases de datos son componentes esenciales en el desarrollo de software moderno, y su comprensión es fundamental para cualquier profesional de la tecnología. Más allá de simples tablas, representan sistemas complejos diseñados para mantener la integridad y eficiencia de los datos que sustentan aplicaciones de todo tipo. ¿Qué experiencia tienes con bases de datos? ¿Has trabajado con SQL o prefieres soluciones NoSQL? Comparte tu experiencia en los comentarios.
ComentariosPK comentarios_id int
FK usuario_id int
FK post_id int
contenido string
fecha_comentario date
```Freddy menciono que los comentarios tenían likes así que también se le debería agregar, pero como estructura mínima sería algo como lo que mencione.PD1:Entre el segundo 11 y 12 he notado un fallo en el audio. PD2:Va excelente todo el contenido del curso.
te falto (Contador_comentarios Int.)
Porque los comentarios tambien llevan comentarios y deben ser contados.
está bien tu propuesta, solamente veo que falta un atributo para la cantidad de likes en cada comentario
Tabla comentarios:
id_comentario [int] (clave primaria)
id_usuario [int] (clave foránea)
id_post [int] (clave foránea)
contenido_comentario [string]
fecha_comentario [date]
contador_me_gusta [int]
¡Le achunté 1:1 al modelo de Freddy! 😎
En un principio pense que la propuesta estaba mal porque el usuario deberia de llamarse diferente, pero despues de un rato entendi que estaba muy bien.
PD: Si me tarde unos minutos pensando porque jajaja
¿Qué es una base de datos?
Es un sistema organizado para almacenar, gestionar y recuperar datos de manera eficiente.
¿Cuál es la diferencia entre una base de datos y una hoja de cálculo?
Las bases de datos son más estructuradas y tienen reglas sobre la integridad y la redundancia de los datos, a diferencia de las hojas de cálculo.
¿Qué es una llave primaria?
Es un campo que identifica de manera única cada registro en una tabla de base de datos.
¿Qué es una llave foránea?
Es un campo que conecta una tabla con otra, permitiendo establecer relaciones entre ellas.
¿Qué es SQL?
Es un lenguaje de programación utilizado para gestionar y consultar bases de datos.
¿Qué es la normalización en bases de datos?
Es el proceso de organizar los datos para reducir la redundancia y mejorar la integridad.
¿Qué es una base de datos NoSQL?
Es un tipo de base de datos que no se basa en el modelo relacional y puede manejar datos no estructurados.
¿Qué son los motores de bases de datos?
Son software que permiten almacenar y gestionar bases de datos, como MySQL o PostgreSQL.
¿Cómo se realiza una consulta en SQL?
Se usa la instrucción SELECT para recuperar datos de una o más tablas.
¿Qué son los metadatos en las bases de datos?
Son datos que describen otros datos, como la estructura de la base de datos y las relaciones entre las tablas.
gracias
Muchas Gracias por el resumen!
PERSON
id: Identificador único de la persona.
name: Nombre real (ej. Mark).
HERO
id: ID del héroe.
person_id: Llave foránea hacia PERSON.id.
hero_name: Nombre del héroe (ej. Invincible).
VILLAIN
id: ID del villano.
person_id: Llave foránea hacia PERSON.id.
villain_name: Alias del villano.
SUPERPOWER
id: ID del superpoder.
description: Descripción del poder.
hero_id: Relación con el héroe que lo posee.
gracias
Notas de clase!!
Bases de Datos
Es una colección de recursos que sigue reglas estrictas 👮🏻♂️
No redundancia ❌🔄 : no repetir data innecesariamente, esto se logra dividiendo la info en tablas relacionadas con llaves
Integridad 🧱 : los datos deben ser correctos, completos y coherentes
llaves 🔑 : Las tablas se conectan mediante FK (Foreign keys), mientras que cada tabla asigna una PKs (Primary keys) de forma unica a cada record (o registro, fila)
Tipos de datos
Int → Numeros enteros
Varchar → Texto
DATE → Fecha
BOOLEAN → verdadero o falso
Float → Numeros decimales
A los numeros decimales se les llama numero de punto flotante (de allí el float)
Lenguaje SQL 🧠
Structured Query languaje → Es es el lenguaje estandar para extraer informacion de las bases de datos, se usan comandos como SELECT, INSERT, JOIN, ETC.
Motores de DBs 🚂
PostgreSQL → Robusto y gratuito
MySQL → Popular
SQLServer → El de microsoft
Oracle → Corporativo y muy potente
SQLite → ligero
Access → de microsoft y de interfaz amigable
Tipos de bases de datos
Relacionales (SQL)
No Relacionales (NoSQL) → Usan data no estructurada, es ideal para grandes datos y no estructurados, incluyendo texto. Ej: llave-valor, grados, etc.
En entornos profesionales las bases de datos tienen 2 conceptos fundamentales:
Alta Disponibilidad; ( High Availability ) que permite tener acceso todo el tiempo y de manera casi inmediata, se crean copias de solo lectura mas cerca o con datos de alta frecuencia de acceso.
Recuperacion de Desastres; ( Disaster Recovery ) que es una estrategia de como volver a la vida si algo sale mal, copias secndarias a la espera de volverse primarias en caso de falla, o recuperarse desde la ultima copia en cinta
Muchas gracias por compartir información con nosotros
Aca muestro mi tablita porque no quiero quedar como un peresozo. Tengo una duda, el orden como van los items es obligatorio mantenerlo? o es solo un forma de ordenar
Felicidades! Se deben colocar primero las keys, es decir, la primary key y la foreign key. En realidad, el orden del resto de los items no es tan relevante... aunque se suelen colocar de último los items de las fechas (creación y actualización) éxito!
Las técnicas para reducir la redundancia en bases de datos se conocen como "normalización". La normalización implica organizar los datos en tablas y establecer relaciones entre ellas para minimizar la duplicación de información. Los pasos básicos incluyen dividir grandes tablas en tablas más pequeñas y definir relaciones entre ellas a través de llaves primarias y foráneas. La normalización es esencial para mantener la integridad de los datos y optimizar el almacenamiento en bases de datos, mejorando así la eficiencia general del sistema.
Estructura de tabla de comentarios:PK comentario_id int --identificador unico del comentario
FK usuario_id int --llave foranea del usuario
FK post_id int --llave foranea del post
contenido string --contenido del comentario
fecha_registro date --fecha de creacion del comentario
¿Son las bases de datos como Excel?
Muchas personas creen que las bases de datos son como hojas de cálculo de Excel. Por ejemplo, podríamos tener una tabla con los siguientes campos:
Nombre
Cargo
Edad
Salario
País
Esto se parece a una tabla en Excel, donde puedes escribir cualquier cosa en cualquier celda. Sin embargo, Excel no es una base de datos. Es solo una hoja cuadriculada sin reglas específicas para los datos.
¿Qué diferencia a una base de datos?
Las bases de datos son mucho más estrictas. Están diseñadas para manejar datos con reglas y tipos específicos. Las variables tienen que seguir tipos definidos (números, textos, fechas, etc.).
Regla fundamental:
Evitar la redundancia: los datos deben ser únicos para mantener la integridad del sistema.
Por ejemplo:
No puede haber distintos formatos para las contraseñas o tipos de usuarios.
No puede haber distintos formatos para un vuelo o una transacción bancaria.
¿Cómo se estructura una base de datos?
Una base de datos se compone de varias tablas que representan categorías de datos. Estas tablas están conectadas entre sí.
Ejemplo: una red social
Tabla de Usuarios
Campos:
ID de usuario (número entero, identificador único)
Nombre de usuario (texto)
Contraseña (texto)
Fecha de registro (tipo fecha)
Tabla de Posts
Campos:
ID del post (número único)
ID del usuario (llave foránea que conecta con la tabla de usuarios)
Contenido (texto)
Fecha de publicación (fecha)
Likes (número que cuenta los "me gusta")
Tabla de Comentarios
Campos:
ID del comentario (número único)
ID del post (llave foránea que conecta con la tabla de posts)
ID del usuario (llave foránea que conecta con la tabla de usuarios)
Contenido (texto)
Fecha (tipo fecha)
Likes (número)
¿Qué son llaves primarias y foráneas?
Llave primaria: identificador único de una fila en una tabla. Ej.: usuario_id en la tabla de usuarios.
Llave foránea: hace referencia a una llave primaria en otra tabla. Sirve para conectar datos entre tablas.
Motores y tipos de bases de datos
Motores de bases de datos más comunes:
MySQL
PostgreSQL (usado por grandes proyectos como platzi.com)
SQL Server (de Microsoft)
Oracle
SQLite (más simple)
Access (antiguo, poco usado)
Estas herramientas almacenan y manejan datos en el disco y permiten que muchas personas accedan y modifiquen los datos al mismo tiempo.
El lenguaje SQL
SQL (Structured Query Language) es el lenguaje que se usa para consultar bases de datos.
Ejemplo de consulta:
SELECT * FROM COMENTARIOS c
JOIN USUARIOS u ON c.usuario_id = u.usuario_id
WHERE u.nombre_usuario LIKE 'F%';
Este código busca todos los comentarios de usuarios cuyo nombre empieza con la letra F.
Bases de datos NoSQL
Además de las bases de datos relacionales, existen otras llamadas NoSQL, que no siguen el mismo modelo de tablas.
Tipos de bases de datos NoSQL:
Documentales: como MongoDB. Son parecidas a hojas de Excel con estructuras flexibles.
De grafos: para relaciones complejas entre datos.
Llave-valor: como Redis, usadas para guardar datos rápidamente en la memoria (caché).
quiza :
PK IdComentario int
FK IdPost int
FK IdUsuario int
comentario string
fecha_comentario date
contador_megusta int
Las bases de datos se alojan en servidores, que son computadoras especialmente configuradas para almacenar, gestionar y servir datos. Utilizan motores de bases de datos, como MySQL o PostgreSQL, que permiten a múltiples usuarios acceder a la información de manera eficiente y segura. A diferencia de un archivo común, las bases de datos mantienen la integridad de los datos, evitando redundancias y permitiendo consultas complejas a través de un lenguaje como SQL.
Para los que ya saben de SQL y quieren meterse en el mundo NoSQL, se van a dar cuenta de que a veces toca “desaprender” cosas de las bases de datos relacionales porque los términos y la forma de pensar cambian bastante.
A mí me sirvió un montón este recurso: te muestra cómo hacer “relaciones” en Mongo, cuándo conviene cada método y te da una guía clara para organizar tus datos sin volverte loco.
<>
Estructura de tabla de datos de "Comentarios" :
* Los comentarios contienen => comentario, fecha de comentario, like(s), id, usuario que lo hizo, contenedor de comentarios:
-- Gracias Freddy !! CREATE TABLE Tabla_de_comentarios( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT NOT NULL, post_id INT NOT NULL, n_likes INT , n_replies INT, age int, is_spam VARCHAR(1), is_reported VARCHAR(1), has_replies VARCHAR(1), has_emojis VARCHAR(1), content VARCHAR(200) NOT NULL, email VARCHAR(100), Created datetime DEFAULT CURRENT_TIMESTAMP(),UNIQUE(id), FOREIGN KEY(user_id) REFERENCES Tabla_de_comentarios(id), FOREIGN KEY(post_id) REFERENCES Tabla_de_comentarios(id),CHECK(age>=14));
¿Cuál es la diferencia entre una variable tipo "date" (la que se asignó a fecha_registro) y "date time" (se asignó a fecha_publicacion)?
Hola! DATETIME incluye la hora. Tienes más precisión del registro
Es necesario agregar la FK de usuar y de post_id en la tabla de comentarios? Sabiendo que al agregar la FK de post_id ya esta incluido la llave del usuario por dentro?