Modelo Relacional Esquema da Relação Descreve as colunas da tabela uma colecção de uma ou mais relações com nomes distintos Uma relação é o nome da relação o nome de cada campo (coluna ou atributo) uma tabela com linhas e colunas o domínio de de cada campo o nome conjunto de valores associados Ex: aluno( id: integer, nome: string, idade: integer, login: string) IMD, 1 Teresa Gonçalves, 2004 Especifica Uma base de dados é IMD, 2 Teresa Gonçalves, 2004 Instância da Relação Exemplo É um conjunto de tuplos ou registos campos (atributos ou colunas) cada tuplo tem os mesmo número de campos que o esquema da relação id 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 Teresa Gonçalves, 2004 IMD, 3 nome idade login 10000 João 18 joao@di 10050 Maria 22 maria@de 9999 Manuel 19 manuel@de 8999 Joana joana@di Teresa Gonçalves, 2004 19 nomes dos campos tuplos IMD, 4 Características SQL - Structured Query Language Uma relação é um conjunto de tuplos únicos Tabela = Relação Restrições de domínio os valores que aparecem em cada coluna devem respeitar o domínio definido no esquema 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 Definições Grau ou aridade = número de atributos Cardinalidade = número de tuplos Teresa Gonçalves, 2004 DDL – Data Definition Language IMD, 5 não existem duas linhas iguais a ordem de apresentação das linhas não é importante DDL – Tabelas DDL – Tuplos (1) Definição de uma tabela Inserção INSERT Ex: CREATE TABLE aluno ( id: integer, nome: char(60), idade: integer, login: char(40) CREATE TABLE 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, 6 Teresa Gonçalves, 2004 IMD, 7 Teresa Gonçalves, 2004 IMD, 8 DDL – Tuplos (2) Restrições de integridade Remoção São condições (especificadas no esquema da base de dados) que restringem os dados a guardar DELETE DELETE FROM aluno Tipo de restrições WHERE aluno.nome = 'João' UPDATE UPDATE aluno A SET A.idade = A.idade+1 WHERE A.nome = 'Maria' IMD, 9 Teresa Gonçalves, 2004 Restrição de chave IMD, 10 Teresa Gonçalves, 2004 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 domínio do atributo chave chave estrangeira outras Modificação Chave primária É uma das chaves candidatas é escolhida como principal meio de identificação / referenciação do tuplo CREATE TABLE aluno ( id: integer, nome: char(60), idade: integer, login: char(40), UNIQUE (nome,idade), PRIMARY KEY (id) chave candidata ) chave primária o SGBD gera mecanismos que, dada a sua chave primária, tornam a devolução do tuplo eficiente Teresa Gonçalves, 2004 IMD, 11 Teresa Gonçalves, 2004 IMD, 12 Restrição de chave estrangeira Exemplo chave estrangeira Chave estrangeira a informação contida numa relação está ligada com informação contida noutra Ex: aluno( id: integer, 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 deve ter o mesmo número de colunas e o mesmo domínio Teresa Gonçalves, 2004 DDL – Chaves estrangeiras CREATE TABLE inscricao ( cnome: char(60), data: date, id: integer, PRIMARY KEY (cnome,id), FOREIGN KEY (id) REFERENCES aluno; ) cnome data id IFN 12-10-04 10000 10000 João 18 IMD 10-10-04 10050 10050 Maria 22 maria@de IMD 10-10-04 10000 9999 Manuel 19 manuel@de IMD 30-09-04 9999 8999 Joana joana@di IFN 30-09-04 9999 inscrição (relação que referencia) IMD, 13 id nome idade 19 login joao@di estudante (relação referenciada) Podem existir alunos sem inscrição; Qualquer inscrição, deve referir um aluno existente A chave estrangeira na relação que referencia tem de ser igual à chave primária na relação referenciada chave primária Teresa Gonçalves, 2004 IMD, 14 Do modelo EA para Relacional 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, 15 Teresa Gonçalves, 2004 IMD, 16 Conjuntos-entidade (CE) Conjuntos-associação (CA) Um CE é transformado numa tabela: Um CA é transformado numa relação: idade aluno(id, nome, idade, login) id CREATE TABLE aluno ( id: integer, nome: char(60), idade: integer, login: char(40), PRIMARY KEY (id) aluno nome login ) 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 cada atributo do CE torna-se um atributo da tabela a chave do CE torna-se a chave da tabela IMD, 17 Teresa Gonçalves, 2004 Exemplo id aluno login idade inscrição data numero disciplina Combinar tabelas inscricao(id, cnome, data) CREATE TABLE inscricao ( data: date, cnome: char(60), id: integer, PRIMARY KEY (cnome,id), FOREIGN KEY (id) REFERENCES aluno; FOREIGN KEY (cnome) REFERENCES disciplina; ) cnome Teresa Gonçalves, 2004 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 nome IMD, 18 Teresa Gonçalves, 2004 IMD, 19 Teresa Gonçalves, 2004 IMD, 20 Exemplo dnome orçamento docente(nome, gabinete, dnome) B departamento CREATE TABLE docente ( gabinete: char(60), nome: char(60), dnome: char(60), PRIMARY KEY (nome), FOREIGN KEY (dnome) REFERENCES departamento; ) tem A docente gabinete Teresa Gonçalves, 2004 nome IMD, 21