Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

1

Bienvenida conceptos básicos y contexto histórico de las Bases de Datos

Introducción a las bases de datos relacionales

2

Historia de las bases de datos relacionales

3

Entidades y atributos

4

Entidades de Platzi Blog

5

Relaciones

6

Múltiples muchos

7

Diagrama ER

8

Diagrama Físico: tipos de datos y constraints

9

Diagrama Físico: normalización

10

Formas normales en Bases de Datos relacionales

11

Diagrama Físico: normalizando Platziblog

RDBMS (MySQL) o cómo hacer lo anterior de manera práctica

12

¿Qué es RDB y RDBMS?

13

Instalación local de un RDBMS (Windows)

14

Instalación local de un RDBMS (Mac)

15

Instalación local de un RDBMS (Ubuntu)

16

Clientes gráficos

17

Servicios administrados

SQL hasta en la sopa

18

Historia de SQL

19

DDL create

20

CREATE VIEW y DDL ALTER

21

DDL drop

22

DML

23

¿Qué tan standard es SQL?

24

Creando Platziblog: tablas independientes

25

Creando Platziblog: tablas dependientes

26

Creando Platziblog: tablas transitivas

Consultas a una base de datos

27

¿Por qué las consultas son tan importantes?

28

Estructura básica de un Query

29

SELECT

30

FROM

31

Utilizando la sentencia FROM

32

WHERE

33

Utilizando la sentencia WHERE nulo y no nulo

34

GROUP BY

35

ORDER BY y HAVING

36

El interminable agujero de conejo (Nested queries)

37

¿Cómo convertir una pregunta en un query SQL?

38

Preguntándole a la base de datos

39

Consultando PlatziBlog

Introducción a la bases de datos NO relacionales

40

¿Qué son y cuáles son los tipos de bases de datos no relacionales?

41

Servicios administrados y jerarquía de datos

Manejo de modelos de datos en bases de datos no relacionales

42

Top level collection con Firebase

43

Creando y borrando documentos en Firestore

44

Colecciones vs subcolecciones

45

Recreando Platziblog

46

Construyendo Platziblog en Firestore

47

Proyecto final: transformando tu proyecto en una db no relacional

Bases de datos en la vida real

48

Bases de datos en la vida real

49

Big Data

50

Data warehouse

51

Data mining

52

ETL

53

Business intelligence

54

Machine Learning

55

Data Science

56

¿Por qué aprender bases de datos hoy?

Bonus

57

Bases de datos relacionales vs no relacionales

58

Elegir una base de datos

Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Creando Platziblog: tablas transitivas

26/58
Recursos
  • Las tablas transitivas sirven como puente para unir dos tablas. No tienen contenido semántico.
  • Reverse Engineer nos reproduce el esquema del cual nos basamos para crear nuestras tablas. Es útil cuando llegas a un nuevo trabajo y quieres entender cuál fue la mentalidad que tuvieron al momento de crear las bases de datos.

Aportes 644

Preguntas 97

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Yo estoy usando phpMyAdmin porque ya estoy acostumbrado a esta interfaz.
Al que le interese en este programa se puede hacer lo de reverse enginneer en la pestaña diseñador

Esta es la estructura de una base que uso en mi trabajo q arranco con 3 entidades y me fueron pidiendo agregar mas. No me entra la pantalla para ordernarlo 😦

Wooow!!! Hora de hacer reverse engineer a todo las bases que me tope.

![](

Así se ve mi esquema de platziblog 😃

aca mi Diagrama de One Piece

Hola Profesor, que tal? Tengo una duda con la implementación de los vínculos entre las tablas “posts”, “post_etiquetas” y “etiquetas”. En el esquema físico inicial la relación entre las tablas eran:
posts N:::::::::::::::::::::1 posts_etiquetas
posts_etiquetas 1:::::::::::::::::::::N etiquetas

Como muestro en la siguiente imagen:

Y en este vídeo, luego de establecer los vínculos con las FK entre dichas tablas las relaciones quedan de la siguiente manera:
posts 1:::::::::::::::::::::N posts_etiquetas
posts_etiquetas N:::::::::::::::::::::1 etiquetas

Subo a continuación la imagen que muestra las relaciones luego de realizar la ingenieria inversa en el workbench.

Es decir que se han “invertido” las relaciones. Me encuentro con esta duda y necesitaría saber si está bien el hecho que haya cambiado de esa manera las relaciones entre dichas tablas.

Saludos y espero su respuesta.

De esta manera se puede crear la base de datos en con la sintaxis de SQL, no cambia mucho.

CREATE TABLE categorias (
idCategoria INT IDENTITY(1,1) PRIMARY KEY,
nombre_categoria VARCHAR(30) NOT NULL);

CREATE TABLE etiquetas (
idEtiqueta INT IDENTITY(1,1) PRIMARY KEY,
nombre_etiqueta VARCHAR(30) NOT NULL);

CREATE TABLE usuarios (
idUsuario INT IDENTITY(1,1) PRIMARY KEY,
login VARCHAR(32) NOT NULL,
password VARCHAR(40) NOT NULL,
nickname VARCHAR(40) NOT NULL,
email VARCHAR(40) NOT NULL UNIQUE
);

CREATE TABLE posts (
idPost INT IDENTITY(1,1) PRIMARY KEY,
titulo VARCHAR(150) NOT NULL,
fecha_publicacion TIMESTAMP,
contenido TEXT NOT NULL,
estatus CHAR(8),
idUsuario INT,
idCategoria INT,
FOREIGN KEY (idUsuario) REFERENCES usuarios(idUsuario),
FOREIGN KEY (idCategoria) REFERENCES categorias(idCategoria)
);

CREATE TABLE comentarios (
idComentario INT IDENTITY(1,1) PRIMARY KEY,
comentario TEXT NOT NULL, 
idUsuario INT NOT NULL,
idPost INT NOT NULL,
FOREIGN KEY (idUsuario) REFERENCES usuarios(idUsuario)
ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (idPost) REFERENCES posts(idPost)
ON UPDATE CASCADE
ON DELETE NO ACTION
);

CREATE TABLE posts_etiquetas(
idPostEtiqueta INT IDENTITY(1,1) PRIMARY KEY,
idPost INT NOT NULL,
idEtiqueta INT NOT NULL,
FOREIGN KEY (idPost) REFERENCES posts(idPost)
ON UPDATE CASCADE
ON DELETE NO ACTION,
FOREIGN KEY (idEtiqueta) REFERENCES etiquetas(idEtiqueta)
ON UPDATE CASCADE
ON DELETE NO ACTION
);

Me encanta como el Profe motiva !!!

Existe tambien la posibilidad en WorkBeanch, crear directamente el modelo grafico y ahí mismo volverlo una base de datos, lo contrario pero con los mismos resultados!

¡Muy interesante lo de la Ing Inversa, este curso ha valido toda la pena, y el profe tiene una excelente actitud para enseñar, que buen trabajo al profe y a platzi por haberlo elegido!.

Ingeniería Inversa es una herramienta muy poderosa y nos ahorra mucho trabajo para realizar nuestro gráfico de la base de datos. Excelente clase.

así quedo mi esquema de un gabinete de abogados

Hola que tal!! asi va quedando mi proyecto sobre un restaurante

Ya me siento en otro nivel. hasta aquí aprendí bastante.
este es mi proyecto, sé que está para mejorar pero ahí vamos.

aquí el avance de mi proyecto

Excelente herramienta para extraer el diagrama EER

Dejo mi base de datos de alumnos de universidades

Ejercicio

create table comentarios(
id int not null auto_increment primary key,
comentario text not null,
usuario_id int not null,
posts_id int not null,
foreign key (usuario_id) references usuarios(id) on delete cascade on update cascade,
foreign key (posts_id) references posts(id) on delete cascade on update cascade
);

--tabla transitiva
create table posts_etiquetas(
id int not null auto_increment primary key,
posts_id int not null,
etiqueta_id int not null,
foreign key (posts_id) references posts(id) on delete no action on update no action,
foreign key (etiqueta_id) references etiquetas(id) on delete no action on update no action
);```

Como forma de aprender es muy util, pero ya cuando uno se vuelca al desarrollo de manera profesional lo mas conveniente es saber realizar todas estas acciones directamente solo con el sql

Ingeniería inversa, muy buena forma para saber como están construidas las bases de datos o tablas que uno no haya creado.

Con el diagrama fisico que es la representacion grafica de nuestra base de datos se procede a crear la base de datos propiamente dicha para esto se puede usar el lenguaje SQL, o para su mayor comodidad herramientas como MysqlWorkbench, PhpMyAdmin, Sequel, Heidi, Navicat, etc, etc, etc.
Por logica se debe empezar por las tablas que no tienen llaves foraneas (es decir que no tienen relaciones en su tabla) ya que de no ser asi no se pueden referenciar las llaves a tablas no existentes.
Lo siguiente es crear ya las tablas que tienen relaciones y indicar los campos que son llaves foraneas (foreing keys) y a que tabla y campo hacen referencia.

Las Foreing Key options son las siguientes:

On update: cuando la relacion sea modifica

  • cascade: Si el id de un usuario pasa de 11 a 12, entonces la relacion se actualizará y el post buscará el id nuevo en lugar de quedarse sin usuario.
  • restrict: Si el id de un usuario pasa de 11 a 12, no lo permitirá hasta que no sean actualizados antes todos los post relacionados.
  • set null Si el id de un usuario pasa de 11 a 12, entonces los post solo no estará relacionados con nada.
  • no action: Si el id de un usuario pasa de 11 a 12, no se hará nada. Solo se romperá la relación.

On delete: cuando la relacion seal eliminada

  • cascade: Si un usuario es eliminado entonces se borrarán todos los post relacionados.
  • restrict: No se podrá eliminar un usuario hasta que sean eliminados todos su post relacionados.
  • set null: Si un usuario es eliminado, entonces los post solo no estará relacionados con nada.
  • no action: Si un usuario es eliminado, no se hará nada. Solo se romperá la relación.

gracias Isaias Chavez

Buen día, comparto el diagrama de mí db para el payroll, algo sencilla de momento para tratar de comprender correctamente los conceptos, agradezco si me hacen ver sus observaciones para poder mejorar, saludos!

(

Por si alguien lo necesita, el resultado de Reverse Engineer del platziblog

Seria bueno ejemplificar tambien como se trata el caso especial donde La entidad tiene relacion consigo misma. Por ejemplo: Un componente, puede estar formado por componentes, que a su vez contengan componentes. Como seria el caso de un motor, es un componente que tiene otro componente, el carburador, que tiene como componente… y así sucesivo.

reverse engineer de mi proyecto

Mi cara cuando el profe utilizó Reverse Engineer y apareció el diagrama:

Hecho 😃 muy buena clase

Así va mi proyecto de lol

Similar a como se ejecuta en el power pivot que es la extensión de excel para el trabajo de tablas dinámicas, una notaa

Wow! ame la opción Reverse Engineer ❤️

Este es mi proyecto (es sobre una biblioteca)

Biblioteca personal :

Así se ve mi esquema de inventario de pelucas y lentes

Mi diagrama de un almacen, donde varios departamentos de una empresa guardan sus productos. Tengo dudas en unidades_productos, la cual cree por que los productos que se guardan pueden ser litros, kilos, etc y con esa entidad se va diferenciar o saber que tipo de producto es.

Para los que lo van haciendo por comandos dejo este aporte:

alter table platziblog.posts_etiquetas
add constraint foreign key(post_id) references platziblog.posts(id)
on update no action on delete no action,
add constraint foreign key(etiqueta_id) references platziblog.etiquetas(id)
on update no action on delete no action;

si le ponen nombre a una llave foranea de una tabla, y luego le ponen el mismo nombre a la llave foranea de otra, sql no les deja hacer el proceso, lo digo porque estuve un rato pegado en eso para que los que tengan el mismo problema ahora o más adelante no se estanquen.

Diagrama de un sistema de facturacion

Hice una pequeña base de datos para una escuela y utilicé la tabla transitiva de materias-alumnos para guardar la calificación de cada alumno en cada materia, asi como el estatus, es decir si la cursa actualmente o ya la terminó.

HICE UNO NUEVO, acepto sus criticas

Mi diagrama.

Aqui mi Diagrama de sistema de compra y venta

Excelente video, me encantó la clase:

Cambié alguna cosa respecto mi idea inicial. Y creo que debería cambiar algo en los ejercicios para que el id vaya asociado simplemente al nombre, y añadir variables como intensidad o volumen en otra tabla.

Proyecto: Control de compra- venta de productos

Usando DBeaver Un gestor de BD multiplataforma (mysql, postgre, oracle, …)

Esta es mi base de datos, de videojuegos y es algo corta si alguien tiene un comentario me gustaría recibirlo

Asi va mi base de datos de problemas resueltos de matematicas:

Me costó tiempo pensarla, después de ver varias veces las clases 😅

Es una base para llevar la contabilidad de las transferencias hechas a una cuenta, que facturas de una revista se han pagado, todos los movimientos que haga un banco sobre una cuenta como deducciones, impuestos, los retiros y las consignaciones hechos a la cuenta. Estoy abierto a sugerencias 😃

  1. Al meter información a las tablas, ¿Cómo se logra que las tablas transitivas se actualicen de forma “automática”?

  2. Al hacer mis tablas; como una pieza musical, tiene un compositor y ese compositor tiene una época, ¿es correcta la relación de piezas con épocas? lo digo porque el compositor ya tiene su época y me parece redundante pero al mismo tiempo ¿no hace más lenta la consulta de datos al momento de que no exista esa relación?

:p 😄

CREAR INGENIERIA INVERSA DE LA BD

![](

Qué genial lo de Reverse Engineer.

demasiado nivel ese trukazooooo!!!

Excelente Herramienta el Reverse Engineering! No la conocía

Muy padre la herramienta de Ingeniería Inversa, la considero bastante útil para comprender las BD.

Hola. Que buena herramienta Reverse Engineer. Gracias por compartir el conocimiento.

interesante herrramienta la de ingeneria invresa!!!

Veo que una tabla me quedó suelta

Buenas Noches.
Este es el Esquema Físico del proyecto que estoy realizando.

Quisiera saber si es que está de manera correcta por favor.
Gracias.

Desde el fondo de mi corazon: Gracias platzi !!! Acabo de resolver un millon de dudas, esta plataforma es genial!♥

compartiendo mi DER despues de hacer Reverse Enginnering.

Reverse Engineer

Hola a todos, les comparto el diagrama generado por la ingeniería inversa de Workbench!

Hola, este es el MER del proyecto mio, lo que me gustan son las motos, asi que hice una bases de datos donde agrupa los modelos, marcas, precio, y cilidreje: ![](

yo creo q esta BIen (Para ser el primero)

Este es mi MER: ![](
Lo realice en SQL server me resulto un poco complejo de como sacarlo pero se logro jejeje

Hola comunidad, comparto mi diagrama creado en Workbench

Diagrama de un equipo de voleibol:

Teniendo en cuenta lo visto hasta acá, lo más importante radica en saber identificar las entidades y normalizarlas. Ya lo demás es pura máquina. Excelente este profesor

Así se ve mi esquema

Que herramienta tan útil.

Platzi blog

Proyecto personal:

  • La tabla de posts maneja dos campos, sin embargo se le agrega uno extra para que sea más fácil de manejar.
  • La tabla de post_etiquetas se define como transitiva, ya que solo sirve para unir dos tablas.

Acá esta mi diagrama, me di cuenta que había ciertas entidades que faltaba generar una relación con otras

Aquí está mi diagrama; mi base de datos la estoy creando sobre un videojuego que me gusta mucho, llamado Teamfight Tactics, por lo cual me pareció muy divertido hacer este proyecto

La emoción que produce cuando vemos perfecto el esquema al aplicar el REVERSE ENGINEER, da satisfacción!

Así quedo mi base de datos, algo que me cuesta entender o no sé si hay algún paradigma o regla con sql es como nombrar las bases de datos, las pk, fk y en si todas las columnas

Estoy encantada con este curso y lo genial que explica el profe. Gracias Platzi!

Un pequeño aporte, por ahora solo es una parte de la estructura

EER Diagramde Platziblog

EER Diagram Negocio de Playeras

Hola a todos,
Comparto mi modelo entidad-relación de mi base de datos. (Bases de datos sobre un torneo de futbol)
Bienvenido cualquier feedback. 😄


mi aporte es una BD pequena pero es solo el inicio de algo grande

Hola! Aquí mi base de datos sobre el juego League of Legends 😃

Me encantó la parte del reverse engineer, la usaré siempre jajaja 😃

Mi diagrama ER de la base de datos sobre cohetes que hice:

El ultimo paso es un avance para ver si queda tal cual como lo imaginaste.

le comparto mi diagrama de mi proyecto.
![](

por qué se le llama ingeniería inversa al proceso de creación del DER en lugar de “Crear DER”?

Excelente el tip de la ingenieria reversa!!!