BD Relacionais • Introduzido por Ted Codd (IBM Research) em 1970 • O modelo usa um conceito de relação matemática, algo como uma tabela de valores, como bloco de construção básica • As primeiras implementações comerciais se tornaram disponíveis no início da década de 80 (Oracle e IBM SQL/DS) Conceitos • O modelo relacional representa o BD como uma coleção de relações • Uma relação é pensada então como uma tabela de valores • No modelo relacional, cada linha na tabela representa um fato que corresponde a uma entidade ou relacionamento do mundo real (modelo E-R) Nomenclatura Definição Descrição Domínio Conjunto de valores atômicos. Por atômico, entendemos que cada valor no domínio é indivisível no que diz respeito ao modelo relacional. Relação É uma tabela com colunas e linhas Atributo Cabeçalho da coluna, coluna nomeada de uma relação Tupla Uma linha da relação Esquema de Relação Composto de um nome de relação e uma lista de atributos na forma R(A1, A2, ..., An) Grau Número de atributos que fazem parte do esquema da relação (n)
Cardinalidade Número de tuplas em uma relação
Tipo de dado Também chamado de formato, designa a propriedade do conteúdo do atributo Exemplo • ALUNO(Nome, CPF, Endereço, Telefone, Celular, DataNascimento, Curso) • ALUNO(Nome: string, CPF: string, Endereço: string, Telefone: string, Celular: string, DataNascimento: data, Curso: integer) Exemplo Valores nulos • Ausência de valores nas tuplas referentes a um atributo específico • “Valor desconhecido” • “Valor existe, mas não está disponível” • “Atributo não se aplica a esta tupla” Tipos de Chave Conceito Descrição Superchave Subconjuntos de atributos de um esquema de relação de forma que duas tuplas não tenham as mesmas combinações de valores para estes atributos. Chave candidata Atributo ou conjunto de atributos que identificam unicamente uma tupla que podem ser escolhidos para ser chave primária Chave primária Chave candidata que foi escolhida para identificar as tuplas na relação. As chaves primárias em uma relação são forçadas a terem a propriedade NOT NULL, ou seja, não devem ter valor nulo em qualquer tupla presente na relação. Chave estrangeira Um atributo ou conjunto de atributos em uma relação que combinam com alguma chave candidata de alguma (ou possivelmente da mesma) relação. Restrições de Integridade Tipo Descrição Integridade de Entidade Nenhum atributo que seja chave primária pode assumir valor nulo (NULL). Integridade de Chave Toda tupla tem um conjunto de atributos que a identifica univocamente (de maneira única) na relação. Integridade Referencial Uma relação pode ter um conjunto de atributos que contém valores com mesmo domínio de um conjunto de atributos que forma a chave primária de outra relação (Chave estrangeira) Exemplo: Instância do BD DreamHome Esquema Conceitual Relação de base • Uma relação nomeada correspondendo a uma entidade no esquema conceitual cujas tuplas estão fisicamente armazenadas no banco de dados. Visão (View) • O resultado dinâmico de uma ou mais operações sobre relações de base para produzir outra relação. • É uma relação virtual que não existe necessariamente no BD, mas que pode ser produzida por um usuário em particular para um uso específico. Uso de Visões • Mecanismo poderoso e flexível para prover segurança, escondendo partes do BD para certos usuários • Permite aos usuários acessarem dados de forma customizada • Pode simplificar operações complexas sobre as relações de base. Criação Física da Relação CREATE TABLE Branch ( branchNo INTEGER NOT NULL, street VARCHAR(50), city VARCHAR(50), postcode VARCHAR(9), PRIMARY KEY(branchNo) ) CREATE TABLE Staff ( staffNo INTEGER NOT NULL, fName VARCHAR(50), lName VARCHAR(50), position VARCHAR(20), sex VARCHAR(1), DOB DATE, salary DECIMAL(10,2), branchNo INTEGER, PRIMARY KEY (staffNo), FOREIGN KEY (branchNo) REFERENCES Branch(branchNo) ) Utilizando ALTER TABLE CREATE TABLE Staff ( staffNo INTEGER NOT NULL, fName VARCHAR(50), lName VARCHAR(50), position VARCHAR(20), sex VARCHAR(1), DOB DATE, salary DECIMAL(10,2), branchNo INTEGER, PRIMARY KEY (staffNo) ) Usando ALTER TABLE • ALTER TABLE Staff ADD FOREIGN KEY (branchNo) REFERENCES Branch(branchNo)