Do modelo ao esquema relacional

Conversão de UML em tabelas, chaves primárias e estrangeiras, e validação do esquema da Loja de Bilhetes.

TLDR

Perguntar sobre esta página

ChatGPTClaudePerplexityGrokGeminiCopiar e abrirDeepSeekCopiar e abrir

Converter associações

RelaçãoTradução
1:NFK no lado N; NOT NULL quando cada linha exige a referência.
1:1FK com UNIQUE, no lado adequado à obrigatoriedade e operações.
N:N simplesTabela de ligação com duas FKs e chave composta quando só há uma ocorrência por par.
Entidade associativaIdentidade própria se o domínio admite várias ocorrências do mesmo par.

Bilhete tem identidade própria: uma pessoa pode comprar vários para a mesma sessão. Não declares o par utilizador-sessão único.

Cada cartaz pertence a uma sessão; cada sessão pode ter zero ou um cartaz. Assumindo sessoes(id INTEGER PRIMARY KEY):

CREATE TABLE cartazes (
  id INTEGER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
  sessao_id INTEGER NOT NULL UNIQUE REFERENCES sessoes(id)
);

A FK não recebe IDENTITY: refere um identificador existente. Nenhuma destas restrições obriga uma sessão a ter cartaz. Do mesmo modo, uma FK de sessão para evento não impõe o mínimo de uma sessão por evento.

Chaves, domínios e NULL em PostgreSQL

  • PK: unicidade e ausência de NULL. Uma chave candidata é mínima segundo o domínio; um id artificial não substitui a unicidade do email.
  • CHECK: recusa falso, mas aceita verdadeiro ou desconhecido. preco NUMERIC(8,2) NOT NULL CHECK (preco >= 0) exige ambas as regras.
  • DEFAULT: fornece o valor omitido; não proíbe enviar outro valor ou NULL.
  • UNIQUE: permite vários NULL por defeito. NULLS NOT DISTINCT, quando suportado, muda esse comportamento. Define também a política de maiúsculas do email.
  • FK: exige uma referência válida quando a coluna não é NULL; pode referir a própria tabela.

Eliminação e atualização de referências

AçãoConsequência
NO ACTIONRecusa a violação quando verifica a restrição; admite adiamento se ela for deferrable.
RESTRICTImpede a operação sem esse adiamento equivalente.
CASCADEPropaga aos registos que referenciam.
SET NULLExige que NULL seja permitido.
SET DEFAULTO default tem de continuar a satisfazer a FK.

Se bilhetes referencia sessões com ON DELETE CASCADE, apagar a sessão pode apagar bilhetes; apagar um bilhete não apaga a sessão. Escolhe ações pelo ciclo de vida e pelo histórico necessário.

Subtipos e documentação

Supertipo com tabelas de subtipos partilha atributos através de PKs que também são FKs. Tabela única usa discriminador e CHECKs. Tabelas por classe concreta repetem atributos e podem exigir UNION. Nenhuma escolha dispensa verificar totalidade, disjunção e identidade.

Na notação compacta, NN significa NOT NULL, UK unicidade, CK verificação e -> referência. Seleciona o schema do grupo com SET search_path TO lbawXXg após o criar; não uses inadvertidamente o public partilhado.

Valida casos de uso com escritas válidas, inválidas e concorrentes. Passar alguns exemplos não prova todas as garantias.

Conversão completa para PostgreSQL.

Referir a combinação certa

Duas FKs independentes provam existência de cada componente, não que pertençam ao mesmo par. Lugar 90 de S12 e sessão S13 podem existir sem (90,13) ser válido.

FOREIGN KEY (lugar_id,sessao_id) REFERENCES lugares(id,sessao_id) exige o par, com chave única correspondente na tabela referida. Com MATCH SIMPLE predefinido, algum componente NULL dispensa correspondência; usa NOT NULL em ambos quando são obrigatórios.

Uma FK para pertença autor-grupo também pode impedir eliminar essa pertença enquanto houver posts. Confirma se a regra é contínua ou só válida no momento de publicar: a restrição composta pode ser mais forte do que a regra real. Não escolhas CASCADE sem decidir o destino do histórico. Exercício resolvido

FK composta e ciclo de vida.

À tua maneira

Aparência

Modo de cor
Tema
Cor de destaque

Leitura

Fonte de leitura

Álgebra, lógica e uma ideia de cada vez.

Código

Fonte do código

Navegação

Cursor de leitura, sem edição. h, j, k, l movem; / pesquisa nesta página. v seleciona caracteres; V seleciona linhas; y copia. Tab permite destacar ou comentar. Espaço ou Enter abre blocos recolhíveis. Nos cartões, h, j, k, l mudam o foco.

CSS personalizado

Ativa uma sugestão ou guarda o teu CSS. Só muda este navegador.

Usa --page, --text e --accent para acompanhar o tema.

Seletores e recuperação

.site-header, .prose, .course-card, [data-reading-history], [data-playground] e .page-actions.

Abre a aparência com a tecla vírgula ou no rodapé. Se o CSS esconder os controlos, abre esta página sem CSS personalizado.

Pesquisar

Escreve para pesquisar em todo o site.

para escolher · Enter para abrir · Esc para fechar

Copiar fórmula

A cópia automática não está disponível. Copia o LaTeX abaixo.

Pesquisar nesta página

Enter procura · n / N repetem · Esc cancela. Ctrl / Cmd K pesquisa todo o site.

Atalhos de teclado

Clica numa tecla para a mudar. Esc cancela. Backspace desativa.

PesquisarCtrl / Cmd K

Os atalhos não interferem enquanto escreves. Tab e Enter funcionam sempre.