$ \def\conv#1{#1^\circ} \def\comp{\mathbin\cdot} \def\atmost{\subseteq} \def\to{\rightarrow} \def\sep{\rule{15em}{0.3pt}} \def\rcb#1#2#3#4{\mathopen{\langle}#1 #2 : #3 : #4\mathclose{\rangle}} \def\larrow#1#2#3{#3\ \xleftarrow{#2}\ #1} \def\rarrow#1#2#3{#1\ \xrightarrow{#2}\ #3} \def\Nat{\mathbb{N}} \def\conj#1#2{\mathopen{\langle} #1, #2\mathclose{\rangle}} $
Q2.1 - Começando por analisar o diagrama relacional que descreve a Mercearia da D. Acácia,
Escreva sob a forma de um "quadrado mágico", $R\ \cdot S \subseteq P \cdot Q$, cada um dos invariantes:
$\Box$
Resolução:
Um cupão só pode ser usado numa compra. Logo $Used$ tem de ser simples.
Propõe-se:
Q2.2 - Com base nas multiciplidades da tabela
UML | Alloy | A | $ \stackrel R \rightarrow $ | B |
---|---|---|---|---|
$0..*$ | set | - | - | |
$1..*$ | some | surjective | entire | |
$0..1$ | lone | injective | simple | |
$1..1$ | one = lone + some | function$^\circ$ | function |
apura-se, por exemplo
$User\ {}^{\underleftarrow{has\_payment}}\ Payment $ (i.é, uma função)
ao analisar o diagrama UML abaixo (créditos: creately.com) de um On-line bus reservation system.
De facto, até se podia renomear essa função para: $User\ {}^{\underleftarrow{is\_the\_user\_who\_paid}}\ Payment $.
Caracterize as outras relações desse diagrama UML e represente-as num diagrama relacional.
$\Box$
Resolução:
Como em UML a multiplicidade 1
identifica funções, teremos ainda:
Q2.3 - Uma tabela de hashing $HT$ é uma relação que satisfaz a propriedade
\begin{eqnarray} HT \subseteq \frac{id}{hash} \end{eqnarray}onde $ hash : A \rightarrow Int$ é uma função de hashing pré-definida.
$\Box$
Resolução:
Basta converter $HT \atmost \conv{hash}$ para lógica quantificada: