Do UML ao esquema relacional
Relações, chaves, associações n-árias e estratégias de tradução de generalizações.
Chaves e referências
Cada classe origina uma relação com os seus atributos simples.
- Uma superchave identifica cada tuplo; uma candidata é mínima por inclusão. Escolher uma primária não elimina as restantes candidatas.
- Uma estrangeira referencia uma chave candidata, possivelmente da própria relação. Numa referência composta, todas as colunas têm de apontar ao mesmo tuplo alvo.
UNIQUE(email)com emails desconhecidos não faz de email uma chave candidata conceptual.
Decidir a tradução
| Situação na UML | Tradução e condição |
|---|---|
| Um para muitos | Estrangeira no lado muitos. NOT NULL se a participação desse lado for obrigatória. |
| Muitos para muitos | Relação própria com as duas referências. O par é chave se cada ligação ocorrer uma vez. |
| Um para um | Estrangeira com UNIQUE. Junta NOT NULL para obrigatoriedade do lado que guarda a referência. |
| Id artificial numa associação N:M | Conserva UNIQUE do par original enquanto a regra se mantiver. |
| Reflexiva N:M, como amizades | Relação própria com papéis distintos; idPessoaA < idPessoaB guarda cada par uma vez, sem autoaresta. |
| Número local a um contexto, como clube | Chave (idClube, numeroMembro). UNIQUE(idClube, idPessoa) só se cada pessoa tiver uma inscrição. |
| Ternária | Relação com as três estrangeiras. Se Produto/Projeto determinar o fornecedor, esse par é candidata. |
Item(idEncomenda, idProduto, qtd, precoUnitario) guarda os factos do par: quantidade e preço da compra pertencem à ligação, não a cada extremo.
Uma estrangeira prova que o alvo existe; não prova que todos os alvos participam. Mesmo com Item obrigatório, uma encomenda pode ter zero linhas. Mínimos como “pelo menos um produto” exigem validação nas inserções e na remoção da última linha, incluindo estados intermédios da transação.
Generalizações e derivados
| Estratégia | Quando serve e o que vigiar |
|---|---|
| Uma relação por classe | Subclasse referencia a superclasse. Admite sobreposição; completude e disjunção pedem regras próprias. |
| Uma por tipo concreto | Repete atributos herdados. Em completa e disjunta, só guarda tipos concretos; unicidade global não vem das primárias. |
| Uma relação única | Junta todos os atributos. Um discriminador serve tipos disjuntos; sobreposição pede indicadores. |
Composição pode justificar ON DELETE CASCADE, conforme o ciclo de vida escolhido. Um atributo derivado calcula-se numa consulta ou vista; guardá-lo exige regra de sincronização.