- Questo topic ha 6 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 19 anni, 6 mesi fa da .
-
Topic
-
Ciao a tutti,
stavo pensando a come si potrebbero scrivere in LaTeX delle espressioni in algebra relazionale, un linguaggio di interrogazione procedurale e ad alto livello per le basi di dati.Il mio primo punto di partenza è una raccolta di esercizi scritta un po’ di tempo fa da uno dei miei professori, reperibile all’indirizzo <http://www.dimi.uniud.it/montana/exercise/Libro_AR.ps> [155 KiB].
Ho provato a dare un’occhiata nel forum per vedere se l’argomento è già stato trattato, ma non mi sembra; con Google ho trovato una pagina in cui si parlava dei simboli usati per il linguaggio, <http://www.cs.indiana.edu/l/www/classes/b561/2004/aux_files/latex_for_b561.html>, reperibili comunque in parecchie altre guide dedicate a LaTeX, e un file di esempio (scritto da un’altra persona) su come si potrebbero scrivere espressioni complete, <http://www.cs.uleth.ca/~rice/latex/worksheet.pdf> [49,6 KiB].
Partendo dalla raccolta scritta da questo mio professore e da quest’ultimo esempio trovato in rete, ho provato a scrivere qualcosa, e volevo sentire che cosa ne pensavate. In particolare, vorrei discutere dei seguenti problemi:
-
nella raccolta, i simboli usati per le operazioni (es. «sigma» per la selezione, «pi greco» per la proiezione, ecc.) hanno un corpo maggiore rispetto al resto del testo; volevo capire se sia giusto o meno adottare questa pratica e, nel caso in cui lo sia, se la mia soluzione («\LARGE») va bene o se si può fare di meglio;
-
può darsi, talvolta, che i nomi delle relazioni e degli attributi coinvolti non siano tipici nomi da insiemi, come «A» o «B», ma nomi comuni, come «GIOCATORE» e «nomeAutore»; pertanto, mi farebbe piacere sapere se qualcuno la pensa come me e quindi li inserirebbe come testi all’interno delle formule (es. «\[ … \text{nomeAutore} … \]») oppure se andrebbero inseriti direttamente all’interno di un ambiente matematico (es. «\[ … nomeAutore … \]»);
-
se un’interrogazione è costituita da più espressioni, come si fa (un’espressione per riga?) e quale ambiente si usa (es. «align»?);
-
l’ultimo problema è più generale, e quindi ne parlo in un altro post.
Ora espando un po’ meglio questi punti e vi faccio vedere il codice che ho scritto, così ci capiamo meglio:
-
ecco un sorgente minimale:
`\documentclass{article}\usepackage{amsmath}
\begin{document}
Sia $R1$ definita sugli attributi $A, B$ e $C$ ($R1(A, B, C)$); la relazione
$R2$ \`e data da:\[
R2 \leftarrow \text{\LARGE{$\pi$}}_{B} (\text{\LARGE{$\sigma$}}_{C > 5} (R1))
\]\end{document}
`
chiaramente, per migliorare la leggibilità, si potrebbero definire dei comandi appositi:
`\documentclass{article}\usepackage{amsmath}
\newcommand{\proiezioneSu}[1]{\text{\LARGE{$\pi$}}_{#1}}
\newcommand{\selezioneSu}[1]{\text{\LARGE{$\sigma$}}_{#1}}\begin{document}
Sia $R1$ definita sugli attributi $A, B$ e $C$ ($R1(A, B, C)$); la relazione
$R2$ \`e data da:\[
R2 \leftarrow \proiezioneSu{B} (\selezioneSu{C > 5} (R1))
\]\end{document}
` -
immaginiamo di avere la relazione GIOCATORE(nomeGiocatore,Squadra): così i nomi «comuni» delle relazioni e degli attributi verrebbero inseriti direttamente all’interno del testo matematico, come se fossero delle variabili…
`\[
R \leftarrow \proiezioneSu{nomeGiocatore}
(\selezioneSu{Squadra = `Olanda'} (GIOCATORE))
\]
`
… così, invece (come farei io), si enfatizzerebbe il fatto che si tratta di parole della lingua italiana, non della matematica:
`\[
R \leftarrow \proiezioneSu{\text{\emph{nomeGiocatore}}}
(\selezioneSu{\text{\emph{Squadra = `Olanda'}}} (\text{\emph{GIOCATORE}}))
\]
`
anche in questo caso, si potrebbero definire altri comandi per leggibilità:
`\documentclass{article}\usepackage{amsmath}
\newcommand{\attr}[1]{\text{\emph{#1}}}
\newcommand{\rlz}[1]{\text{\emph{#1}}}
\newcommand{\proiezioneSu}[1]{\text{\LARGE{$\pi$}}_{#1}}
\newcommand{\selezioneSu}[1]{\text{\LARGE{$\sigma$}}_{#1}}\begin{document}
\[
R \leftarrow \proiezioneSu{\attr{nomeGiocatore}}
(\selezioneSu{\attr{Squadra = `Olanda'}} (\rlz{GIOCATORE}))
\]\end{document}
` -
immaginiamo di avere un’interrogazione costituita da due espressioni; io la scriverei in questo modo:
`\begin{align*}
&\rlz{GIOCATORE\_OLANDA} \leftarrow \selezioneSu{\attr{Squadra = `Olanda'}}
(\rlz{GIOCATORE})\\
&R \leftarrow \proiezioneSu{\attr{nomeGiocatore}}
(\rlz{GIOCATORE\_OLANDA})
\end{align*}
`
ho usato «align*» al posto di «align» in quanto la numerazione non era rilevante, e ho preferito allineare («&») all’inizio della riga piuttosto che in concomitanza con la freccia che indica il risultato (in algebra relazionale si scrive da destra a sinistra).
Ci terrei a sapere come scrivereste voi il tutto, tenendo conto di questi tre casi.
Grazie e a presto!
Saluti.
-
- Devi essere connesso per rispondere a questo topic.