Prévia do material em texto
Implementação de Banco de Dados Aula 1 Professor Daniel Silos - 3ª edição - 2014 dsilos@live.estacio.br Introdução ao Modelo Relacional • E.F. Codd ou Edgard Frank Codd • Quem foi? • Onde trabalhava? • Quando criou o modelo? Modelo Relacional Produtos de SGBD Baseados Modelo relacional de dados (Sistemas relacionais) Sistemas Relacionais • Literatura inglesa – DBMS + Relational = RDBMS (Relational Database Management System) • Modelo Relacional – Evento mais importante em toda história da área de Banco de Dados Modelo Relacional Baseia-se Lógica e Matemática O que é um sistema relacional ? • Definição Introdutória • De modo abreviado (e informal), um sistema relacional é aquele no qual: 1. Os dados são percebidos pelo usuário como tabelas (e nada além de tabelas) 2. Os operadores à disposição dos usuários (por exemplo para recuperação de dados) são operadores que “geram” novas tabelas a partir das tabelas originais. (DATE, 2000) Restrição e Projeção (DATE, 2000) • Operador restrição (ou seleção) – Extrai um subconjunto das linhas de uma determinada tabela • Operador Projeção – Extrai um subconjunto das colunas de uma determinada tabela Exemplos: • A tabela abaixo representa um arquivo simples de filmes. Tabela Filmes Restrição: SELECT TITULO, ANO, QTD FROM FILMES WHERE ANO > 2007; Resultado: Projeção: SELECT TITULO, QTD FROM FILMES Resultado: Campos R eg is tr o s TABELA: PRODUTOS TABELA: PRODUTOS Colunas Li n h as Atributos Tu p la s TABELA: PRODUTOS Busca: SELECT MODELO, COD_PRODUTO, QTD FROM PRODUTOS WHERE ANO_LANCAMENTO = 2012 RESULTADO: Seleção ou Projeção ? Porque “sistemas relacionais”? • Seria por causa do relacionamento presente no Modelo Entidade e Relacionamento? – Não! • A razão pelas quais tais sistemas são ditos “relacionais” é que o termo relação e tabela podem ser considerados sinônimos (propósitos informais) (DATE, 2000). • Dados são guardados em tabelas (ou, matematicamente falando, relações). Estrutura Relacional Estrutura básica: Formalmente, dado os conjuntos D1, D2, …. Dn uma relação r é um subconjunto de D1 x D2 x … x Dn Então, uma relação é um conjunto de n-tuplas (a1, a2, …, an) onde cada ai Di • Exemplos: Se – nome_cliente = {Jones, Smith, Curry, Lindsay, …} /* conjunto de todos os nomes de clientes */ – endereço_cliente = {Main, North, Park, …} /* conjunto de todos os endereços de clientes*/ – cidade_cliente = {Harrison, Rye, Pittsfield, …} /* conjunto de todas as cidades de clientes */ Então r = { (Jones, Main, Harrison), (Smith, North, Rye), (Curry, North, Rye), (Lindsay, Park, Pittsfield) } é uma relação sobre nome_cliente x endereço_cliente x cidade_cliente Tipos de Atributos: • Cada atributo de uma relação tem um nome • O conjunto de valores permitidos para cada atributo é chamado de domínio do atributo. • Valores de atributos são (normalmente) atômicos, isto é, indivisíveis – Exemplo: O valor de um atributo pode ser o número de uma conta, mas não pode ser um conjunto de números de contas. • Domínio é dito atômico se todos os seus membros são atômicos. • O valor especial null (nulo) é um membro de cada domínio. • Valores nulos causam complicações nas definições de muitos operadores. – Por hora ignore a existência e efeitos de valores nulos. Esquema de Relação • A1, A2, …, An são atributos • R = (A1, A2, …, An ) é um esquema de relação. Exemplo: esquema_cliente = (id_cliente, nome_cliente, endereço_cliente, cidade_cliente) • r(R) denota uma relação r sobre o esquema de relação R Exemplo: cliente (esquema_cliente) • Outros exemplos Instância de Relação • Consiste no conjunto de valores que cada atributo, definido no esquema, assume em um determinado instante, formando o conjunto de tuplas. • Ex: numero_conta nome_agencia saldo Relações não são ordenadas Ordem de tuplas é irrelevante (tuplas podem ser armazenadas em uma ordem arbitrária) Exemplo: relação de conta com tuplas não ordenadas. numero_conta nome_agencia saldo Base de Dados • Uma base de dados consiste de múltiplas relações • Informação sobre uma empresa é separada em partes, com cada relação armazenando uma parte da informação. –conta: armazena informações de contas – depositante: armazena informação sobre qual cliente é titular de qual conta – cliente: armazena informações de clientes Base de Dados • Armazenamento de todas as informações como uma relação singular tal como: banco(numero_conta, saldo, nome_cliente, ..) resulta em – Repetição de informação • Ex: Se dois clientes são correntistas de uma conta (O que é repetido?) – A necessidade de valores nulos • Ex: para representar um cliente sem uma conta. • Teoria de Normalização lida com como criar esquemas relacionais. • A Relação cliente nome_cliente endereco_cliente cidade_cliente • A Relação correntista nome_cliente numero_conta Chaves • Seja K R • K é uma superchave de R se valores para K são suficientes para identificar uma única tupla de cada possível relação r(R) – Por “possível r ” quer dizer uma relação r que pode não existir na empresa em que esteja sendo modelada. – Exemplo: {nome_cliente, endereco_cliente} e {nome_cliente} são ambas superchaves de cliente, se dois clientes não puderem ter o mesmo nome • Na vida real, um atributo tal como id_cliente poderia ser usado em vez de nome_cliente para representar clientes unicamente, mas identificadores serão omitidos temporariamente para tornar os exemplos menores. Chaves • K é uma chave candidata se K é mínima Exemplo: {nome_cliente} é uma candidata para clientes desde que ela seja uma superchave e que não seja parte de uma superchave como um subconjunto. • Chave Primária: uma chave candidata escolhida como principal meio de identificação de tuplas dentro de uma relação. – Deve-se escolher um atributo cujo valor nunca, ou muito raramente, muda. – Ex: conta de e-mail é única, mas pode mudar com relativa frequência. Chaves Estrangeiras • Um esquema de relação pode ter um atributo que corresponda a uma chave primária de uma outra relação. O atributo é chamado de chave estrangeira. – Ex: nome_cliente e numero_conta , atributos de depositante são chaves estrangeiras para clientes e conta respectivamente. – Somente valores que ocorrem no atributo de chave primária da relação referenciada podem ocorrer no atributo de chave estrangeira da relação referenciando . http://www.oracle.com/technetwork/products/express-edition/downloads/index.html Download do Oracle 11g Express Baixar: • Oracle Database Express Edition 11g release 2 for Windows x32; • Oracle SQL Developer – Este último basta descompacta. Sugiro jogar na mesma pasta onde o Oracle foi instalado. Aconselho também a criar um atalho para o SQL Developer no Desktop. Passos para poder criar ou utilizar um banco de dados. 1) Após instalar o Oracle e o SQL Developer, execute o Run SQL Command Line ou Executar Linhas de Comando SQL. No Oracle, um esquemade banco de dados é associado a um usuário. Para criar um usuário, portanto, siga os seguintes passos: 2) Digite na janela de comando após o cursor SQL> e em seguida pressione ENTER: conn <ENTER> O programa solicitará o nome do usuário que por padrão no Oracle 11g é ‘system’ Digite, portanto, system e pressione ENTER em seguida. 3) Em seguida é solicitada uma senha. Esta senha foi criada no momento da instalação do Oracle Express 11g. Entre com a senha correta, pressione ENTER e a mensagem “conectado.” será exibida. 4) Agora, novamente com o cursor SQL> ativo, crie um usuário (escolha o nome do esquema da relação, isto é, do banco de dados). Como primeiro exemplo, crie um esquema chamado empresa. Digite o comando, incluindo ponto e vírgula ao final e pressione ENTER em seguida: CREATE USER empresa IDENTIFIED BY estacio; OBS: estacio será a senha do usuário empresa 5) Em seguida, para que este usuário possa se conectar ao banco, criar tabelas e fazer consultas, é necessário que ele tenha alguns privilégios. Para fornecer tais privilégios, digite o comando abaixo e pressione ENTER em seguida: GRANT CONNECT, RESOURCE TO empresa; Agora o usuário empresa estará apto a se conectar ao SGBD Oracle e a criar e consultar um banco de dados. Para tal, inicie o Oracle SQL Developer: Tela do Oracle SQL Developer Dica: Para visualizar número de linhas na edição de comandos de SQL, execute os seguintes passos: Clique na opção de menu Ferramentas e em seguida na opção Preferências. A seguinte janela surgirá: Abra as opções do Editor de Códigos à esquerda e em seguida clique em Fluxo de linha. Marque à direita na primeira opção de cima a check box ao lado esquerdo do texto Mostrar Números de Linha. Para criar agora uma conexão, na janela principal, na aba Conexões clique no ícone em sinal de uma cruz verde. Em seguida informe o nome da conexão, o nome do usuário e a senha. Com o propósito de criarmos um padrão que facilite a compreensão, utilizaremos um prefixo Con + Nome_do_usuário. Portanto, neste primeiro exemplo, o nome da conexão será ConEmpresa, o usuário empresa e a senha estacio. A opção Salvar senha pode ser marcada para que não seja necessário digitar a senha todas as vezes que for se conectar ao banco. Para finalizar a criação da conexão, clique no botão Conectar. Copie para o seu computador o arquivo empresa.sql e em seguida, abra-o pelo Oracle Developer SQL, clicando no botão abrir e em seguida acessando o caminho do arquivo. Existem duas maneiras de se executar instruções no Oracle SQL Developer. Veja a tabela abaixo: Função Efeito Ícone Atalho Executar Instrução Executa apenas a instrução sobre a qual o cursor se encontra. CTRL + ENTER Executar Script Executa todas as instruções presentes no script. F5 Vamos agora juntos tentar responder às perguntas presentes ao final do arquivo empresa.sql na forma de comentários. • Como acessar o material desta disciplina no SIA? • Após logar-se no SIA, acesse a opção Sala de Aulas Virtuais e em seguida clique em Minhas Disciplinas Presenciais • Você acessará o portal do aluno e em seguida deverá clicar em disciplinas. • Acesse a disciplina desejada (neste caso, como exemplo, a disciplina é Linguagem de Programação) e clique no ícone de seta dupla direcionada para baixo para expandir algumas opções. Em seguida acesse o ícone Biblioteca da disciplina. • O material disponibilizado pelo professor até o momento do acesso surgirá(no exemplo abaixo não há material, mas é por meio destes passos que você obtém acesso a ele). • Bibliografia – DATE, C. J. Introdução a sistemas de banco de dados. 7ª ed. Rio de Janeiro: Campus, 2000. – HEUSER, C. Projeto de Banco de Dados. Porto Alegre: Sagra Luzzato, 1998 (Série de Livros Didáticos, número 4). – SILBERSCHATZ, Abraham; KORTH, Henry F; SUDARSHAN, S. A. Sistema de banco de dados. 5ª ed. Rio de Janeiro: Campus, 2006 – ELMASRI, R.; NAVATHE, S., Sistemas de Banco de Dados. Pearson Education do Brasil, 4ª.Ed 2005. – Manual do Oracle.