Questa pagina descrive Calíope 1.5, la versione che sto costruendo adesso. La 1.4 è sull'App Store per Mac, iPad, iPhone, Apple Watch, Apple TV e Apple Vision Pro. Il changelog dice in quale versione è arrivata ogni funzione.

Aggiunge a ogni argomento un pulsante «Apri in Calíope». Funziona solo con l'app installata.

Diagramma ER

Generare il Diagramma ER

Visualizza le relazioni tra le tabelle di un database.

Dove si trova: Workspace › Strumenti › ER

Apri il Diagramma ER dalla barra di navigazione del workspace. Seleziona il database nel selettore in alto e Calíope caricherà le tabelle con le loro colonne e le relazioni di chiave esterna esistenti.

Il diagramma mostra le tabelle come nodi con colonne e tipo di dato. Le linee tra le tabelle rappresentano le FK rilevate sul server.

SQL Server

In SQL Server ogni schema è una voce del selettore (demo.dbo, demo.rrhh). Per vedere una chiave esterna che passa da uno schema all'altro, aggiungi l'altro con + DB: la linea tra i due è disegnata in ambra, come tra due database.

Parole chiave: ER, entità-relazione, diagramma, FK, foreign key, relazioni

Navigare il diagramma (zoom e pan)

Ingrandisci, rimpicciolisci e sposta la vista del diagramma.

Dove si trova: Diagramma ER › Canvas

Ingrandire e ridurre — su macOS, la rotella del mouse, un pizzico a due dita sul trackpad o i pulsanti della barra; su iPad, il pizzico o quegli stessi pulsanti. Tra il − e il + della barra c'è la percentuale, che dice a quale scala sei, e le scorciatoie sono ⌘−, ⌘+ e ⌘0. I limiti sono gli stessi su tutte e tre: dal 18 % al 400 %, e il pulsante si spegne quando arrivi al limite.

Spostare il canvas — trascina su una zona vuota, su tutte e tre. Su un nodo, il trascinamento sposta la tabella.

Tornare all'inquadratura — il pulsante Adatta alla finestra (⌘0) inquadra tutte le tabelle. Il diagramma si reinquadra anche da solo all'apertura e quando cambia la dimensione della finestra.

Il pulsante Disposizione automatica riorganizza i nodi per minimizzare le sovrapposizioni.

Parole chiave: zoom, pan, spostare, avvicinare, allontanare, canvas

Creare una relazione FK nel diagramma

Disegna una nuova relazione di chiave esterna tra due tabelle.

Dove si trova: Diagramma ER › clic destro › Crea relazione FK

Apri il menu contestuale di una tabella — clic destro su macOS, tocca e tieni premuto su iPad — e seleziona Nuova relazione FK…. Si apre una finestra di dialogo per scegliere la tabella e la colonna di origine, e la tabella e la colonna di destinazione. Alla conferma, Calíope esegue l'ALTER TABLE … ADD FOREIGN KEY sul server.

Solo su macOS, inoltre: tieni premuto ⌃ (Control) e trascina da una tabella a quella di destinazione; durante il gesto viene disegnata una linea elastica e al rilascio si apre la stessa finestra di dialogo. Su iPad il gesto non esiste, e la chiave esterna si crea dal menu contestuale.

Parole chiave: FK, foreign key, creare relazione, ALTER TABLE, chiave esterna

Salvare il layout del diagramma

Conserva la disposizione che hai dato al diagramma, una per database.

Dove si trova: Diagramma ER › Salva layout

Premi Salva layout nella barra degli strumenti del Diagramma ER. Dove hai trascinato ogni tabella viene salvato per database, così ogni diagramma conserva la sua.

La prossima volta che apri il diagramma di quel database, le tabelle tornano dove le hai lasciate. Una tabella senza posizione salvata — quelle di un secondo database che hai appena aggiunto con + DB, o una creata da allora — viene disposta su una griglia accanto alle altre, mai sopra.

Parole chiave: layout, posizione, salvare, rendere persistente, nodi, disposizione

Esportare il diagramma ER

Salva il diagramma come immagine PNG o come PDF.

Dove si trova: Diagramma ER › Esporta

Nella barra degli strumenti del Diagramma ER, il pulsante Esporta offre due formati: PNG (un'immagine, pronta da incollare in un documento o in una chat) e PDF (pronto per la stampa o la presentazione). Ognuno offre tre dimensioni, e il file viene salvato nella posizione che scegli con la finestra di dialogo del sistema.

Gli stessi formati sono nel menu contestuale dell'area di lavoro, e su macOS il diagramma si può anche stampare con ⌘P.

Parole chiave: esportare, PNG, PDF, immagine, salvare, stampare, diagramma

Vedere il DDL dal diagramma

Consulta la struttura completa di una tabella direttamente nel diagramma.

Dove si trova: Diagramma ER › clic destro › Modifica struttura della tabella

Apri il menu contestuale di un nodo di tabella nel diagramma — clic destro su macOS, tocca e tieni premuto su iPad — e seleziona Modifica struttura della tabella. Si apre un pannello con il CREATE TABLE completo della tabella selezionata.

Parole chiave: DDL, CREATE TABLE, struttura, vedere tabella, show create

Confrontare gli schema dei database

Confronta due database sullo stesso server — tabelle, viste, routine, trigger ed eventi — e genera lo script di migrazione.

Dove si trova: Workspace › Strumenti › Confronta schemi

Lo strumento di confronto degli schema (Schema Diff) analizza due database sullo stesso server e mostra esattamente che cosa è cambiato in tabelle, viste, procedure, funzioni e trigger.

MySQLMariaDBAurora

In MySQL e MariaDB confronta anche gli eventi.

SQL Server

In SQL Server ogni lato è uno schema di un database (demo.dbo), e i due possono stare in database diversi dello stesso server.

PostgreSQL

In PostgreSQL ogni lato è uno schema del database connesso (demo, ventas).

Come aprire Schema Diff:
Tocca Confronta schemi (icona con frecce contrapposte) nella barra laterale. Si apre in una nuova schedina.

Uso di base:
1. Scegli l'Origine e la Destinazione nella barra superiore. Lo script modifica l'origine finché non coincide con la destinazione: ciò che ha solo la destinazione viene creato nell'origine, e ciò che ha solo l'origine viene eliminato.
2. Tocca Confronta. Calíope legge la definizione di ogni oggetto sui due lati, così come la scrive il server stesso.
3. Attiva Solo modifiche per nascondere ciò che coincide.
4. Il rapporto è raggruppato per tipo di oggetto. Espandi una riga qualsiasi: in una tabella modificata vedrai, cambiamento per cambiamento, la definizione attuale e quella che la sostituirà; in una vista o procedura modificata, le due definizioni complete a confronto; in un oggetto nuovo o eliminato, il suo DDL.
5. Tocca Copia SQL per l'intero script, o il pulsante di copia di una riga per quel solo oggetto.
6. Eseguilo nell'SQL Editor con Esegui script. Con la Modalità sicura attiva, lo script si ferma prima di raggiungere il server. Poi confronta di nuovo: i due lati devono risultare identici.

MySQLMariaDBAurora

Le definizioni sono lo SHOW CREATE … di ogni oggetto, e l'editor capisce i blocchi DELIMITER con cui arrivano procedure e trigger.

SQL Server

Le definizioni vengono dal catalogo (sys.sql_modules per viste, procedure e trigger). Ogni vista, procedura e trigger va nel proprio EXEC … sp_executesql, perché T-SQL lo vuole da solo nel suo batch, quindi lo script gira senza righe GO.

PostgreSQL

Le definizioni sono quelle che il server scrive con pg_get_viewdef, pg_get_functiondef e pg_get_triggerdef.

Che cosa genera per le tabelle:

MySQLMariaDBAurora

- Un CREATE TABLE IF NOT EXISTS completo per quelle che mancano nell'origine, con colonne, indici e opzioni.
- DROP TABLE IF EXISTS per quelle in eccesso.
- ALTER TABLE con ADD/DROP/MODIFY COLUMN, conservando tipo, nullabilità, valore predefinito, commento, set di caratteri ed espressione di una colonna generata.
- Aggiunta e rimozione di chiave primaria, indici e vincoli CHECK, oltre alle modifiche delle opzioni di tabella (ENGINE, DEFAULT CHARSET, COLLATE, ROW_FORMAT, COMMENT).

SQL Server

- IF OBJECT_ID(…) IS NULL CREATE TABLE per quelle che mancano nell'origine, con colonne, chiavi e vincoli, e un CREATE INDEX per ogni indice.
- DROP TABLE IF EXISTS per quelle in eccesso.
- ALTER TABLE con ADD, ALTER COLUMN e DROP COLUMN; prima di eliminare una colonna, lo script elimina il vincolo di valore predefinito che ne dipende.
- Aggiunta e rimozione di chiave primaria, indici e vincoli CHECK.

PostgreSQL

- CREATE TABLE IF NOT EXISTS per quelle che mancano nell'origine, con colonne e vincoli, e un CREATE INDEX per ogni indice.
- DROP TABLE IF EXISTS per quelle in eccesso.
- ALTER TABLE con ADD COLUMN, DROP COLUMN e ALTER COLUMN … TYPE, SET/DROP NOT NULL e SET/DROP DEFAULT.
- Aggiunta e rimozione di chiave primaria, indici e vincoli CHECK, e il commento della tabella (COMMENT ON TABLE).

Che cosa genera per tutto il resto:
Una vista o una procedura non si può correggere a pezzi: se la sua definizione è diversa, lo script la rifà con quella della destinazione, riscrivendo i riferimenti allo schema di origine perché punti al posto giusto.

MySQLMariaDBAurora

La rifà con DROP + CREATE.

SQL Server

La rifà con CREATE OR ALTER, che viste, procedure, funzioni e trigger accettano.

PostgreSQL

La rifà con CREATE OR REPLACE; un trigger o una vista materializzata, che non lo hanno, vengono eliminati e ricreati.

Ordine dello script:
Prima le tabelle; poi le chiavi esterne, in un blocco a parte, perché creando più tabelle l'ordine alfabetico non rispetta le dipendenze; quindi gli altri oggetti per tipo, e all'interno di ogni tipo ordinati per dipendenze — una vista costruita su un'altra viene emessa dopo di essa.

MySQLMariaDBAuroraSQL Server

Prima del primo oggetto che non è una tabella, lo script fissa il database attivo con un USE.

PostgreSQL

Prima delle tabelle vengono i tipi propri dello schema, con cui si dichiarano le loro colonne.

Ignorato di proposito:

MySQLMariaDBAurora

Il contatore AUTO_INCREMENT, che avanza a ogni inserimento e non coincide mai tra due copie.

SQL ServerPostgreSQL

Il valore attuale di una colonna di identità, che avanza a ogni inserimento e non coincide mai tra due copie.

Che cosa non copre:
Le colonne di una tabella esistente non vengono riordinate, e una colonna rinominata appare come una rimozione più un'aggiunta. Viste, procedure e trigger si confrontano testualmente: anche solo una formattazione diversa conta come differenza.

MySQLMariaDBAurora

Una modifica del partizionamento viene rilevata e segnalata come avviso, ma mai tradotta in SQL: ripartizionare riscrive l'intera tabella. Anche un DEFINER diverso conta come differenza, e in MariaDB il DDL di un trigger è il testo letterale con cui è stato scritto. Anche un evento con orario di inizio diverso risulta differente, perché quell'orario fa parte della sua definizione.

PostgreSQL

I tipi propri — ENUM, domini, tipi compositi — si confrontano come una vista, nel loro gruppo Tipi. Lo script crea quelli che mancano prima delle tabelle che li usano ed elimina alla fine di tutto quelli che ha solo l'origine. Un ENUM che ha solo guadagnato etichette in fondo si aggiorna con ALTER TYPE … ADD VALUE; qualsiasi altra modifica di un tipo resta nello script come nota da applicare a mano, perché ricreare un tipo in uso obbliga a riscrivere ogni colonna che lo usa. I tipi creati da un'estensione, come quelli di PostGIS, restano fuori: li porta il suo CREATE EXTENSION.

Controlla sempre lo script prima di eseguirlo in produzione.

Caso d'uso tipico:
Prima di un rilascio, confrontare la produzione (origine) con lo schema di sviluppo (destinazione): lo script porta la produzione a ciò che lo sviluppo ha già, senza scriverlo a mano.

Disponibile su macOS, iPad e iPhone.

Parole chiave: schema diff, confrontare, schema, alter table, migrazione, differenze, ADD COLUMN, DROP COLUMN, MODIFY COLUMN, SHOW CREATE TABLE, CREATE TABLE, indici, chiavi esterne, partizionamento, solo modifiche

ERD multi-database: visualizzare relazioni cross-database

Aggiungi un secondo database al canvas del diagramma ER per visualizzare relazioni tra database.

Dove si trova: Diagramma ER › + DB

Il Diagramma ER può mostrare tabelle di due database contemporaneamente sullo stesso canvas, incluse le chiavi esterne che passano da un database all'altro.

Come aggiungere un secondo database:
1. Con il Diagramma ER aperto, seleziona il DB principale nel selettore a sinistra della barra degli strumenti.
2. Premi il pulsante + DB nella barra degli strumenti per aggiungere un secondo database.
3. Seleziona il secondo DB nel nuovo selettore che appare.
4. Il canvas si aggiorna automaticamente mostrando le tabelle di entrambi i database.

Codifica dei colori:
- Intestazione blu — tabelle del DB principale.
- Intestazione verde acqua (teal) — tabelle del secondo DB.
- Frecce arancioni — relazioni di chiave esterna che passano da un database all'altro.
- Frecce normali — relazioni all'interno dello stesso database.

Requisito per le relazioni cross-database:
Le chiavi esterne devono essere dichiarate in information_schema. MySQL/MariaDB registra le FK in information_schema.KEY_COLUMN_USAGE. Se le relazioni tra database non appaiono, verifica che le FK esistano formalmente sul server (non siano solo convenzioni di denominazione).

Navigazione ed esportazione:
Tutte le funzioni del diagramma ER normale si applicano al canvas multi-database: zoom, pan, auto-layout, salvare il layout, esportare PNG/PDF e visualizzare il DDL delle tabelle. Consulta gli argomenti Diagramma ER per maggiori dettagli.

Disponibile su macOS, iPad e iPhone.

Parole chiave: erd, multi, cross-database, relazioni, secondo database, foreign key, diagramma, multi-database, intestazione blu, intestazione teal, frecce arancioni