Aula 6 BD1 Modelo Relacional. Profa. Elaine Faria UFU

Documentos relacionados
modelo introduzido por E. F. Codd Meados da década de 70: protótipos. INGRES (UC Berkeley, 73 77) System R (IBM Research at San Jose, 74 78)

SQL Básica DDL. Prof. Marcos A. Schreiner. 21 de outubro de Curso de Licenciatura em Computação

Sistemas de Informação e Bases de Dados 2012/2013. Modelo Relacional. Alberto Sardinha 2012 IST

Sumário. SQL - Criação de Tabelas. Structured Query Language. SQL Versões. André Restivo. October 18, 2010

Banco de Dados I Introdução SQL

SQL Linguagem de Definição de Dados. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

A linguagem SQL

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE INTRODUÇÃO A SQL

SQL Básica. Andre Noel

Modelo Relacional Prof. Msc Denival A. dos Santos

SQL Linguagem de Definição de Dados

SQL PostgreSQL. I Criação de Tabelas. Disciplina: SCC0241 Bases de Dados Professor: Eduardo Hruschka Estagiária PAE: Dayse de Almeida

O Modelo Relacional. Criando relações em SQL

Banco de dados. Conteúdo: DDL Prof. Patrícia Lucas

Banco de Dados I. Aula 12 - Prof. Bruno Moreno 04/10/2011

O Modelo Relacional. Database Management Systems, R. Ramakrishnan (tradução, autorizada, de Anna & Mario Nascimento)

Banco de Dados. Linguagem SQL

PCS3413. Engenharia de So-ware e Banco de Dados. Aula 16. Escola Politécnica da Universidade de São Paulo

Esquema da Relação. Modelo Relacional. Instância da Relação. Exemplo. Uma base de dados é uma colecção de uma ou mais relações com nomes distintos

Definição do esquema da base de dados. o esquema da BD é composto pelas definições de todas as tabelas da BD.

Sistemas de Informação e Bases de Dados 2012/2013. Linguagem SQL

SQL. Linguagem de Definição de Dados (DDL) Tipos em SQL. Tipos Data/Tempo em SQL (cont.)

Linguagem de Definição de Dados (DDL)

Banco de Dados. Professora: Luciana Faria

MODELO DE BANCO DE DADOS RELACIONAL

BCD29008 Banco de dados

Bancos (Bases) de Dados

Linguagem de Consulta Estruturada (SQL)

DDL DML DCL DTL Tipos Numéricos: INT FLOAT DOUBLE Tipos String: CHAR VARCHAR BINARY BLOB TEXT Tipos Data e Hora: DATE TIME TIMESTAMP YEAR

Definição de Dados com SQL

Teste Exemplo Revisão da tentativa 1

Modelo de Dados Relacional Restrições de um Banco de Dados Relacional

Instrução Create Table

Atualização e Inserção de Dados. SQL Avançado. Pedro F. Carvalho OCP Oracle g

Bases de Dados. DDL Data Definition Language

Bibliografia. Bases de Dados 2012/2013 Modelo Relacional. Helena Galhardas. Raghu Ramakrishnan, Database Management Systems, Cap. 3 10/2/ IST

Bancos (Bases) de Dados Aula #4 Modelo Relacional

MySql. Introdução a MySQL. Andréa Garcia Trindade

Parte II Modelo de Dados Relacional. Evandro E. S. Ruiz

Modelagem Física e SQL

MODELO RELACIONAL Prof.: Jacson Tiola Técnico em Redes de Computadores

Banco de Dados. Aula 7 - Prof. Bruno Moreno 13/09/2011

Revisão de Bancos de Dados

Introdução ao PostgreSQL

SQL - Criação de Tabelas

SQL Linguagem de Definição de Dados. Laboratório de Bases de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

A Linguagem SQL. Tecnologia de Base de Dados. MSc. Eugénio. Macumbe

Modelo Relacional + SQL (DDL) Material elaborado pela Prof. Karin Becker

BANCO DE DADOS PARA NINJAS

Modelagem Física e SQL

DCC011 Introdução a Banco de Dados SQL gerenciar tabelas e dados

SQL. Autor: Renata Viegas

SQL (Tópicos) Structured Query Language

Manipulação de Dados com SQL

O modelo relacional encontra-se padronizado pela indústria de informática. Ele é chamado de

MODELO RELACIONAL PARTE 2

Aula 06 Sistemas Embarcados LT38C

A linguagem SQL

Linguagem SQL Sub-linguagem DDL

Laboratório de Banco de Dados. Prof. Luiz Vivacqua.

Sistemas de Informação e Bases de Dados 2012/2013. Restrições de Integridade em SQL

LINGUAGEM SQL Linguagem usada em SGBD para: Definir estrutura de dados; Modificar dados em um banco de dados; Especificar restrições de segurança; Rea

UFG - Instituto de Informática

Programação SQL. Introdução

BANCO DE DADOS GERENCIAL 1 A U L A 2

Tabelas. Banco de Dados I MySQL

SQL. SQL (Structured Query Language) Comando CREATE TABLE. SQL é uma linguagem de consulta que possibilita:

Subsistema de Integridade Semântica

Introdução ao Modelo Relacional

Exemplos de Vistas SQL. Tipos em SQL. Linguagem de Definição de Dados (DDL) CREATE VIEW todososclientes As

Subsistema de Integridade Semântica

SQL: Definição de tabelas, Modificações à Base de Dados

A linguagem SQL

Aula 7 SBD ER para Relacional. Profa. Elaine Faria UFU

Aula de SQL Comandos DDL. André Luiz de Oliveira Eduardo Raul Hruschka

Técni n c i as e L i L n i g n u g age g ns n p ara r Ba B nc n o d e D ados I ACCESS

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)

INTRODUÇÃO AO MODELO RELACIONAL

Linguagem SQL (Parte II)

MC536. Modelo Relacional

15 - Introdução às Bases de Dados

Modelo Relacional 4 SISTEMAS DE INFORMAÇÃO E BASES DE DADOS UNIVERSIDADE DE LISBOA FACULDADE DE CIÊNCIAS DEPARTAMENTO DE INFORMÁTICA

SQL DDL. Frederico D. Bortoloti

Programação com acesso a BD. Prof.: Clayton Maciel Costa clayton.maciel@ifrn.edu.br

MODELAGEM DE DADOS -INTRODUÇÃO AO SQL. Prof. Angelo Augusto Frozza, M.Sc.

Material Teórico. Organização de Dados. Responsável pelo Conteúdo: Prof. Ms. Alexander Gobbato Albuquerque

Comandos DDL. id_modulo = id_m odulo

AULA 8. Ambientes Visuais 8.1. OBJETIVO DA AULA SQL (Structured Query Language)

LINGUAGEM SQL. SQL Server 2008 Comandos iniciais

MODELAGEM DE DADOS MODELO FÍSICO

Informática I. Aula 8. Aula 8-25/09/2006 1

Faculdade Pitágoras 16/08/2011. Curso Superior de Tecnologia: Banco de Dados Sistemas para Internet

Faculdade Pitágoras. Curso Superior de Tecnologia: Banco de Dados. Disciplina: Banco de Dados Prof.: Fernando Hadad Zaidan SQL

Princípio dos anos 70 IBM desenvolve a linguagem Sequel para o System R. Renomeada para SQL (Structured Query Language)


Comandos de Manipulação

Restrições do modelo relacional

Transcrição:

Aula 6 BD1 Modelo Relacional Profa. Elaine Faria UFU - 2017

Introdução Modelo Relacional Proposto por Codd em 1970 Revolucionou a área de banco de dados É o modelo dominante base para os SGBDs líderes de mercado DB2, Oracle, Sybase, Access, SQLServer e FoxBase Simples e elegante Embasado na teoria de conjuntos

Introdução Banco de Dados do Modelo Relacional É uma coleção de uma ou mais relações Cada relação é uma tabela com linhas (tupla, registro) e colunas (atributos, campos) Possibilita o uso de linguagens de alto nível para consultar os dados Vantagens do Modelo Relacional Representação de dados simples e facilidade para expressar consultas complexas

SQL Structured Query Language Linguagem mais usada para criar, manipular e consultar SGBD relacionais DDL - Data Definition Language Linguagem de definição de dados Linguagem padrão para criar, manipular e consultar dados em um SGBD relacional

Modelo Relacional Representação dos dados relação Uma relação consiste de Esquema da relação Descreve os cabeçalhos de colunas das tabelas Especifica o nome da relação, o nome de cada campo e o domínio de cada campo Domínio: descrito pelo nome de domínio e possui um conjunto de valores associados Instância da relação É uma tabela, conjunto de tuplas (registros, linha) Cada tupla tem o mesmo número de campos

Exemplo Esquema de uma relação Alunos (id_aluno: string, nome:string, login: string, idade: integer, média: real) Conjunto de valores associados ao domínio string: todas as strings de caracteres

Campos (ou atributos ou colunas) Exemplo Nome dos campos id_aluno nome login idade média 50000 João joao@ufu 19 3.3 53666 Maria maria@ufu 18 3.4 53688 Pedro pedro@comp 18 3.2 53650 Pedro pedro@mat 19 3.8 Tuplas (registros, linhas) 53831 Ana ana@feelt 11 1,8 53832 Tony tony@mec 12 2.0

Características das Tabelas Cada coluna tem um nome distinto Cada domínio possui valor atômico (indivisível) O valor null deve ser utilizado quando um atributo não possui valor ou seu valor não é conhecido Cada linha é distinta e representa uma tupla A ordem das colunas/linhas é irrelevante Uma n-tupla representa uma tupla que possui n valores (n é chamado de grau da relação)

Esquema de relação Domínio de um campo tipo do campo Formalmente R(f 1 : D1,... f n :Dn) esquema da relacão Para cada f 1: 1 i n, seja Dom i : o conjunto de valores associados ao domínio D i Cada tupla com n campos { <f 1 : d 1,..., f n :d n > d 1 Dom 1,..., d n Dom n } <> uma tupla {} conjunto de tuplas

Esquema de relação Nível (aridade, grau) de uma relação Número de campos (atributos) Cardinalidade de uma instância da relação Número de tuplas Banco de dados relacional Coleção de relações com nomes distintos Esquema do banco de dados relacional Coleção de esquemas para as relações no banco de dados Instância de um banco de dados relacional Coleção de instâncias das relações (uma por esquema)

Criando e modificando relações SQL usando SQL DDL (Data Definition Language) Subconjunto do SQL que permite a criação, eliminação e modificação de tabelas Criando uma tabela em SQL Usa a palavra table para denotar relação

Criando e modificando relações CREATE TABLE usando SQL Comando usado para definir uma nova tabela CREATE TABLE Alunos( id_aluno CHAR(20), nome CHAR(30), login CHAR(20), idade INTEGER, media REAL) INSERT Comando usada para inserir tuplas em uma tabela INSERT INTO Alunos(id_aluno,nome, login, idade, media) VALUES ( 53688, Smith, smith@ee, 18, 3.2) Obs.: é possível omitir a lista de nomes de colunas na cláusula INTO

Criando e modificando relações usando SQL DELETE Comando usado para eliminar tuplas DELETE FROM Alunos A WHERE A.nome = Smith UPDATE Modifica os valores de uma coluna em uma linha existente UPDATE Alunos A SET A.idade= A.idade + 1, A.media = A.media-1 WHERE A.id_aluno = 53688

Criando e modificando relações usando SQL Cláusula WHERE É a primeira a ser executada e determina quais linhas serão modificadas Cláusula SET Determina como as linhas serão modificadas UPDATE Alunos A SET A.média = A.média -0.1 WHERE A.média >=3.3

Tipos de Dados de Atributos em SQL Numéricos INTEGER FLOAT DOUBLE Cadeia de caracteres CHAR(n) VARCHAR(n) Booleano Data e tempo Date (data) Time (horário) Timestamp Date + time + 6 posições para frações decimais de segundos

Valor Default e restrição de domínio DEFAULT <valor> Usado para definir um valor default para um atributo, caso não seja fornecido nenhum valor explícito Se não for especificada essa cláusula, o valor default será null CHECK Usado para limitar os valores do atributo ou de seu domínio Ex: Numero INTEGER CHECK (Numero > 0 AND Numero < 21)

Restrições de Integridade sobre Relações Restrição de integridade Condição especificada no esquema do BD e restringe os dados que podem ser armazenados em uma instância do BD Se uma instância satisfaz todas as restrições de integridade instância válida Um SGB impõe restrições de integridade!

Restrições de Chave Declaração de que certo subconjunto mínimo dos campos de uma relação é um identificador único para uma tupla Ex: 2 alunos não podem ter a mesma identificação Conjunto de campos que identifica uma tupla de acordo com uma restrição de chave chave candidata Ex: id_aluno na relação Alunos

Restrições de Chave Na definição de chave Duas duplas distintas em uma instância não podem ter valores idênticos em todos os campos de uma chave Nenhum subconjunto do conjunto de campos em uma chave é um identificador único para uma tupla Ex: {id_aluno,nome} não é uma chave para Alunos, mas é uma superchave

Restrições de Chave Superchave Subconjunto de atributos de R que identifique univocamente cada tupla Combinação de valores não se repete para a superchave Ex: Aluno = {Nome, Idade, Curso, Id_aluno} SCH1(Aluno) = {Nome, Id_aluno, Idade} SCH2(Aluno) = {Id_aluno, Nome} Chave É uma superchave da qual não se pode retirar nenhum atributo e ainda preservar a propriedade de identificação unívoca

Restrições de Chave Chave Candidata Pode existir mais de uma chave para uma mesma relação Cada uma das chaves é chamada de Chave Candidata CH1(Aluno) = {CPF} CH2(Aluno) = {Id_aluno} Chave Primária Escolhida entre as chaves candidatas (não nula) É freqüentemente utilizada para acessos à relação CH(Aluno) = {Id_aluno}

Especificando Restrições de Chave em SQL Declaração de que um subconjunto das colunas de uma tabela constituem uma chave restrição UNIQUE Chave primária PRIMARY KEY CREATE TABLE Alunos( id_aluno CHAR(20), nome CHAR(30), login CHAR(20), idade INTEGER, cpf CHAR(11), media REAL, UNIQUE (cpf), PRIMARY KEY (id_aluno))

Restrições de Chave Estrangeira Informações armazenadas em uma relação estão ligadas a informações de outra relação Manutenção de dados consistentes RI mais comum envolvendo duas relações chave estrangeira

Restrições de Chave Estrangeira Matriculado(id_aluno: string, id_disc: string, nota: string) Garantir que apenas estudantes legítimos possam se matricular nas disciplinas Valores do campo id_aluno da relação Matriculado deve aparecer no campo id_aluno na relação Alunos O campo id_aluno de Matriculado é chamado Chave Estrangeira e se refere a Alunos

Restrições de Chave Estrangeira A chave estrangeira na relação de referência deve corresponder à chave primária (ou a um campo unique) da relação referenciada Mesmo nro de colunas e tipos de dados compatíveis Os nomes das colunas podem ser diferentes No exemplo matriculado Todo valor de id_aluno que aparece em Matriculado aparece na coluna de chave primária de Alunos Podem existir tuplas de Alunos que não sejam referenciadas a partir de Matriculado

Restrições de Chave Estrangeira Chave Estrangeira Chave Primária id_disc nota id_aluno Prog C 53831 Materiais B 53832 Calculo A 53650 Historia B 53666 id_aluno nome login idade media 50000 João joao@ufu 19 3.3 53666 Maria maria@ufu 18 3.4 53688 Pedro pedro@comp 18 3.2 53650 Pedro pedro@mat 19 3.8 53831 Ana ana@feelt 11 1,8 53832 Tony tony@mec 12 2.0

Restrições de Chave Estrangeira Uma chave estrangeira pode referenciar a mesma relação Ex: relação Alunos com uma coluna chamada parceiro Se o aluno não tiver um parceiro usa-se null A presença de null em um campo de chave estrangeira não viola a restrição de chave estrangeira

Restrições de Chave Estrangeira FOREIGN KEY (atributos) REFERENCES nome_relação (atributos) [ON UPDATE [NO ACTION CASCADE SET NULL SET DEFAULT]] [ON DELETE [NO ACTION CASCADE SET NULL SET DEFAULT]]

Especificando restrições de Chave Estrangeira em SQL CREATE TABLE Matriculado( id_aluno CHAR(20), id_disc CHAR(20), nota CHAR(10), PRIMARY KEY (id_aluno,id_disc), FOREIGN KEY (id_aluno) REFERENCES Alunos (id_aluno)) id_disc também pode ser uma chave estrangeira referenciando uma tabela disciplinas

Verificando Restrições de Integridade RIs São especificadas quando uma relação é criada e verificadas quando a mesma é modificada Se um comando causa uma violação, ele é rejeitado Toda violação é verificada no final da execução de cada instrução Exemplo INSERT INTO Alunos (id_aluno, nome, login, idade, media) VALUES (null, Mike, mike@ee, 17,3.4) Viola a restrição de chave primária: Valor null no campo chave

Exemplo Verificando Restrições de Integridade INSERT INTO Alunos (id_aluno, nome, login, idade, media) VALUES ( 53688, Mike, mike@ee, 17,3.4) Viola a restrição de chave primária: Já existe o aluno id_aluno 53688 UPDATE Alunos A SET A.id_aluno = 50000 WHERE A.id_aluno = 53688 Viola a restrição de chave primária: Já existe o aluno id_aluno 50000

Verificando Restrições de Integridade Verificação da integridade referencial Exemplo: tabelas Matriculado e Alunos com restrição de chave estrangeira id_aluno (Alunos) INSERT INTO Matriculado (id_disc, nota, id_aluno) VALUES ( Hindi101, B, 51111 ) Viola a integridade referencial: Não há uma tupla em Alunos com id_aluno 51111 Exclusões de tuplas de Matriculado não violam a integridade referencial

Verificando Restrições de Integridade Verificação da integridade referencial Inserções de tuplas em Alunos não violam a integridade referencial. Exclusões podem causar violações Atualizações em Matriculado ou em Alunos que alteram o valor id_aluno podem violar a integridade referencial

Verificando Restrições de Integridade Verificação da integridade referencial O que fazer se: Uma linha de Matriculado é inserida com um valor na coluna id_aluno que não aparece em nenhuma linha de Alunos O comando INSERT é rejeitado

Verificando Restrições de Integridade Verificação da integridade referencial O que fazer se: Uma linha de Alunos é excluída Excluir todas as linhas de Matriculado que referenciam a linha de Alunos excluída Proibir a exclusão da linha de Alunos, caso uma linha de Matriculado a referencie Configurar a coluna id_aluno com o valor de id_aluno de algum aluno padrão Configurar a coluna id_aluno como null Conflito: id_aluno faz parte da chave primária de Matriculado

Verificando Restrições de Integridade Verificação da integridade referencial O que fazer se o valor da chave primária de uma linha de Alunos for atualizada? Opções semelhantes ao caso da exclusão A SQL permite escolher qualquer uma dentre 4 opções citadas em DELETE E UPDATE

Verificando Restrições de Integridade CREATE TABLE Matriculado( id_aluno CHAR(20), id_disc CHAR(20), nota CHAR(10), PRIMARY KEY (id_aluno,id_disc), FOREIGN KEY (id_aluno) REFERENCES Alunos ON DELETE CASCADE ON UPDATE NO ACTION) A opção padrão é NO ACTION

Verificando Restrições de Integridade NO ACTION A ação deve ser rejeitada Pode ser omitida CASCADE Se uma linha de Alunos for excluída todas as linhas de Matriculado que se referem a ela também serão excluídas SET DEFAULT Se uma linha de Alunos for excluída troca-se a matrícula para um aluno padrão O aluno padrão é especificado como parte da definição do campo id_aluno em Matriculado id_aluno CHAR(20) DEFAULT 53666 SET NULL Permite o uso de null como padrão

Constraints: Create Table É importante definir as constraints associadas à tabela Check Not Null Unique Primary Key Foreign Key

Constraints: Create Table Check CREATE TABLE produto ( nro_produto integer, nome text, preco numeric CHECK (preco > 0) ); CREATE TABLE produto ( nro_produto integer, nome text, preco numeric CONSTRAINT p_preco CHECK (preco > 0) );

Constraints: Create Table Not-null CREATE TABLE produto ( nro_produto integer NOT NULL, nome text NOT NULL, preco numeric NOT NULL CHECK (preco > 0) );

Constraints: Create Table Unique CREATE TABLE produto ( nro_produto integer UNIQUE, nome text, preco numeric ); CREATE TABLE produto ( nro_produto integer, nome text, preco numeric, UNIQUE (nro_produto) );

Constraints: Create Table Unique CREATE TABLE produto ( nro_produto integer CONSTRAINT ser_differente UNIQUE, nome text, preco numeric );

Constraints: Create Table Primary Key CREATE TABLE produto ( nro_produto integer PRIMARY KEY, nome text, preco numeric ); CREATE TABLE example ( a integer, b integer, c integer, PRIMARY KEY (a, c) );

Constraints: Create Table Foreign Key CREATE TABLE produto ( nro_produto integer PRIMARY KEY, nome text, preco numeric ); CREATE TABLE pedido ( id_pedido integer PRIMARY KEY, nro_produto integer REFERENCES produto (nro_produto), quantidade integer );

Constraints: Create Table Foreign Key CREATE TABLE orders ( order_id integer PRIMARY KEY, product_no integer REFERENCES products, quantity integer ); na ausência de uma lista de colunas, a chave primária da tabela referenciada é usada como a coluna a ser referenciada

Constraints: Create Table Foreign Key CREATE TABLE t1 ( a integer PRIMARY KEY, b integer, c integer, FOREIGN KEY (b, c) REFERENCES other_table (c1, c2) ); também é possível associar um nome a foreign key

Apagando linhas DELETE remoção de tuplas de uma relação DELETE FROM Aluno WHERE nota = 0

Destruindo/Alterando Tabelas DROP TABLE Destruir uma tabela excluir todas as linhas e remover as informações de definição da tabela Ex: DROP TABLE Alunos CASCADE Destrói a tabela Alunos e todas as visões ou restrições de integridade associadas também serão eliminadas

Destruindo/Alterando Tabelas ALTER TABLE Modifica a estrutura de uma tabela Ex: ALTER TABLE Alunos ADD COLUMN nome-familia CHAR(10) A coluna nome-familia é adicionada à tabela Alunos e todas as linhas existentes são preenchidas com valores null para essa coluna

Destruindo/Alterando Tabelas ALTER TABLE Ex: ALTER TABLE Alunos DROP media elimina a coluna media existente Ex: ALTER TABLE Alunos ALTER média SET DEFAULT 0.0 Altera o valor default da coluna média para 0.0

Destruindo/Alterando Tabelas ALTER TABLE Ex: ALTER TABLE Alunos ALTER [COLUMN] média TO médiageral Altera o nome da coluna média para médiageral ALTER TABLE Ex: ALTER TABLE Alunos ALTER [COLUMN] média TYPE FLOAT Modifica o tipo de dado da coluna média

Referências R. Elmasri e S. B. Navathe, Sistema de Banco de Dados, 6ª edição, Pearson, 2011. R. Ramakrishnan e J. Gehrke, Database Management Systems, 3a Edição, McGraw-Hill, 2003.