210 likes | 397 Views
Modelo Relacional. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos Uma relação é uma tabela com linhas e colunas. Esquema da Relação (tabela). Descreve as colunas da tabela Especifica o nome da relação; o nome de cada campo (coluna ou atributo);
E N D
Modelo Relacional • Uma base de dados é • uma colecção de uma ou mais relações com nomes distintos • Uma relação é • uma tabela com linhas e colunas
Esquema da Relação (tabela) • Descreve as colunas da tabela • Especifica • o nome da relação; • o nome de cada campo (coluna ou atributo); • o domínio de cada campo • tipo de dados (inteiro, texto, ...) • tamanho (nº caractéres)
Instância da Relação • É um conjunto de tuplos ou registos • Cada tuplo tem o mesmo número de campos que o esquema da relação • Pode ser vista como uma tabela onde • cada tuplo é uma linha e • todas as linhas têm o mesmo número de campos • Relação = Instância da Relação
Exemplo Tabela Campos (atributos ou colunas) nomes dos campos Tuplos ou registos
Características • Uma relação é um conjunto de tuplos únicos • não existem duas linhas iguais • a ordem de apresentação das linhas não é importante • Restrições de domínio • os valores que aparecem em cada coluna devem respeitar o domínio definido no esquema • Definições • Grau = número de atributos • Cardinalidade = número de tuplos
Esquema de tabelas DEA Desenho Esquema de tabelas
Esquema de tabelas (ETb): regras • O esquema de tabelas (ETb) define as tabelas relacionais, atributos e o acesso aos dados (chaves). • Cada entidade e associação do DEA poderia originar uma tabela, mas assim obteríamos um número desnecessariamente grande de tabelas. • O objectivo é optimizar o número de tabelas, garantindo que não há atributos com valores indefinidos. nome tabela chave primária atributos identificadores atributos descritores chave primária de outra tabela chaves externas
ETb: associação 1:1 • Caso 1 • Associação 1:1 obrigatória nos dois sentidos. • Uma tabela 1 1 Posição arquivo arquivado Livro Livro Livro = @código_livro + título + editora + ano Posição_arquivo = @código_arquivo + tipo código_arquivo = armário + prateleira código_livro título editora ano armário prateleira tipo
ETb: associação 1:1 • Uma associação 1:1 obrigatória nos dois sentidos pode originar duas tabelas, dependendo da importância de cada objecto no sistema. • Duas tabelas, cada uma com uma chave externa. 1 1 Camião conduz Condutor Condutor = @número_condutor + nome + morada + salário Camião = @matrícula + marca + carga Condutor Camião número_condutor matrícula nome morada salário marca carga número_condutor matrícula
ETb: associação 1:1 • Uma associação 1:1 obrigatória só num sentido. • Duas tabelas e uma chave externa na tabela correspondente à entidade obrigatória na associação. 1 1 Garagem tem Apartamento Apartamento = @código_apartamento + área + número_divisões Garagem = @código_garagem + número_lugares + área Garagem Apartamento código_garagem código_apartamento número_lugares área área número_divisões código_apartamento Nota: os atributos não podem ter valores nulos.
ETb: associação 1:1 • Uma associação 1:1 opcional nos dois sentidos. • Três tabelas, uma por cada entidade e uma para a associação. 1 1 Garagem tem Apartamento Apartamento = @código_apartamento + área + número_divisões Garagem = @código_garagem + número_lugares + área Garagem Tem (propriedade) Apartamento código_garagem código_apartamento código_apartamento número_lugares área código_garagem área número_divisões Há garagens que pertencem a pessoas sem apartamento.
ETb: associação 1:N • Caso 2 • Uma associação 1:N obrigatória nos dois sentidos. • Duas tabelas. A tabela de baixo na hierarquia fica com a chave da tabela de cima na hierarquia. 1 N Apólice subscreve Cliente Cliente = @número_cliente + nome+ morada Apólice = @número_apólice + capital + prémio + unidade_risco Apólice Cliente número_apólice número_cliente capital prémio unidade_risco nome morada número_cliente
ETb: associação 1:N • Uma associação 1:N obrigatória só num sentido. • Duas tabelas. A tabela subalterna na hierarquia fica com chave externa. 1 N Aluguer efectua Cliente Cliente = @número_cliente + nome+ morada Aluguer = @número_aluguer + data + situação Aluguer Cliente número_aluguer número_cliente data situação nome morada número_cliente
ETb: associação 1:N • Uma associação 1:N obrigatória no outro sentido. • Três tabelas. Uma para cada entidade e uma para a associação. 1 N Empregado trabalha Departamento Departamento = @número_departamento + nome + localização Empregado = @número_empregado + nome + morada + salário Empregado Trabalha Departamento número_empregado número_departamento número_departamento número_empregado nome morada salário nome localização
Paciente Contém Enfermaria código_paciente número_enfermaria número_enfermaria código_paciente nome morada ... tipo local ETb: associação 1:N • Uma associação 1:N opcional nos dois sentidos. • Três tabelas. 1 N Paciente contém Enfermaria Enfermaria = @número_enfermaria + tipo + local Paciente = @código_paciente + nome + morada + ... Um paciente pode ser interno ou externo.
Fornece Produto código_produto código_produto número_fornecedor nome quantidade ETb: associação N:M • Caso 3 • Uma associação N:M qualquer que seja o grau mínimo. • Três tabelas, uma por cada entidade e uma cuja chave é a concatenação das chaves das entidades envolvidas na associação. N M Fornecedor fornece Produto Produto = @código_produto + nome + quantidade Fornecedor = @número_fornecedor + nome +morada + telefone + fax Fornecedor número_fornecedor nome morada telefone fax
ETb: entidade associativa • Caso 5 • Entidade associativa, qualquer que seja o grau da associação. • Três tabelas. M N Encomenda Produto Produto = @código_produto + descrição + peso + cor Encomenda = @número_encomenda + data_emissão + data_recepção Pedido = @número_pedido + quantidade_pedida número_pedido = número_encomenda + código_produto Pedido Produto Pedido Encomenda código_produto número_encomenda código_produto número_encomenda descrição peso cor data_emissão data_recepção quantidade_pedida
ETb: entidade associativa Outro exemplo: 1 N Médico família Doente Médico_família = @número_médico + nome + morada + especialidade Doente = @número_doente + nome + morada + regime Trata = @código_tratamento + data_tratamento código_tratamento = número_médico + número_doente Trata Doente Trata Médico família número_doente número_médico número_doente número_médico nome morada regime nome morada especialidade data_tratamento
ETb: associação unária • Caso 6 • Associação unária de 1:1 • Duas tabelas. 1 (marido) Pessoa Pessoa = @número_BI + nome + morada + altura 1 é casado (esposa) Casamento Pessoa número_BI_esposa número_BI_marido número_BI Uma (instância de) pessoa pode desempenhar um de dois papéis: esposa ou marido. nome morada altura
ETb: associação unária • Caso 7 • Associação unária de 1:N • Origina uma tabela. (orientando) N Empregado Empregado = @número_empregado + nome + morada + categoria 1 orienta (orientador) Empregado número_empregado nome morada categoria número_orientador O empregado senior “orienta-se” a si próprio.
Exemplo Reserva Quarto Cliente n_reserva BI n_quarto nome dias_reservados data_chegada hora_chegada n_camas situação categoria preço descrição nome morada data_nasc telefone n_quarto BI Factura Pedido despertar n_factura n_pedido data valor_total data hora n_reserva BI n_quarto