Skip to content

Instantly share code, notes, and snippets.

@abarichello
Last active April 15, 2018 03:33
Show Gist options
  • Save abarichello/862a0a9e9843feba449e5352faf6ef8a to your computer and use it in GitHub Desktop.
Save abarichello/862a0a9e9843feba449e5352faf6ef8a to your computer and use it in GitHub Desktop.
-- https://dbis-uibk.github.io/relax/calc.htm
Usuario = {
id:number, situacao:string, senha:string
1, 'ativo', '11'
2, 'inativo', '12'
3, 'ativo', '13'
4, 'ativo', ''
}
Funcionario = {
id:number, nome:string
1 , 'joao'
2 , 'paulo'
3 , 'fulano'
4 , 'barichello'
}
Endereco = {
id:number, numero:number, complemento:string, cep:number
1, 305, 'casa', 88100111
2, 105, 'apartamento', 88200222
3, 45, 'casa 2 andares', 88000999
4, 0, 'apartamento', 0
}
Cidade = {
id:number, nome:string
1 , 'São José'
2 , 'Florianópolis'
3 , 'Coréia do Sul'
}
-- 1) Selecione todos os usuários ativos
-- π id σ situacao = 'ativo' (Usuario)
-- 3) Selecione todos os funcionários cujo endereço tenha o complemento preenchido
-- π id (Usuario) ∩ π id (Endereco)
-- 4) Selecione os atributos id e senha de todos os usuários
-- π id, senha (Usuario)
-- 5) Selecione o endereço completo de todos os funcionários
-- FIXME σ endereco (π id (Users) ∩ π id (Endereco))
-- 6) Selecione o nome de todas as cidades
-- π nome (Cidade)
-- 7) Selecione o id e o nome dos funcionários cujas residências sejam numeradas entre 75 e 177
-- numeros_selecionados = sigma numero > 75 and numero < 177 (Endereco)
-- sujeitos = pi id (numeros_selecionados) ∩ pi id (Usuario)
-- pi id (sujeitos)
-- 9) Selecione o id dos usuários que estejam inativos ou que possuam uma senha vazia.
-- usr_inativos = pi id sigma situacao = 'inativo' (Usuario)
-- usr_senhavazia = pi id sigma senha = '' (Usuario)
-- usr_inativos union usr_senhavazia
-- 10) Selecione o id e o nome dos funcionários que possuam endereços cujos componentes (todos) estejam preenchidos.
-- sujeitos = pi id sigma numero != 0 and cep != 0 (Endereco)
-- pi id (Usuario) intersect pi id (sujeitos)
-- 11) Selecione a cidade cujo nome é igual a “Curitiba”, renomeando seu id para “identificador” e atribuindo o nome “município” para a relação resultado.
-- 12) Selecione as ocupações do CBO onde a descrição seja diferente de “Alfaiate”, renomeando os ids e códigos para “chave_1” e “chave_2”.
-- 13) Proceda com a união entre as relações “cbo_familia”, “cbo_ocupacao” e “cbo_sinonimo”, observando e respeitando a diferença entre os tipos de tupla das relações.
-- 14) Proceda com a interseção entre as relações “cbo_ocupacao” e “cbo_sinonimo”, observando e respeitando a diferença entre os tipos de tupla das relações. Responda também: o que é possível identificar com essa expressão?
-- 15) Selecione os ids e nomes de todos os funcionários, subtraindo aqueles que residam em “Florianópolis”, “São José”, “Palhoça” e “Biguaçu”, ou que possuam um cep vazio em seu endereço.
-- excluidos_id = pi id sigma nome = 'Florianópolis' or nome = 'São José' or nome = 'Biguaçu' (Cidade)
-- cepvazio_id = pi id sigma cep = 0 (Endereco)
-- result_id = (excluidos_id union cepvazio_id) intersect pi id (Funcionario)
-- pi id (Funcionario) - pi id (result_id)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment