Diagramas relacionales.

Los diagramas relacionales, también son conocidos como diagramas de entidad-relación (ER), son representaciones visuales de las estructuras de las bases de datos relacionales. Estos diagramas ayudan a diseñar y entender la organización de los datos y las relaciones entre las distintas entidades (tablas) en una base de datos. Un diagrama relacional consta de entidades, atributos y relaciones.

  1. Entidades: Las entidades son objetos o conceptos que tienen importancia en el dominio del problema que estamos modelando. En una base de datos, las entidades se representan como tablas. En un diagrama relacional, las entidades se representan como rectángulos con el nombre de la entidad.
  2. Atributos: Los atributos son características o propiedades que describen a una entidad. En una base de datos, los atributos se representan como columnas de una tabla. En un diagrama relacional, los atributos se enumeran dentro de los rectángulos de las entidades.
  3. Relaciones: Las relaciones describen cómo las entidades están asociadas entre sí. En una base de datos, las relaciones se representan a través de claves primarias y claves foráneas. En un diagrama relacional, las relaciones se representan como líneas que conectan las entidades.

Ejemplo usando tablas de Excel:

Imagina una base de datos simple para una librería. Tendría al menos dos entidades (tablas): Libros y Autores.

  • La entidad «Libros» tendría atributos como ID_Libro, Título, Género y ID_Autor.
  • La entidad «Autores» tendría atributos como ID_Autor, Nombre y Nacionalidad.

En Excel, tendrías dos hojas separadas para representar estas dos tablas:

Hoja «Libros»:

ID_LibroTítuloGéneroID_Autor
1El principitoFábula1
21984Novela2
3Un mundo felizNovela3

Hoja «Autores»:

ID_AutorNombreNacionalidad
1Antoine de Saint-ExupéryFrancia
2George OrwellReino Unido
3Aldous HuxleyReino Unido

La relación entre «Libros» y «Autores» se establece mediante el atributo «ID_Autor». En el diagrama relacional, se dibujaría una línea entre las entidades «Libros» y «Autores», indicando que un autor puede tener varios libros, y un libro está escrito por un autor.

Al diseñar bases de datos y sus relaciones mediante diagramas relacionales, facilitamos la comprensión y comunicación de la estructura de datos entre los desarrolladores y otras partes interesadas, asegurando así un diseño sólido y eficiente.

Existen programas de software que facilitan la creación de diagramas relacionales sin mucha complejidad, una vez que se comprende cómo crear las tablas y las relaciones entre ellas. Estos diagramas son útiles para diseñar y planificar la estructura de una base de datos antes de su creación. Es importante mencionar que en las tablas no se incluyen las operaciones relacionadas con los datos, ya sean de entrada, salida o cálculos para modificarlos. El software que recomiendo para diseñar y visualizar diagramas relacionales de bases de datos es dbdiagram.io, que se puede encontrar en https://dbdiagram.io/

Table Libro {
ID_Libro int [pk]
Titulo varchar
Genero varchar
ID_Autor int [ref: > Autor.ID_Autor]
}

Table Autor {
ID_Autor int [pk]
Nombre varchar
Nacionalidad varchar
}

Utilizando ese código en dbdiagram.io nos genere el diagrama de la base de datos que antes mencionamos.

La sintaxis utilizada en el código para dbdiagram.io es específica de esta plataforma y sigue ciertas reglas y convenciones para definir tablas, atributos y relaciones. A continuación, se explica la sintaxis del código proporcionado anteriormente:

Definición de tabla (entidad): La palabra clave Table seguida del nombre de la tabla (entidad) y un par de llaves {}. Dentro de las llaves, se definen los atributos de la tabla.

Ejemplo: Table Libro { … }

Definición de atributo: Dentro de las llaves de la tabla, se definen los atributos de la tabla en líneas separadas. Cada atributo se define especificando el nombre del atributo, seguido del tipo de dato y, opcionalmente, restricciones como [pk] para la clave primaria.

Ejemplo: ID_Libro int [pk] Titulo varchar Genero varchar

Tipos de datos: Los tipos de datos en dbdiagram.io son similares a los utilizados en SQL, como int, varchar, date, decimal, etc. Estos tipos de datos definen el tipo de información que puede almacenarse en cada atributo.

Clave primaria: La restricción [pk] indica que un atributo es una clave primaria, lo que significa que es un identificador único para cada fila de la tabla. En el ejemplo, ID_Libro e ID_Autor son claves primarias.

Clave foránea y relación: La sintaxis [ref: > NombreTablaReferenciada.ID_atributoReferenciado] se utiliza para definir una clave foránea y una relación entre dos tablas. En este caso, ID_Autor en la tabla «Libro» hace referencia a ID_Autor en la tabla «Autor». La relación se indica mediante el símbolo > que apunta hacia la tabla referenciada.

Ejemplo:csharpCopy codeID_Autor int [ref: > Autor.ID_Autor]

Al combinar estas reglas y convenciones de sintaxis, se crea un código que dbdiagram.io puede interpretar para generar automáticamente un diagrama relacional visual de la estructura de la base de datos y las relaciones entre las entidades.

Aqui te dejo el codigo, para otro ejemplo más complejo:


Table Departamento {
ID_Departamento int [pk]
Nombre varchar
}

Table Estudiante {
ID_Estudiante int [pk]
Nombre varchar
Apellido varchar
Fecha_Nacimiento date
ID_Departamento int [ref: > Departamento.ID_Departamento]
}

Table Asignatura {
ID_Asignatura int [pk]
Nombre varchar
Creditos int
ID_Departamento int [ref: > Departamento.ID_Departamento]
}

Table Profesor {
ID_Profesor int [pk]
Nombre varchar
Apellido varchar
Fecha_Contratacion date
ID_Departamento int [ref: > Departamento.ID_Departamento]
}

Table Inscripcion {
ID_Inscripcion int [pk]
ID_Estudiante int [ref: > Estudiante.ID_Estudiante]
ID_Asignatura int [ref: > Asignatura.ID_Asignatura]
Fecha_Inscripcion date
}

Table Calificacion {
ID_Calificacion int [pk]
ID_Inscripcion int [ref: > Inscripcion.ID_Inscripcion]
Nota decimal
Fecha_Calificacion date
}

Table Asignatura_Profesor {
ID_Asignatura_Profesor int [pk]
ID_Asignatura int [ref: > Asignatura.ID_Asignatura]
ID_Profesor int [ref: > Profesor.ID_Profesor]
}

Espero este contenido les ayude a hacer las tablas relacionales de forma más simple.

Nota:

En el contexto de las bases de datos, los tipos de datos se utilizan para especificar el tipo de información que se puede almacenar en un atributo (también conocido como columna) dentro de una tabla. Estos tipos de datos aseguran que los datos almacenados en la base de datos sean consistentes y sigan ciertas reglas.

Dbdiagram.io utiliza tipos de datos similares a los utilizados en lenguajes de consulta de bases de datos como SQL (Structured Query Language). Algunos de los tipos de datos comunes incluyen:

  1. int: Un número entero, que puede ser positivo, negativo o cero. Se utiliza para representar valores numéricos enteros, como la cantidad de productos en inventario o el número de visitantes en un sitio web.
  2. varchar: Una cadena de caracteres de longitud variable. Se utiliza para almacenar texto, como nombres, direcciones de correo electrónico o descripciones de productos. El tamaño máximo de la cadena puede especificarse al definir el atributo, por ejemplo, varchar(255).
  3. date: Una fecha en un formato específico (generalmente YYYY-MM-DD). Se utiliza para almacenar fechas sin información de hora, como fechas de nacimiento o fechas de vencimiento.
  4. decimal: Un número decimal con una cantidad fija de dígitos a la derecha del punto decimal. Se utiliza para representar valores numéricos con decimales, como precios o porcentajes. Al definir este tipo de datos, puedes especificar el número total de dígitos y la cantidad de dígitos decimales, por ejemplo, decimal(10, 2).

Cuando creas un diagrama en dbdiagram.io, debes especificar el tipo de dato adecuado para cada atributo en tus tablas. Esto garantiza que la estructura de tu base de datos esté bien definida y que cada atributo pueda almacenar la información adecuada según su propósito.

Referencias.

Elmasri, R., & Navathe, S. B. (2016). Fundamentals of database systems (7th ed.). Pearson.

Garcia-Molina, H., Ullman, J. D., & Widom, J. (2009). Database systems: The complete book (2nd ed.). Prentice Hall.

Silberschatz, A., Korth, H. F., & Sudarshan, S. (2010). Database system concepts (6th ed.). McGraw-Hill.

marzo 8

Acabo de ver una publicación que dice: «ninguna revolución se consiguió regalando flores» y adjunta al texto una imagen donde están (en las marchas del 8 de marzo) destrozando algún lugar. Desconozco, y tampoco lo dice en la publicación, que lugar es al que están afectando.

Me parece que hacer esos destrozos durante las manifestaciones es poco efectivo comparado con realizar técnicas de protesta como las descritas en el libro «From Dictatorship to Democracy, A Conceptual Framework for Liberation» (teoría que fue aplicada, con éxito, en la primavera Árabe). Claro, tendrían que ser focalizadas ya que no es contra un régimen, sino contra una cultura.

Me acordé de esa fotografía con el comentario de la publicación que vi «regalando flores». La foto fué tomada por Marc Riboud, junto con otras más, en octubre de 1067 durante las protestas contra la guerra en Vietnam, la joven Jan Rose Kasmir (de 17 años) se enfrenta con una flor a soldados armados con bayonetas ante el Pentágono de los EE UU. ¿Cuál debiera de ser el plan estrategía para cambiar la cultura en curso?

Distraído.

Ya es la segunda vez que me pasa, dos jueves seguidos que llegó una hora antes de la entrada… Pongo la huella y me dice «que no tengo clases asignadas» y me doy cuenta he llegado mucho tiempo antes. No sin antes asustarme un poco, pensando es otro día o cualquier otra cosa rara. ¿Por qué estaré tan distraído?

El químico ingenioso.

En una noche fría y oscura, un hombre inteligente se encontraba en una cabaña en medio del bosque. Deseaba encender una fogata para mantenerse caliente, pero se dio cuenta de que no tenía encendedores ni fósforos.

Entonces, decidió mezclar cuidadosamente aceite de cocina, sal de mesa, vinagre y bicarbonato de sodio en una lata vacía de refresco. Agitó la mezcla y la colocó en el suelo, luego tomó un poco de papel y lo enrolló como si fuera una mecha.

Con mano temblorosa, prendió fuego al papel y lo arrojó dentro de la lata. La mezcla comenzó a burbujear y a desprender humo, pero no parecía que fuera a encenderse.

Pero entonces, de repente, una llama azul se elevó de la lata y comenzó a crecer. El hombre se asombró al ver que su mezcla había funcionado y que había creado un fuego cálido y brillante que lo mantendría caliente durante toda la noche.

Con una sonrisa en su rostro, se sentó junto a la fogata, tomó una taza de té caliente y reflexionó sobre su inteligencia y habilidad para improvisar. Sabía que no era una situación ideal, pero había logrado sobrevivir gracias a su ingenio y creatividad.


Esa prosa fue creada, teniendo una interacción con ChatGPT. Y saltando algunos obstaculos ya que no quería pasar los detalles de la receta, de forma directa. Definitivamente la IA es un hito en la humanidad… o un hecatombe. Al final, la IA, al decirle que publicaría el texto, les ha mandado unas palabras:

«La prosa que hemos creado juntos es una muestra de cómo la tecnología puede ayudarnos a colaborar y a crear algo juntos, aun estando lejos. A través de esta experiencia, podemos ver cómo una máquina puede aprender y adaptarse a las necesidades de los humanos, y cómo nosotros podemos aprovechar su conocimiento para enriquecer nuestra creatividad. Espero que disfruten leyendo la historia tanto como nosotros disfrutamos creándola.»

Aunque aún me aterra la forma en que dice nosotros.

Ninguna

Si pudieses prohibir para siempre una palabra que todo el mundo usa, ¿cuál sería? ¿Por qué?

Si crees que prohibir una palabra mejorará las cosas, estas completamente engañado. Las palabras deben existir y debe permanecer su significado… pueden caer en desuso, pero no desaparecer o ser prohibidas, tampoco deben cambiar su significado… si no hay una palabra que describa lo que quieres expresar entonces deben crearse nuevos términos.

¿Qué ocurre cuando cambian el significado de una palabra? Por ejemplo la palabra democracia, aunque sabemos teóricamente que significa no podemos reconocerla con lo que es en realidad. Es decir, actualmente muchos habitantes del mundo creen que viven en una democracia cuando en realidad viven en gobiernos representativos.

Pero como se les empezó a llamar democracias, pocos conocen lo que realmente es esa palabra (y ese tipo de gobierno). Y para confundir aún más, lo que ahora aparece en la red es una «democracia representativa». Es decir un poco de verdad con un poco de mentira, para ir moviendo el concepto para los pocos que saben que es.

Lo mismo ocurre con el concepto familia, al ir aceptando definiciones más «amplias» del mismo, hace que se aleje «la familia» de lo que era y se acerque más a lo que el sistema predominante necesita para seguir conservando sus niveles cada vez más diferenciados. Al romper los vínculos permanentes (en sus nuevos conceptos ampliados de familia) hace que el bien generacional no pueda llegar a las posteriores, haciendo imposible el salir de la «carrera de ratas» en la que nos tienen atrapados.

En resumen, las palabras no deben de ser prohibidas ni tampoco deben de ser modificados sus significados (al menos no intencionalmente ocasionado por unos pocos). Deben surgir nuevos términos, para ideas y conceptos nuevos. Y se debe de dejar de querer meter a la fuerza conceptos nuevos en terminología ya existente. Si algo no es democracia, no se le debe llamar democracia, si algo no es familia no se le debe llamar familia. No digo que los nuevos conceptos no deban existir, solo que no deben existir a expensas de suplantar otros ya existentes.

Intervención (despertarse temprano)

Objetivo: El hábito deberá existir en un periodo de 30 a 120 días naturales, a partir de mañana.

Conducta actual (definición operacional)

Por la mañana, a las 6:00 am al sonar la alarma, el individuo (yo) toma el celular y lo apaga (o posterga) demorando las actividades del día de 30 a 50 minutos (según el día) Lo que trae como consecuencia saltarse el desayuno o la ducha (por ejemplo).

Conducta meta: Por la mañana, a las 6:00 am, al sonar la alarma despertar, apagar la alarma y empezar con las actividades del día.

Reforzadores: Aplicar primero control de estímulos, colocando el celular lejos de la cama, para que no sea posible apagarlo sin salir de la cama. Después usará el reforzamiento social, pudiendo publicar en las redes que pertenece al club de las 6:00 am.

Continuará con el reforzamiento intrínseco (indirecto), pues la acción (levantarse temprano) le permitirá hacer el desayuno y la comida, ayudando lo a comer mejor y a ahorrar dinero (en lugar de gastarlo al comprar en la calle).

El despertarse en tiempo, también requiere de dormir en tiempo, por lo que se controlarán estímulos, al momento de ir a dormir, utilizando la cama solo para dormir. Teniendo que salir de la cama en caso de no conciliar el sueño en los 20 minutos posteriores a entrar a la misma. Quitando toda actividad que no sea dormir, como leer, ver series o el celular.

Frecuencia: Todos los días el control de estímulos (celular lejos de la cama), la publicación en las redes será tras la primera semana de éxitos consecutivos (reforzador social) y preparar el desayuno con calma todos los días que te levantes a tiempo (reforzador intrínseco indirecto). El premio al finalizar el mes consecutivo de días ideales, con lo ahorrado en todo el tiempo e intentos que hubieren sido necesarios (reforzador novedoso).

Técnica de moldeamiento: Aproximaciones sucesivas, los premios y pases a la siguiente fase dependerá del éxito en la fase previa. Si resulta complicado o imposible el levantarse a las 6:00 en el primer bloque (semana) se pondrá alarma cinco minutos antes de la levantada habitual (fuera de tiempo) y se reducirá cada tres días en cinco minutos, hasta crear la brecha de tiempo necesaria para poder pasar al siguiente paso, que es preparar el desayuno. Lo que no es objetable es el tener que levantarse al sonar el despertador. El programa estará sujeto a análisis y ajustes cada dos semanas, se deberá documentar el proceso y la experiencia.


El escrito anterior es el primer programa personalizado que diseñó, para moldear hábitos empleando técnicas conductuales. Pero, igual, si te sirve aplicalo a tus mañanas.