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 Descreve as colunas da tabela Especifica o nome da relação o nome de cada campo (coluna ou atributo o domínio de de cada campo o nome conjunto de valores associados Ex: aluno( nome: string, idade: integer, login: string Teresa Gonçalves, 2004 IMD, 1 Teresa Gonçalves, 2004 IMD, 2 Instância da Relação Exemplo É um conjunto de tuplos ou registos cada tuplo tem os 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 campos (atributos ou colunas id nome idade login 10000 João 18 joao@di 10050 Maria 22 maria@de 9999 Manuel 19 manuel@de 8999 Joana 19 joana@di nomes dos campos tuplos Teresa Gonçalves, 2004 IMD, 3 Teresa Gonçalves, 2004 IMD, 4
Características SQL - Structured Query Language 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 ou aridade = número de atributos Cardinalidade = número de tuplos Teresa Gonçalves, 2004 IMD, 5 Tabela = Relação DDL Data Definition Language Sub-conjunto do SQL que suporta a criação, remoção e modificação de tabelas Domínio dos atributos integer real char(n date Teresa Gonçalves, 2004 IMD, 6 DDL Tabelas Definição de uma tabela CREATE TABLE Ex: CREATE TABLE aluno ( nome: char(60, idade: integer, login: char(40 Teresa Gonçalves, 2004 IMD, 7 Inserção DDL Tuplos (1 INSERT Ex: INSERT INTO aluno (id,nome,idade,login VALUES (5667,'João',18,'joao@di' Pode-se omitir a lista de nomes de colunas, listando os valores pela ordem apropriada(aquela definida aquando da criação da tabela, mas é bom estilo explicitar os nomes Teresa Gonçalves, 2004 IMD, 8
Remoção DELETE DDL Tuplos (2 DELETE FROM aluno WHERE aluno.nome = 'João' Modificação UPDATE UPDATE aluno A SET A.idade = A.idade+1 WHERE A.nome = 'Maria' Restrições de integridade São condições (especificadas no esquema da base de dados que restringem os dados a guardar Tipo de restrições domínio do atributo chave chave estrangeira outras Teresa Gonçalves, 2004 IMD, 9 Teresa Gonçalves, 2004 IMD, 10 Restrição de chave DDL Chaves candidatas Chave candidata Indica um sub-conjunto mínimo de atributos de uma relação que constituem um identificador único de cada tuplo Chave primária É uma das chaves candidatas é escolhida como principal meio de identificação / referenciação do tuplo o SGBD gera mecanismos que, dada a sua chave primária, tornam a devolução do tuplo eficiente CREATE TABLE aluno ( nome: char(60, idade: integer, login: char(40, UNIQUE (nome,idade, PRIMARY KEY (id chave candidata chave primária Teresa Gonçalves, 2004 IMD, 11 Teresa Gonçalves, 2004 IMD, 12
Restrição de chave estrangeira Chave estrangeira a informação contida numa relação está ligada com informação contida noutra Ex: aluno( nome: string, idade: integer, login: string inscrição( nomed:string, data:date, id:integer se campo id na tabela inscrição refere os dados dum estudante id é uma chave estrangeira e refere estudante A chave estrangeira na relação que referencia tem de ser igual à chave primária na relação referenciada deve ter o mesmo número de colunas e o mesmo domínio Teresa Gonçalves, 2004 IMD, 13 cnome data id IFN 12-10-04 10000 IMD 10-10-04 10050 IMD 10-10-04 10000 IMD 30-09-04 9999 IFN 30-09-04 9999 inscrição (relação que referencia chave estrangeira Exemplo chave primária Teresa Gonçalves, 2004 IMD, 14 id nome idade login 10000 João 18 10050 Maria 22 9999 Manuel 19 8999 Joana 19 Podem existir alunos sem inscrição; Qualquer inscrição, deve referir um aluno existente joao@di maria@de manuel@de joana@di estudante (relação referenciada DDL Chaves estrangeiras Do modelo EA para Relacional CREATE TABLE inscricao ( cnome: char(60, data: date, PRIMARY KEY (cnome,id, FOREIGN KEY (id REFERENCES aluno; Teresa Gonçalves, 2004 IMD, 15 Uma base de dados desenhada no modelo Entidade-Associação pode ser representada no modelo Relacional Modelo Entidade-Associação Conjuntos-Entidade Conjuntos-Associação Restrições de cardinalidade e participação Modelo Relacional Tabelas Teresa Gonçalves, 2004 IMD, 16
Conjuntos-entidade (CE Um CE é transformado numa tabela: cada atributo do CE torna-se um atributo da tabela a chave do CE torna-se a chave da tabela idade aluno nome id login aluno(id, nome, idade, login CREATE TABLE aluno ( nome: char(60, idade: integer, login: char(40, PRIMARY KEY (id Teresa Gonçalves, 2004 IMD, 17 Conjuntos-associação (CA Um CA é transformado numa relação: os atributos da chave primária de cada CE que participa na associação tornam-se chave estrangeira da relação os atributos descritivos são atributos da relação o conjunto de atributos não descritivos são uma chave candidata Teresa Gonçalves, 2004 IMD, 18 Exemplo Combinar tabelas nome aluno idade inscrição numero disciplina id login data cnome inscricao(id, cnome, data CREATE TABLE inscricao ( data: date, cnome: char(60, PRIMARY KEY (cnome,id, FOREIGN KEY (id REFERENCES aluno; FOREIGN KEY (cnome REFERENCES disciplina; Numa associação AB vários-para-1, da entidade A para B, se existir uma participação total de A é possível combinar as tabelas AB e A numa única tabela: inclui-se a informação da tabela correspondente à associação AB na tabela correspondente à entidade A Teresa Gonçalves, 2004 IMD, 19 Teresa Gonçalves, 2004 IMD, 20
Exemplo dnome orçamento B departamento tem A docente docente(nome, gabinete, dnome CREATE TABLE docente ( gabinete: char(60, nome: char(60, dnome: char(60, PRIMARY KEY (nome, FOREIGN KEY (dnome REFERENCES departamento; gabinete nome Teresa Gonçalves, 2004 IMD, 21