Esta página describe Calíope 1.5, la versión que estoy construyendo ahora mismo. La 1.4 ya está en la App Store para Mac, iPad, iPhone, Apple Watch, Apple TV y Apple Vision Pro. El changelog dice en qué versión llegó cada función.
Añade un botón «Abrir en Calíope» a cada tema. Sólo funciona con la app instalada.
Visualiza las relaciones entre tablas de una base de datos.
Dónde está: Espacio de Trabajo › Herramientas › ER
Abre el Diagrama ER desde la barra de navegación del workspace. Selecciona la base de datos en el selector superior y Calíope cargará las tablas con sus columnas y relaciones de clave foránea existentes.
El diagrama muestra las tablas como nodos con columnas y tipo de dato. Las líneas entre tablas representan las FKs detectadas en el servidor.
SQL Server
En SQL Server cada esquema es una entrada del selector (demo.dbo, demo.rrhh). Para ver una clave foránea que cruza de esquema, añade el otro con + BD: la línea entre los dos sale en ámbar, como entre dos bases.
Palabras clave: ER, entidad relación, diagrama, FK, foreign key, relaciones
Ampliar y reducir — en macOS, la rueda del ratón, el pellizco de dos dedos en el trackpad o los botones de la barra; en iPad, el pellizco o esos mismos botones. Entre el − y el + de la barra va el porcentaje, que dice a qué escala estás, y los atajos son ⌘−, ⌘+ y ⌘0. Los límites son los mismos en las tres: del 18 % al 400 %, y el botón se apaga al llegar al tope.
Desplazar el lienzo — arrastra sobre una zona vacía, en las tres. Sobre un nodo, el arrastre mueve la tabla.
Volver al encuadre — el botón Ajustar a la ventana (⌘0) encuadra todas las tablas. El diagrama se encuadra además solo al abrirse y al cambiar el tamaño de la ventana.
El botón Disposición automática reorganiza los nodos para minimizar solapamientos.
Dibuja una nueva relación de clave foránea entre dos tablas.
Dónde está: Diagrama ER › clic derecho › Crear relación FK
Abre el menú contextual de una tabla —clic derecho en macOS, mantener pulsado en iPad— y selecciona Nueva relación FK…. Se abre un diálogo para elegir la tabla y columna de origen, y la tabla y columna de destino. Al confirmar, Calíope ejecuta el ALTER TABLE … ADD FOREIGN KEY en el servidor.
Sólo en macOS, además: mantén pulsada ⌃ (Control) y arrastra desde una tabla hasta la de destino; mientras dura el gesto se dibuja una línea elástica y al soltar se abre ese mismo diálogo. En iPad el gesto no existe, y la clave foránea se crea desde el menú contextual.
Conserva la disposición que le diste al diagrama, una por base de datos.
Dónde está: Diagrama ER › Guardar layout
Pulsa Guardar layout en la barra de herramientas del Diagrama ER. A dónde arrastraste cada tabla se guarda por base de datos, así que cada diagrama conserva la suya.
La próxima vez que abras el diagrama de esa base, las tablas vuelven a donde las dejaste. Una tabla sin posición guardada —las de una segunda base que acabas de añadir con + BD, o una creada desde entonces— se reparte en una rejilla al lado de las demás, nunca encima.
En la barra de herramientas del Diagrama ER, el botón Exportar ofrece dos formatos: PNG (una imagen, lista para pegar en un documento o en un chat) y PDF (listo para impresión o presentación). Cada uno ofrece tres tamaños, y el archivo se guarda en la ubicación que elijas con el diálogo del sistema.
Los mismos formatos están en el menú contextual del lienzo, y en macOS el diagrama también se puede imprimir con ⌘P.
Palabras clave: exportar, PNG, PDF, imagen, guardar, imprimir, diagrama
Consulta la estructura completa de una tabla directamente en el diagrama.
Dónde está: Diagrama ER › clic derecho › Editar estructura de tabla
Abre el menú contextual de un nodo de tabla en el diagrama —clic derecho en macOS, mantener pulsado en iPad— y selecciona Editar estructura de tabla. Se abre un panel con el CREATE TABLE completo de la tabla seleccionada.
Palabras clave: DDL, CREATE TABLE, estructura, ver tabla, show create
Compara dos bases de datos del mismo servidor —tablas, vistas, rutinas, triggers y eventos— y genera el script de migración.
Dónde está: Espacio de Trabajo › Herramientas › Comparar esquemas
La herramienta de comparación de esquemas (Schema Diff) analiza dos bases de datos del mismo servidor y muestra exactamente qué ha cambiado en tablas, vistas, procedimientos, funciones y triggers.
MySQLMariaDBAurora
En MySQL y MariaDB compara también los eventos.
SQL Server
En SQL Server cada lado es un esquema de una base (demo.dbo), y los dos pueden vivir en bases distintas del mismo servidor.
PostgreSQL
En PostgreSQL cada lado es un esquema de la base conectada (demo, ventas).
Cómo abrir Schema Diff:
Pulsa Comparar esquemas (ícono de flechas contrapuestas) en la barra lateral. Se abre en una nueva pestaña.
Uso básico:
1. Elige el Origen y el Destino en la barra superior. El guion cambia el origen hasta que coincida con el destino: lo que sólo tiene el destino se crea en el origen, y lo que sólo tiene el origen se elimina.
2. Pulsa Comparar. Calíope lee la definición de cada objeto en los dos lados, tal como la escribe el propio servidor.
3. Activa el toggle Solo cambios para ocultar lo que coincide.
4. El informe se agrupa por tipo de objeto. Despliega cualquier fila: en una tabla modificada verás cambio por cambio la definición que hay y la que quedará; en una vista o rutina modificada, las dos definiciones completas enfrentadas; en un objeto nuevo o eliminado, su DDL.
5. Pulsa Copiar SQL para llevarte el guion entero, o el botón de copiar de una fila para llevarte solo ese objeto.
6. Ejecútalo en el Editor SQL con Ejecutar Script. Con el Modo Seguro activado, el guion se detiene antes de llegar al servidor. Después vuelve a comparar: los dos lados deben salir idénticos.
MySQLMariaDBAurora
Las definiciones son el SHOW CREATE … de cada objeto, y el editor entiende los bloques DELIMITER con los que llegan rutinas y triggers.
SQL Server
Las definiciones salen del catálogo (sys.sql_modules para vistas, rutinas y triggers). Cada vista, rutina y trigger va en su propio EXEC … sp_executesql, porque T-SQL lo quiere solo en su lote, así que el guion corre sin líneas GO.
PostgreSQL
Las definiciones son las que escribe el servidor con pg_get_viewdef, pg_get_functiondef y pg_get_triggerdef.
Qué genera para las tablas:
MySQLMariaDBAurora
- CREATE TABLE IF NOT EXISTS completo para las que faltan en el origen, con columnas, índices y opciones.
- DROP TABLE IF EXISTS para las que sobran.
- ALTER TABLE con ADD/DROP/MODIFY COLUMN conservando tipo, nulabilidad, valor por defecto, comentario, juego de caracteres y expresión de columna generada.
- Altas y bajas de clave primaria, índices y restricciones CHECK, y cambios de opciones (ENGINE, DEFAULT CHARSET, COLLATE, ROW_FORMAT, COMMENT).
SQL Server
- IF OBJECT_ID(…) IS NULL CREATE TABLE para las que faltan en el origen, con columnas, claves y restricciones, y un CREATE INDEX por cada índice.
- DROP TABLE IF EXISTS para las que sobran.
- ALTER TABLE con ADD, ALTER COLUMN y DROP COLUMN; antes de quitar una columna, el guion quita la restricción de valor por defecto que cuelga de ella.
- Altas y bajas de clave primaria, índices y restricciones CHECK.
PostgreSQL
- CREATE TABLE IF NOT EXISTS para las que faltan en el origen, con columnas y restricciones, y un CREATE INDEX por cada índice.
- DROP TABLE IF EXISTS para las que sobran.
- ALTER TABLE con ADD COLUMN, DROP COLUMN y ALTER COLUMN … TYPE, SET/DROP NOT NULL y SET/DROP DEFAULT.
- Altas y bajas de clave primaria, índices y restricciones CHECK, y el comentario de la tabla (COMMENT ON TABLE).
Qué genera para el resto de objetos:
Una vista o una rutina no se puede parchear por partes: si su definición difiere, el guion la rehace con la del destino, reescribiendo las referencias al esquema de origen para que apunte al sitio correcto.
MySQLMariaDBAurora
La rehace con DROP + CREATE.
SQL Server
La rehace con CREATE OR ALTER, que aceptan vistas, procedimientos, funciones y triggers.
PostgreSQL
La rehace con CREATE OR REPLACE; un trigger o una vista materializada, que no lo tienen, se eliminan y se vuelven a crear.
Orden del guion:
Primero las tablas; después las claves foráneas, en su propio bloque, porque al crear varias tablas el orden alfabético no respeta las dependencias; luego el resto de objetos por tipo, y dentro de cada tipo ordenados por dependencias — una vista construida sobre otra se emite después de ella.
MySQLMariaDBAuroraSQL Server
Antes del primer objeto que no es una tabla, el guion fija la base activa con un USE.
PostgreSQL
Antes de las tablas van los tipos propios del esquema, con los que se declaran sus columnas.
Lo que se ignora a propósito:
MySQLMariaDBAurora
El contador de AUTO_INCREMENT, que avanza con cada inserción y nunca coincide entre dos copias.
SQL ServerPostgreSQL
El valor actual de una columna de identidad, que avanza con cada inserción y nunca coincide entre dos copias.
Lo que no cubre:
Las columnas de una tabla existente no se reordenan, y una columna renombrada se ve como una baja más un alta. La comparación de vistas, rutinas y triggers es textual, así que un simple cambio de formato cuenta como diferencia.
MySQLMariaDBAurora
Un cambio de particionado se detecta y se anota como aviso, pero no se convierte en SQL: reparticionar reescribe la tabla entera. Un cambio de DEFINER también cuenta como diferencia, y en MariaDB el DDL de un trigger es el texto literal con el que se escribió. Un evento con hora de inicio distinta también difiere, porque esa hora forma parte de su definición.
PostgreSQL
Los tipos propios —ENUM, dominios, tipos compuestos— se comparan como una vista, en su propio grupo Tipos. El guion crea los que faltan antes de las tablas que los usan y elimina al final del todo los que sólo tiene el origen. Un ENUM que sólo ha ganado etiquetas al final se actualiza con ALTER TYPE … ADD VALUE; cualquier otro cambio de un tipo queda en el guion como una nota para hacerlo a mano, porque rehacer un tipo en uso obliga a reescribir cada columna que lo usa. Los tipos que crea una extensión, como los de PostGIS, quedan fuera: los trae su CREATE EXTENSION.
Revisa siempre el script antes de ejecutarlo en producción.
Caso de uso típico:
Antes de un despliegue, comparar producción (origen) con el esquema de desarrollo (destino): el guion lleva producción a lo que desarrollo ya tiene, sin escribirlo a mano.
Disponible en macOS, iPad e iPhone.
Palabras clave: schema diff, comparar, esquema, alter table, migración, diferencias, ADD COLUMN, DROP COLUMN, MODIFY COLUMN, SHOW CREATE TABLE, CREATE TABLE, índices, claves foráneas, particionado, solo cambios
Añade una segunda base de datos al canvas del diagrama ER para visualizar relaciones entre bases de datos.
Dónde está: Diagrama ER › + BD
El Diagrama ER puede mostrar tablas de dos bases de datos simultáneamente en el mismo canvas, incluyendo las claves foráneas que cruzan de una base a otra.
Cómo añadir una segunda base de datos:
1. Con el Diagrama ER abierto, selecciona la BD principal en el selector izquierdo de la barra de herramientas.
2. Pulsa el botón + BD en la barra de herramientas para añadir una segunda base de datos.
3. Selecciona la segunda BD en el nuevo selector que aparece.
4. El canvas se actualiza automáticamente mostrando las tablas de ambas bases.
Codificación de colores:
- Cabecera azul — tablas de la BD principal.
- Cabecera verde azulado (teal) — tablas de la segunda BD.
- Flechas naranja — relaciones de clave foránea que cruzan de una base a otra.
- Flechas normales — relaciones dentro de la misma base de datos.
Requisito para relaciones cross-database:
Las claves foráneas deben estar declaradas en information_schema. MySQL/MariaDB registra las FKs en information_schema.KEY_COLUMN_USAGE. Si las relaciones entre bases no aparecen, verifica que las FKs existen formalmente en el servidor (no son solo convenciones de nombres).
Navegación y exportación:
Todas las funciones del diagrama ER normal aplican al canvas multi-base: zoom, pan, auto-layout, guardar layout, exportar PNG/PDF y ver DDL de tablas. Consulta los temas de Diagrama ER para más detalles.