IBD Aulas

Fazer download em pdf ou txt
Fazer download em pdf ou txt
Você está na página 1de 133

Introdução a Banco de Dados

Professora Ayllah Ahmad Lopes

Centro Educacional Stella Dos Cherubins Guimarães Trois

17 de fevereiro de 2024
Sistema de Gerenciamento de Banco de Dados

Banco de Dados

Um banco de dados é uma coleção de dados relacionados. Sendo que os dados são fatos
conhecidos que podem ser registrados e possuem significado implı́cito. Por exemplo, consi-
dere os nomes, números de telefone e endereços das pessoas que você conhece. Você pode
ter registrado esses dados em uma agenda ou, talvez, os tenha armazenado em um disco
rı́gido, usando um computador pessoal e um software como Microsoft Access ou Excel. Essa
coleção de dados relacionados, com um significado implı́cito, é um banco de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (2/132)
Sistema de Gerenciamento de Banco de Dados

Banco de Dados

Porém, o uso comum do termo banco de dados normalmente é mais restrito e tem as seguintes
propriedades implı́citas:
• Um banco de dados representa algum aspecto do mundo real, às vezes chamado de
minimundo ou de universo de discurso (UoD — Universe of Discourse). As mudanças
no minimundo são refletidas no banco de dados.
• Um banco de dados é uma coleção logicamente coerente de dados com algum significado
inerente. Uma variedade aleatória de dados não pode ser corretamente chamada de
banco de dados.
• Um banco de dados é projetado, construı́do e populado com dados para uma finalidade
especı́fica. Ele possui um grupo definido de usuários e algumas aplicações previamente
concebidas nas quais esses usuários estão interessados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (3/132)
Sistema de Gerenciamento de Banco de Dados

Banco de Dados

Em outras palavras, um banco de dados tem alguma fonte da qual o dado é derivado, algum
grau de interação com eventos no mundo real e um público que está ativamente interessado
em seu conteúdo. Os usuários finais de um banco de dados podem realizar transações
comerciais (por exemplo, um cliente compra uma câmera) ou eventos podem acontecer (por
exemplo, uma funcionária tem um filho), fazendo que a informação no banco de dados mude.
Para que um banco de dados seja preciso e confiável o tempo todo, ele precisa ser um reflexo
verdadeiro do minimundo que representa; portanto, as mudanças precisam ser refletidas no
banco de dados o mais breve possı́vel.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (4/132)
Sistema de Gerenciamento de Banco de Dados

Sistema Gerenciador de Banco de Dados - SGBD

Um sistema gerenciador de banco de dados (SGBD — Database Management System) é


uma coleção de programas que permite aos usuários criar e manter um banco de dados. O
SGBD é um sistema de software de uso geral que facilita o processo de definição, construção,
manipulação e compartilhamento de bancos de dados entre diversos usuários e aplicações.
Definir um banco de dados envolve especificar os tipos, estruturas e restrições dos dados
a serem armazenados. A definição ou informação descritiva do banco de dados também é
armazenada pelo SGBD na forma de um catálogo ou dicionário, chamado de metadados. A
construção do banco de dados é o processo de armazenar os dados em algum meio controlado
pelo SGBD. A manipulação de um banco de dados inclui funções como consulta ao banco de
dados para recuperar dados especı́ficos, atualização do banco de dados para refletir mudanças
no minimundo e geração de relatórios com base nos dados. O compartilhamento de um banco
de dados permite que diversos usuários e programas acessem-no simultaneamente.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (5/132)
Sistema de Gerenciamento de Banco de Dados

Sistema Gerenciador de Banco de Dados - SGBD

Um programa de aplicação acessa o banco de dados ao enviar consultas ou solicitações de


dados ao SGBD. Uma consulta normalmente resulta na recuperação de alguns dados; uma
transação pode fazer que alguns dados sejam lidos e outros, gravados no banco de dados.

Outras funções importantes fornecidas pelo SGBD incluem proteção do banco de dados e sua
manutenção por um longo perı́odo. A proteção inclui proteção do sistema contra defeitos
(ou falhas) de hardware ou software e proteção de segurança contra acesso não autorizado
ou malicioso. Um banco de dados grande pode ter um ciclo de vida de muitos anos, de modo
que o SGBD precisa ser capaz de manter o sistema, permitindo que ele evolua à medida que
os requisitos mudam com o tempo.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (6/132)
Sistema de Gerenciamento de Banco de Dados

Sistema Gerenciador de Banco de Dados - SGBD

Não é absolutamente necessário utilizar software de SGBD de uso geral para implementar um
banco de dados computadorizado. Poderı́amos escrever nosso próprio conjunto de programas
para criar e manter o banco de dados, com efeito criando nosso próprio software de SGBD
de uso especial. Em ambos os casos — se usarmos um SGBD de uso geral ou não —, em
geral temos de implementar uma quantidade considerável de software complexo. De fato, a
maioria dos SGBDs é constituı́da de sistemas de software muito complexos.

A união do banco de dados com o software de SGBD é chamada sistema de banco de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (7/132)
Sistema de Gerenciamento de Banco de Dados

Banco de Dados

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (8/132)
Banco de Dados

Sistema de banco de dados versus sistema de arquivos


(Vantagens e Desvantagens)

Antes dos Sistemas Gerenciadores de Banco de Dados (SGBD) as aplicações utilizavam sis-
temas de arquivos do Sistema Operacional. Através de arquivos, as aplicações armazenavam
seus dados através das interações com a aplicação. Sendo armazenados em diversos arqui-
vos, precisando de diferentes programas de aplicações para extrair e acrescentar registros,
elevando de formas os custos destas aplicações. Cada um vê o banco de dados ao seu modo;
Representam a abstração de mais alto nı́vel da arquitetura; Construı́dos de forma que sejam
removidos os conflitos entre duas ou mais visões.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (9/132)
Banco de Dados

Sistema de banco de dados versus sistema de arquivos


(Vantagens e Desvantagens)

Sistema de Banco de Dados


Vantagens:
• Os Dados podem ser compartilhados;
• As redundâncias podem ser reduzidas;
• Inconsistência pode ser vista até certo ponto;
• Suporte a transação pode ser fornecido;
• Segurança reforçada;
• Integridade pode ser mantida;
• Programadores e usuários. Padrões podem ser reforçados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (10/132)
Banco de Dados

Sistema de banco de dados versus sistema de arquivos


(Vantagens e Desvantagens)

Sistema de Banco de Dados


Desvantagens:
• Os sistemas de banco de dados são complexos, difı́ceis e demorados para projetar;
• Elevados custos inicias de hardware e software;
• Danos ao banco de dados afetam virtualmente a todos os programas;
• Elevados custos para a conversão de sistema baseado em arquivos para banco de dados;
• Treinamento inicial necessário aos Requisitos contraditórios pode ser equilibrado;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (11/132)
Banco de Dados

Sistema de banco de dados versus sistema de arquivos


(Vantagens e Desvantagens)

Sistema de Arquivo
Vantagens:
• É padrão aberto, não sendo preciso pagar por nenhum software;
• Existem várias ferramentas e editores bons no mercado;
• Simplicidade tanto para usuário como para computadores;
• Separação do conteúdo para a formatação;
• Possibilidade de criar sua própria sintaxe de dados;
• Permite validação, o que torna os testes mais efetivos, e a construção de aplicações bem
mais fáceis.
• Possui suporte a Unicode;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (12/132)
Banco de Dados

Sistema de banco de dados versus sistema de arquivos


(Vantagens e Desvantagens)

Sistema de Arquivo
Desvantagens:
• Problemas de integridades;
• A redundância pode afetar a eficiência para armazenamento, afetando a transmissão e
o processamento, elevando os custos;
• Dificuldade no acesso aos dados;
• Redundância e inconsistência dos dados;
• Isolamento dos dados;
• Problemas de segurança.
• Anomalia de acesso concorrente;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (13/132)
Sistema de Gerenciamento de Banco de Dados

Sistema Gerenciador de Banco de Dados Relacional -


SGBDR
Sistema Gerenciador de Banco de Dados Relacional (como o SQL Server), trata-se de um
sistema de gerenciamento de bancos de dados baseado no modelo relacional introduzido por
E. F. Codd.
Um banco de dados relacional é composto, de forma simplificada, pelos seguintes elementos:
• Tabelas: Objetos onde são armazenados os dados em um banco de dados relacional.
Uma tabela é uma coleção de entradas de dados relacionados e consiste em linhas e
colunas.
• Campos (Colunas / Atributos): São entidades que representam os atributos dos
dados, como Nome, Data de Nascimento, Salário, Preço, etc. Um campo é uma coluna
em uma tabela que mantém informações especı́ficas sobre cada registro.
• Registros (Linhas / Tuplas): Cada entrada individual em uma tabela. Trata-se de
um conjunto de campos relacionados que caracterizam os dados de uma entidade única.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (14/132)
Banco de Dados

Principais tipos de Banco de Dados

Existem dois tipos de banco de dados que são utilizados atualmente.


• Banco de dados relacional: Os dados são armazenados em tabelas com linhas e
colunas especı́ficas que definem os dados.
• Banco de dados não relacional : Segue uma linguagem NoSQL, dessa forma os
campos não são limitados igual ao SQL. Os dados são alocados em pastas, fator que
possibilita a definição de um esquema personalizado, além de permitir a adição de novas
propriedades sem que impacte as outras informações armazenadas.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (15/132)
Sistema de Gerenciamento de Banco de Dados

Principais tipos de Banco de Dados

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (16/132)
Banco de Dados

Modelos de banco dados


Os modelos de banco são usados para descrever, mais detalhadamente, a estrutura de um
banco de dados. Os modelos também são baseados em três nı́veis: conceitual, lógico e fı́sico.
Modelo Conceitual: É o o modelo de mais alto nı́vel, ou seja, que esta mais próximo da
realidade dos usuários. O nı́vel conceitual é desenvolvido com alto nı́vel de abstração, a partir
dos requisitos do sistema, extraı́dos na fase de levantamento de requisitos. Esse modelo pode
ser elaborado por meio de dois diagramas: Diagrama de Entidade e Relacionamento e/ou o
Diagrama de Classes.
Modelo Lógico: Descreve como os dados serão armazenados no banco e também seus
relacionamentos. Esse modelo adota alguma tecnologia, pode ser: relacional, orientado a
objetos, orientado a colunas, entre outros.
Modelo de Implementação (ou Fı́sico): Descreve, por meio de alguma linguagem,
como será feita a armazenagem no banco. Nesse nı́vel se escolhe qual Sistema gerenciador
de Banco de dados (SGBD) será usado, levando em consideração o modelo lógico adotado.
Pode ser: PostgreSQL, MySQL, dentre outros.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (17/132)
Banco de Dados

Administrador de Banco de Dados (DBA)

O Administrador de Banco de Dados (DBA) é o profissional responsável pela instalação, ad-


ministração e suporte dos SGBDs, sempre assegurando segurança, disponibilidade e eficiência
à base de dados. Para que todas essas tarefas sejam corretamente cumpridas, se faz
necessário um ótimo conhecimento da arquitetura da base de dados, experiência e uma
formação sólida.

O DBA precisa manter um banco de dados corporativo “no ar” por todo o tempo que o
sistema necessita, sem erros, com rapidez e confiabilidade. Ele precisa conhecer o banco e
suas peculiaridades, pois ele é o responsável pela criação, manutenção e segurança do banco
de dados da empresa. Isto inclui instalar o SGBD e o ajuste da infra-estrutura para permitir
que as aplicações alcancem as bases de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (18/132)
Banco de Dados

Administrador de Banco de Dados (DBA)


Tarefas do DBA:
• Projeto e criação do banco de dados;
• Ajuste e monitoramento de desempenho;
• Backup e Recuperação;
• Segurança do banco de dados;
• Integridade de dados;
• Suporte
• Migração e atualização do SGBD;
Mesmo não sendo diretamente um dos deveres do DBA, a infra-estrutura e as modelagens
lógica e fı́sica do banco de dados, às vezes, acabam fazendo parte do trabalho. Estas funções
são tradicionalmente de responsabilidade do administrador de sistema (AS) e administrador
de dados (AD) ou projetista.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (19/132)
Banco de Dados

Usuários de Banco de Dados


Usuários Finais:
Existem basicamente quatro categorias de usuários de Banco de Dados, que fazem operações
mais básicas nos SGBD, tais como consultas, atualizações e geração de documentos:
• Usuários Casuais: acessam o Banco de Dados casualmente, mas que podem necessitar
de diferentes informações a cada acesso. Utilizam normalmente sofisticadas linguagens
de consulta para especificar suas necessidades;
• Usuários Novatos ou Paramétricos: utilizam visões do Banco de Dados, utilizando
consultas preestabelecidas que já foram exaustivamente testadas. São também cha-
mados de usuários navegantes, ou seja, usuários comuns que interagem com o sistema
através de interfaces pré-definidas;
• Usuários Sofisticados: são usuários que estão familiarizados com o SGBD e realizam
consultas mais complexas;
• Usuários Especialistas: usuários sofisticados que chegam a escrever aplicações espe-
cializadas.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (20/132)
Banco de Dados

Integridade

O termo integridade é utilizado em banco de dados com o seguinte significado: precisão,


correção, validade. O grande problema da integridade é o de assegurar que os dados no
banco de dados se mantenham precisos, corretos, validos. Ou seja, o de preservar o banco
de dados contra atualizações/inserções não válidas (controle de acesso).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (21/132)
Banco de Dados

Redundância

Redundância de dados é uma condição criada em um banco de dados ou tecnologia de arma-


zenamento de dados em que a mesma parte dos dados é mantida em dois locais separados.

Isso pode significar dois campos diferentes em um único banco de dados ou dois pontos dife-
rentes em vários ambientes ou plataformas de software. Sempre que os dados são repetidos,
basicamente constitui redundância de dados.

A redundância de dados pode ocorrer por acidente, mas também é feita deliberadamente
para fins de backup e recuperação.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (22/132)
Banco de Dados

Inconsistência

A inconsistência trata-se de informações imprecisas, de elementos que não batem uns com
os outros. Quando os mesmos dados existem em formatos diferentes em várias tabelas.
Significa que arquivos diferentes contêm informações diferentes sobre um determinado objeto
ou pessoa. Isso pode causar informações não confiáveis e sem sentido. A redundância de
dados leva à inconsistência de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (23/132)
Sistema de Gerenciamento de Banco de Dados

O MySQL

As principais caracterı́sticas do MySQL são:


• O servidor de banco de dados MySQL é extremamente rápido, confiável, e fácil de usar.
O Servidor MySQL também tem um conjunto de recursos muito práticos desenvolvidos
com a cooperação dos próprios usuários.
• O Servidor MySQL foi desenvolvido originalmente para lidar com bancos de dados muito
grandes de maneira muito mais rápida que as soluções existentes, e tem sido usado em
ambientes de produção de alta demanda por vários anos de maneira bem sucedida.
• MySQL é um Sistema de Gerenciamento de Bancos de Dados relacional.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (24/132)
Sistema de Gerenciamento de Banco de Dados

Banco de Dados relacional

Um banco de dados relacional armazena dados em tabelas separadas em vez de colocar todos
os dados em um só local. Isso proporciona velocidade e flexibilidade. SQL é a linguagem
padrão mais comum usada para acessar bancos de dados e é definida pelo Padrão ANSI/ISO
SQL. (O padrão SQL vem evoluindo desde 1986 e existem diversas versões disponibilizadas).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (25/132)
Sistema de Gerenciamento de Banco de Dados

O MySQL

As principais caracterı́sticas do MySQL são (continuação):


• MySQL é um software cujo código fonte é aberto.

Código fonte aberto significa dizer que é possı́vel para qualquer um usar e modificar o
programa. Qualquer pessoa pode fazer download do MySQL pela Internet e usá-lo sem
pagar nada (o MySQL só é cobrado em alguns poucos casos). Se você quiser pode estudar
o código fonte e alterá-lo para adequá-lo às suas necessidades. O MySQL usa a GPL (GNU
General Public License - Licenca Pública Geral GNU) http://www.fsf.org/licenses, para
definir o que você pode e não pode fazer com o software em diferentes situações. Se voce
sentir desconforto com a GPL ou precisar embutir o MySQL em uma aplicação comercial
você pode adquirir a versão comercial licenciada.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (26/132)
Sistema de Gerenciamento de Banco de Dados

O MySQL

As principais caracterı́sticas do MySQL são (continuação):


• O MySQL suporta diferentes plataformas, tais como: Windows, Linux, FreeBSD, Unix,
entre outros.
• O MySQL possuı́ suporte a múltiplos processadores.

O Programa de Banco de Dados MySQL é um sistema cliente/servidor que consiste de


um servidor SQL multi-tarefa que suporta acessos diferentes, diversos programas clientes e
bibliotecas, ferramentas administrativas e diversas interfaces de programação (API’s).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (27/132)
Banco de Dados

SQL - Structured Query Language

Para se utilizar, administrar, e trabalhar com um banco de dados é utilizada uma linguagem
padrão, que a maior parte dos SGBD aceitam. Essa linguagem é a SQL (Structured Query
Language - Linguagem de Consulta Estruturada).

A SQL é um conjunto de declarações que são utilizadas para acessar os dados utilizando
gerenciadores de banco de dados. Apesar de nem todos os gerenciadores utilizarem a SQL
a maior parte deles aceitam suas declarações.

A SQL pode ser utilizada para todas as atividades relativas a um banco de dados, podendo
ser utilizada pelo administrador de sistemas, pelo DBA, por programadores, sistemas de
suporte à tomada de decisões e outros usuários finais.

É através dela que você irá criar tabelas, inserir dados, e utilizar o seu banco de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (28/132)
Banco de Dados

Tipos de dados de atributo e domı́nios em SQL

Os tipos de dados básicos disponı́veis para atributos são numérico, cadeia ou sequência
de caracteres, cadeia ou sequência de bits, booleano, data e hora.

• Os tipos de dados numerico incluem números inteiros de vários tamanhos (INTEGER


ou INT e SMALLINT) e números de ponto flutuante (reais) de várias precisões (FLOAT
ou REAL e DOUBLE PRECISION). O formato dos números pode ser declarado usando
DECIMAL(i, j) — ou DEC(i, j) ou NUMERIC(i, j) — onde i, a precisão, é o número
total de dı́gitos decimais e j, a escala, é o número de dı́gitos após o ponto decimal. O
valor padrão para a escala é zero, e para a precisão, é definido pela implementação.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (29/132)
Banco de Dados

Tipos de dados de atributo e domı́nios em SQL

• Tipos de dados de cadeia de caracteres são de tamanho fixo — CHAR(n) ou CHARAC-


TER(n), onde n é o número de caracteres — ou de tamanho variável — VARCHAR(n)
ou CHAR VARYING(n) ou CHARACTER VARYING(n), onde n é o número máximo
de caracteres. Outro tipo de dado de cadeia de caracteres de tamanho variável, chamado
CHARACTER LARGE OBJECT ou CLOB, também está disponı́vel para especificar
colunas que possuem grandes valores de texto, como documentos. O tamanho máximo
de CLOB pode ser especificado em kilobytes (K), megabytes (M) ou gigabytes (G). Por
exemplo, CLOB(20M) especifica um tamanho máximo de 20 megabytes.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (30/132)
Banco de Dados

Tipos de dados de atributo e domı́nios em SQL

• Tipos de dados de cadeia de bits podem ser de tamanho fixo n — BIT(n) — ou de


tamanho variável — BIT VARYING(n), onde n é o número máximo de bits. O valor
padrão para n, o tamanho de uma cadeia de caracteres ou cadeia de bits, é 1. Os literais
de cadeia de bits literais são colocados entre apóstrofos, mas precedidos por um B para
distingui-los das cadeias de caracteres; por exemplo, B‘10101’. Outro tipo de dados de
cadeia de bits de tamanho variável, chamado BINARY LARGE OBJECT ou BLOB,
também está disponı́vel para especificar colunas que possuem grandes valores binários,
como imagens. Assim como para CLOB, o tamanho máximo de um BLOB pode ser
especificado em kilobits (K), megabits (M) ou gigabits (G). Por exemplo, BLOB(30G)
especifica um tamanho máximo de 30 gigabits.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (31/132)
Banco de Dados

Tipos de dados de atributo e domı́nios em SQL

• Um tipo de dado booleano tem os valores tradicionais TRUE (verdadeiro) ou FALSE


(falso). Em SQL, devido à presença de valores NULL (nulos), uma lógica de três valores
é utilizada, de modo que um terceiro valor possı́vel para um tipo de dado booleano é
UNKNOWN (indefinido).
• O tipo de dados DATE possui dez posições, e seus componentes são DAY (dia), MONTH
(mês) e YEAR (ano) na forma DD-MM-YYYY. O tipo de dado TIME (tempo) tem
pelo menos oito posições, com os componentes HOUR (hora), MINUTE (minuto) e
SECOND (segundo) na forma HH:MM:SS.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (32/132)
Banco de Dados

Tipos de dados de atributo e domı́nios em SQL

• Um tipo de dado timestamp (TIMESTAMP) inclui os campos DATE e TIME, mais um


mı́nimo de seis posições para frações decimais de segundos e um qualificador opcional
WITH TIME ZONE. Valores literais são representados por cadeias entre apóstrofos
precedidos pela palavra-chave TIMESTAMP, com um espaço em branco entre data e
hora; por exemplo, TIMESTAMP ‘27-09-2008 09:12:47.648302’.
• Outro tipo de dado relacionado a DATE, TIME e TIMESTAMP é o INTERVAL. Este
especifica um intervalo — um valor relativo que pode ser usado para incrementar ou
decrementar um valor absoluto de uma data, hora ou timestamp. Os intervalos são
qualificados para serem de YEAR/MONTH ou de DAY/TIME.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (33/132)
Banco de Dados

Especificando restrições de atributo e defaults de


atributo
Como a SQL permite NULLs como valores de atributo, uma restrição NOT NULL pode ser
especificada se o valor NULL não for permitido para determinado atributo. Isso sempre é
especificado de maneira implı́cita para os atributos que fazem parte da chave primária de
cada relação, mas pode ser especificado para quaisquer outros atributos cujos valores não
podem ser NULL.
Também é possı́vel definir um valor padrão para um atributo anexando a cláusula DEFAULT
valor a uma definição de atributo. O valor padrão está incluı́do em qualquer nova tupla se
um valor explı́cito não for fornecido para esse atributo. Se nenhuma cláusula default for
especificada, o valor padrão será NULL para atributos que não possuem a restrição NOT
NULL.
Outro tipo de restrição pode limitar valores de atributo ou domı́nio usando a cláusula
CHECK (verificação) após uma definição de atributo ou domı́nio.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (34/132)
Banco de Dados

Especificando restrições de chave e integridade


referencial

A cláusula PRIMARY KEY especifica um ou mais atributos que compõem a chave primária
de uma relação. Se uma chave primária tiver um único atributo, a cláusula pode acompanhar
o atributo diretamente.
Exemplo: Dnumero INT PRIMARY KEY;

A cláusula UNIQUE especifica chaves alternativas (secundárias), A cláusula UNIQUE também


pode ser especificada diretamente para uma chave secundária se esta for um único atributo.

A integridade referencial é especificada por meio da cláusula FOREIGN KEY (chave estran-
geira)

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (35/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

A SQL possui comandos que são utilizados para manipular os bancos de dados, as tabelas
e os registros existentes.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (36/132)
Banco de Dados

Diferentes tipos: Categorias de instruções


(Transact-SQL)

• Data Manipulation Language (DML)


• Data Definition Language (DDL)
• Data Control Language (DCL)
• Transactional Control Language (TCL)

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (37/132)
Banco de Dados

DML (Linguagem de Manipulação de Dados)

É um conjunto de instruções usada nas consultas e modificações dos dados armazenados nas
tabelas do banco de dados.
Alguns exemplos:
SELECT - Recupera linhas do banco de dados e permite a seleção de uma ou várias linhas
ou colunas de uma ou várias tabelas
INSERT - Instrução utilizada para inserir dados a uma ou mais tabelas no banco de dados
UPDATE - Instrução utilizada para atualizar dados de uma ou mais tabelas no banco de
dados
DELETE - Instrução utilizada para excluir dados de uma ou mais tabelas no banco de dados
MERGE - Realiza operações de inserção, atualização ou exclusão em uma tabela de destino
com base nos resultados da junção com a tabela de origem
BULK INSET - Importa um arquivo de dados em uma tabela ou exibição do banco de dados
em um formato especificado pelo usuário

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (38/132)
Banco de Dados

DDL (Linguagem de Definição de Dados)


É um conjunto de instruções usado para criar e modificar as estruturas dos objetos armaze-
nados no banco de dados.
Alguns exemplos:
ALTER - Use as instruções ALTER para modificar a definição de entidades existentes. Use
ALTER TABLE para adicionar uma nova coluna a uma tabela ou use ALTER DATABASE
para definir opções do banco de dados.
CREATE - Use instruções CREATE para definir novas entidades. Use CREATE TABLE
para adicionar uma nova tabela em um banco de dados.
DROP - Use instruções DROP para remover entidades existentes. Use DROP TABLE para
remover uma tabela de um banco de dados.
DISABLE TRIGGER - Desabilita uma Trigger DML, DDL ou de logon.
ENABLE TRIGGER - Habilita uma Trigger DML, DDL ou de logon.
TRUNCATE TABLE - Remove todas as linhas de uma tabela sem registrar as exclusões de
linhas individuais.
UPDATE STATISTICS - Atualiza estatı́sticas de otimização de consulta de uma tabela ou
view indexada.
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (39/132)
Banco de Dados

DCL (Linguagem de Controle de Dados)

São usados para controle de acesso e gerenciamento de permissões para usuários em no


banco de dados. Com eles, pode facilmente permitir ou negar algumas ações para usuários
nas tabelas ou registros (segurança de nı́vel de linha).
Alguns exemplos:
GRANT - Atribui privilégios de acesso do usuário a objetos do banco de dados.
REVOKE - Remove os privilégios de acesso aos objetos obtidos com o comando GRANT.
DENY - O comando é usado para impedir explicitamente que um usuário receba uma per-
missão especı́fica.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (40/132)
Banco de Dados

TCL (Linguagem de Controle de Transações)

São usados para gerenciar as mudanças feitas por instruções DML . Ele permite que as
declarações a serem agrupadas em transações lógicas.
Alguns exemplos:
COMMIT - É usado para salvar permanentemente qualquer transação no banco de dados.
ROLLBACK - Este comando restaura o banco de dados para o último estado commited.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (41/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

COMANDO CREATE: Este comando permite a criação de bancos de dados ou de tabelas


num banco de dados.

Sintaxe:
CREATE DATABASE nome db ;
onde:
nome db: indica o nome do Banco de Dados a ser criado.

Exemplo: CREATE DATABASE curso;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (42/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

Sintaxe:
CREATE TABLE nome tabela (
nome atributo1 tipo [ NOT NULL ],
nome atributo2 tipo [ NOT NULL ],
......
nome atributoN tipo [ NOT NULL ]
PRIMARY KEY(nome atributo)
);
onde:
nome tabela: indica o nome da tabela a ser criada.
nome atributo: indica o nome do campo a ser criado na tabela.
tipo: indica a definição do tipo de atributo ( integer(n), char(n), ... ).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (43/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

PRIMARY KEY: esse é o campo utilizado para que não exista na tabela dois registros
iguais. Ele mantém a integridade do banco de dados. Caso você tente inserir num banco
de dados um registro com uma PRIMARY KEY já existente ele emitirá uma mensagem de
erro e impedirá que o registro seja inserido.

Exemplo:
CREATE table alunos(
codigo int NOT NULL AUTO INCREMENT,
nome VARCHAR(20) NOT NULL ,
telefone CHAR(8) NOT NULL,
PRIMARY KEY(codigo)
);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (44/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL


Exercı́cio: Escreva em SQL os comandos necessários para a criação de uma tabela em
um banco de dados à partir da tabela dada (o asterı́sco determina qual campo é a chave
primária):

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (45/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

Resposta:
CREATE TABLE estudantes(
numerocadastro int NOT NULL auto increment,
nome varchar(35) not null,
turma int,
primary key(numerocadastro)
);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (46/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

COMANDO DROP: Este comando elimina a definição da tabela, seus dados e referências
ou um banco de dados existente.

Sintaxe:
DROP TABLE nome tabela ;
DROP DATABASE nome banco de dados;

Exemplo:
DROP TABLE alunos;
DROP DATABASE curso;
DROP TABLE estudantes;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (47/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

COMANDO ALTER: Este comando permite inserir/eliminar atributos nas tabelas já
existentes.

Sintaxe:
ALTER TABLE nome tabela ADD / DROP (
nome atributo1 tipo [ NOT NULL ],
nome atributoN tipo [ NOT NULL ]
);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (48/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

COMANDO INSERT INTO: A partir do momento em que uma tabela está criada, ela
já pode receber a entrada de dados. Normalmente os programas de gerenciamento de banco
de dados possuem recursos apropriados para executar esta ação, no entanto a linguagem de
consulta estruturada SQL possui o comando INSERT INTO.

Sintaxe:
INSERT INTO nome tabela (campos da tabela)
VALUES (valores);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (49/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

Exemplo:
CREATE TABLE cadfun (
CodFun INTEGER NOT NULL PRIMARY KEY,
Nome CHAR (40) NOT NULL,
Depto CHAR (2),
Funcao CHAR (20),
Salario DECIMAL (10));

INSERT INTO cadfun (CodFun, Nome, Depto, Funcao, Salario)


VALUES (12, ‘CARLOS ALBERTO’, ‘2’, ‘VENDEDORA’,1530.00);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (50/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

A obtenção de uma listagem de registros armazenados em uma tabela é uma das tarefas
mais requisitadas em um sistema de gerenciamento de banco de dados. Ela passa a ser uma
das mais importantes no trabalho de gerenciamento e manutenção de dados.

COMANDO SELECT: Para extrair listagens de registos de uma tabela, é necessário


utilizar o comando SELECT com alguns parâmetros. A sintaxe deste comando baseia-se na
seguinte estrutura básica:

Sintaxe:
SELECT [tipo] campos FROM nome tabela [condição];
VALUES (valores);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (51/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

Em que tipo é um parâmetro opcional e possibilita determinar o tipo de registo a ser


selecionado, que pode ser um dos valores DISTINCT (registros distintos) ou ALL
(todos os registros); campo é a lista de campos a serem selecionados, podendo ser
utilizado o valor * representando todos os campos da tabela; nome tabela é a indicação da
tabela ou tabelas de onde se deseja efetuar a extração de registros; condição caracteriza-se
por ser um parâmetro opcional que determina a condição de ação da pesquisa, sendo aceitos
os valores; WHERE (determina a ação de trabalho de uma condição baseada em
uma relação lógica), GROUP BY (determina o agrupamento de informações
baseado em valores comuns) e ORDER BY (determina a forma de ordenação
dos registros, podendo ser ASC - ascendente e DESC - descendente).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (52/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

No processo de manutenção de registros em bancos de dados é necessário periodicamente


atualizar dados e informações existentes.
COMANDO UPDATE: Muda dados de uma coluna de uma linha de uma tabela em
SQL.

Sintaxe:
UPDATE nome tabela SET campo = expressão [condição];

Em que nome tabela é a indicação da tabela em que se deseja efetuar a atualização dos
registros, campo é a indicação de um campo da tabela, expressão é a indicação do valor
do campo a ser atualizado, condição caracteriza-se por ser um parâmetro opcional que
determina a condição de ação da pesquisa baseada no argumento WHERE.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (53/132)
Banco de Dados

SQL para manipulação de bancos de dados MySQL

COMANDO DELETE: Remove registros da tabela.

Sintaxe:
DELETE FROM nome tabela [condição];

Em que nome tabela é a indicação da tabela em que se deseja efetuar a remoção de


registros, condição carateriza-se por ser um parâmetro opcional que determina a condição
de ação da pesquisa baseada no argumento WHERE.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (54/132)
Banco de Dados

Modelo Entidade-Relacionamento (ER)

O modelo Entidade-Relacionamento (ER) é um modelo de dados conceitual popular de


alto nı́vel. Esse modelo e suas variações costumam ser utilizados para o projeto conceitual de
aplicações de banco de dados, e muitas ferramentas de projeto de banco de dados empregam
seus conceitos. A figura do slide a seguir mostra uma visão geral simplificada do processo
de projeto de banco de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (55/132)
Banco de Dados

Modelo Entidade-Relacionamento (ER)

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (56/132)
Banco de Dados

Exemplo de aplicação de banco de dados

Um exemplo de aplicação de banco de dados, chamado EMPRESA, que serve para ilustrar
os conceitos básicos do modelo ER e seu uso no projeto do esquema será apresentado. Serão
listados os requisitos de dados para o banco de dados, e depois será criado seu esquema
conceitual passo a passo. O banco de dados EMPRESA registra os funcionários, departa-
mentos e projetos de uma empresa. Suponha que, depois da fase de levantamento e análise
de requisitos, os projetistas de banco de dados ofereçam a seguinte descrição do minimundo
- a parte da empresa que será representada no banco de dados:

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (57/132)
Banco de Dados

Exemplo de aplicação de banco de dados


• A empresa é organizada em departamentos. Cada departamento tem um nome exclu-
sivo, um número exclusivo e um funcionário em particular que o gerencia. Registramos
a data inicial em que esse funcionário começou a gerenciar o departamento. Um depar-
tamento pode ter vários locais.
• Um departamento controla uma série de projetos, cada um deles com um nome exclu-
sivo, um número exclusivo e um local exclusivo.
• Armazenamos o nome, número do Cadastro de Pessoa Fı́sica, endereço, salário, sexo
(gênero) e data de nascimento de cada funcionário. Um funcionário é designado para
um departamento, mas pode trabalhar em vários projetos, que não necessariamente
são controlados pelo mesmo departamento. Registramos o número atual de horas por
semana que um funcionário trabalha em cada projeto. Também registramos o supervisor
direto de cada funcionário (que é outro funcionário).
• Queremos registrar os dependentes de cada funcionário para fins de seguro. Para cada
dependente, mantemos o nome, sexo, data de nascimento e parentesco com o fun-
cionário.
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (58/132)
Banco de Dados

Exemplo de aplicação de banco de dados

A digura do slide a seguir mostra como o esquema para essa aplicação de banco de dados
pode ser exibido por meio da notação gráfica conhecida como diagramas ER. Essa figura
será explicada gradualmente à medida que os conceitos do modelo ER forem apresentados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (59/132)
Banco de Dados

Exemplo de aplicação de banco de dados

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (60/132)
Banco de Dados

Entidades e atributos

Entidades e seus atributos. O objeto básico que o modelo ER representa é uma entidade, que
é algo no mundo real com uma existência independente. Uma entidade pode ser um objeto
com uma existência fı́sica (por exemplo, uma pessoa em particular, um carro, uma casa
ou um funcionário), ou pode ser um objeto com uma existência conceitual (por exemplo,
uma empresa, um cargo ou um curso universitário). Cada entidade possui atributos —
as propriedades especı́ficas que a descrevem. Por exemplo, uma entidade FUNCIONARIO
pode ser descrita pelo nome, idade, endereço, salário e cargo do funcionário. Uma entidade
em particular terá um valor para cada um de seus atributos. Os valores de atributo que
descrevem cada entidade tornam-se uma parte importante dos dados armazenados no banco
de dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (61/132)
Banco de Dados

Entidades e atributos
A Figura a seguir mostra duas entidades e os valores de seus atributos. A entidade FUNCIO-
NARIO f1 tem quatro atributos: Nome, Endereco, Idade e Telefone residencial; seus valores
são ‘João Silva,’ ‘Rua das Flores, 751, São Paulo, SP, 07700110’, ‘55’ e ‘13-4749-2630’, res-
pectivamente. A entidade EMPRESA e1 tem três atributos: Nome, Matriz e Presidente;
seus valores são ‘Companhia Modelo’, ‘São Paulo’ e ‘João Silva’, respectivamente.

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (62/132)
Banco de Dados

Entidades e atributos

Vários tipos de atributos ocorrem no modelo ER: simples versus composto, valor único
versus multivalorado, e armazenado versus derivado. Primeiro, vamos definir esses tipos de
atributo e ilustrar seu uso por meio de exemplos. Depois, discutiremos o conceito de um
valor NULL para um atributo.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (63/132)
Banco de Dados

Atributos compostos versus simples (atômicos)


Atributos compostos podem ser divididos em subpar-
tes menores, que representam atributos mais básicos,
com significados independentes. Por exemplo, o
atributo Logradouro da entidade FUNCIONARIO
pode ser subdividido em Logradouro, Cidade, Es-
tado e Cep, com os valores ‘Rua das Flores, 751’,
‘São Paulo’, ‘SP’ e ‘07700110.’ Os atributos não di-
visı́veis são chamados atributos simples ou atômicos.
Os atributos compostos podem formar uma hierar-
quia; por exemplo, Logradouro pode ser subdivi- Figura: Elmasri and Navathe.
dido em três atributos simples: Numero, Rua e Nu- Sistemas de banco de dados - 6ª
mero apartamento, como mostra a Figura. O valor edição. Pearson Education, 2011
de um atributo composto é a concatenação dos valo-
res de seus componentes atributos simples.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (64/132)
Banco de Dados

Atributos compostos versus simples (atômicos)

Atributos compostos são úteis para modelar situações em que um usuário às vezes se refere
ao atributo composto como uma unidade, mas outras vezes se refere especificamente a seus
componentes. Se o atributo composto for referenciado apenas como um todo, não é ne-
cessário subdividi-lo em atributos componentes. Por exemplo, se não for preciso referenciar
os componentes individuais de um endereço (CEP, rua etc.), então o endereço inteiro pode
ser designado como um atributo simples.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (65/132)
Banco de Dados

Atributos de valor único versus multivalorados

A maioria dos atributos possui um valor único para uma entidade em particular; tais atri-
butos são chamados de valor único. Por exemplo, Idade é um atributo de valor único
de uma pessoa. Em alguns casos, um atributo pode ter um conjunto de valores para a
mesma entidade — por exemplo, um atributo Cores para um carro, ou um atributo Forma-
cao academica para uma pessoa. Os carros com uma cor têm um único valor, enquanto os
carros com duas cores possuem dois valores de cor. De modo semelhante, uma pessoa pode
não ter formação acadêmica, outra pessoa pode ter, e uma terceira pode ter duas ou mais
formações; portanto, diferentes pessoas podem ter distintos números de valores para o atri-
buto Formacao academica. Esses atributos são chamados de multivalorados. Um atributo
multivalorado pode ter um limite mı́nimo e um máximo para restringir o número de valores
permitidos para cada entidade individual. Por exemplo, o atributo Cores de um carro pode
ser restrito a ter entre um e três valores, se considerarmos que um carro pode ter no máximo
três cores.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (66/132)
Banco de Dados

Atributos armazenados versus derivados

Em alguns casos, dois (ou mais) valores de atributo estão relacionados - por exemplo, os atri-
butos Idade e Data nascimento de uma pessoa. Para uma entidadede pessoa em particular,
o valor de Idade pode ser determinado pela data atual (hoje) e o valor da Data nascimento
dessa pessoa. O atributo Idade, portanto, é chamado de atributo derivado e considerado de-
rivável do atributo Data nascimento, que é chamado, por sua vez, de atributo armazenado.
Alguns valores de atributo podem ser derivados de entidades relacionadas; por exemplo,
um atributo Numero funcionarios de uma entidade DEPARTAMENTO pode ser derivado
contando-se o número de funcionários relacionados a (trabalhando para) esse departamento.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (67/132)
Banco de Dados

Valores NULL
Em alguns casos, uma entidade em particular pode não ter um valor aplicável para um
atributo. Por exemplo, o atributo Numero apartamento de um endereço só se aplica a
endereços que estão em prédios de apartamento, e não a outros tipos de residências, como
casas. De modo semelhante, um atributo Formacao academica só se aplica a pessoas com
esse tipo de formação. Para tais situações, foi criado um valor especial, chamado NULL. Um
endereço de uma casa teria NULL para seu atributo Numero apartamento, e uma pessoa
sem formação acadêmica teria NULL para Formacao academica. NULL também pode ser
usado quando não conhecemos o valor de um atributo para determinada entidade - por
exemplo, se não soubermos o número do telefone residencial de ‘João Silva’. O significado do
primeiro tipo de NULL é não aplicável, enquanto o significado do segundo é desconhecido. A
categoria desconhecido de NULL pode ser classificada ainda em mais dois casos. O primeiro
caso acontece quando se sabe que o valor do atributo existe, mas está faltando - por exemplo,
se o atributo Altura de uma pessoa for listado como NULL. O segundo caso surge quando
não se sabe se o valor do atributo existe - por exemplo, se o atributo Telefone residencial de
uma pessoa for NULL.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (68/132)
Banco de Dados

Atributos complexos

Observe que, em geral, os atributos compostos e multivalorados podem ser aninhados ar-
bitrariamente. Podemos representar o aninhamento arbitrário ao agrupar componentes de
um atributo composto entre parênteses ( ) e separá-los com vı́rgulas, e ao exibir os atributos
multivalorados entre chaves . Esses atributos são chamados de atributos complexos. Por
exemplo, se uma pessoa pode ter mais de uma residência e cada residência pode ter um
único endereço e vários telefones, um atributo Endereço telefone para uma pessoa pode ser
especificado como a a seguir. Tanto Telefone quanto Endereco são atributos compostos.

{Endereço telefone( {Telefone(Codigo area, Numero telefone)},Endereco(Logradouro (Nu-


mero,Rua,Numero apartamento),Cidade,Estado,Cep) )}

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (69/132)
Banco de Dados

Tipos de entidade e conjuntos de entidade


Um banco de dados em geral contém grupos de entidades que são semelhantes. Por exem-
plo, uma empresa que emprega centenas de funcionários pode querer armazenar informações
semelhantes com relação a cada um dos funcionários. Essas entidades de funcionário compar-
tilham os mesmos atributos, mas cada uma tem o(s) próprio(s) valor(es) para cada atributo.
Um tipo de entidade define uma coleção (ou conjunto) de entidades que têm os mesmos
atributos. Cada tipo de entidade no banco de dados é descrito por seu nome e atributos.
A Figura do slide seguinte mostra dois tipos de entidade: FUNCIONARIO e EMPRESA,
e uma lista de alguns dos atributos para cada um. Algumas entidades individuais de cada
tipo também são ilustradas, junto com os valores de seus atributos. A coleção de todas as
entidades de determinado tipo de entidade no banco de dados, em qualquer ponto no tempo,
é chamada de conjunto de entidades. Normalmente, refere-se ao conjunto de entidades para
usar o mesmo nome do tipo de entidade. Por exemplo, FUNCIONARIO refere-se ao tipo
de entidade e também ao conjunto atual de todas as entidades de funcionário no banco de
dados.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (70/132)
Banco de Dados

Tipos de entidade e conjuntos de entidade

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (71/132)
Banco de Dados

Tipos de entidade e conjuntos de entidade


Um tipo de entidade é representado nos diagramas ER como uma caixa retangular deli-
mitando seu nome. Os nomes de atributo são delimitados em ovais, sendo ligados a seu
tipo de entidade por linhas retas. Os atributos compostos são ligados aos seus atributos
componentes por linhas retas. Os atributos multivalorados aparecem em ovais duplas. A
Figura abaixo mostra um tipo de entidade CARRO nessa notação.

Figura: Elmasri and Navathe.


Figura: Elmasri and Navathe. Sistemas de banco de Sistemas de banco de dados - 6ª
dados - 6ª edição. Pearson Education, 2011 edição. Pearson Education, 2011
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (72/132)
Banco de Dados

Tipos de entidade e conjuntos de entidade

Um tipo de entidade descreve o esquema ou conotação para um conjunto de entidades que


compartilham a mesma estrutura. A coleção de entidades de determinado tipo é agrupada
em um conjunto de entidades, que também é chamado de extensão do tipo de entidade.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (73/132)
Banco de Dados

Atributos-chave de um tipo de entidade


Uma restrição importante das entidades de um tipo de entidade é a chave ou restrição
de exclusividade sobre os atributos. Um tipo de entidade normalmente tem um ou mais
atributos cujos valores são distintos para cada entidade individual no conjunto de entidades.
Esse atributo é denominado atributo-chave, e seus valores podem ser usados para identificar
cada entidade de maneira exclusiva. Por exemplo, para o tipo de entidade PESSOA, um
atributo-chave tı́pico é o Cpf (Cadastro de Pessoa Fı́sica). Às vezes, vários atributos juntos
formam uma chave, significando que a combinação dos valores de atributo deve ser distinta
para cada entidade. Se um conjunto de atributos possui essa propriedade, o modo correto
de representar isso no modelo ER que descrevemos aqui é definir um atributo composto e
designá-lo como um atributo-chave do tipo de entidade. Observe que essa chave composta
precisa ser mı́nima, ou seja, todos os atributos componentes precisam estar incluı́dos no
atributo composto para ter a propriedade de exclusividade. Atributos supérfluos não devem
ser incluı́dos em uma chave. Na notação diagramática ER, cada atributo-chave tem seu
nome sublinhado dentro da oval.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (74/132)
Banco de Dados

Atributos-chave de um tipo de entidade

Especificar que um atributo é uma chave de um tipo de entidade significa que a propriedade
anterior da exclusividade precisa ser mantida para cada conjunto de entidades do tipo de
entidade. Logo, essa é uma restrição que proı́be que duas entidades tenham o mesmo valor
para o atributo-chave ao mesmo tempo. Um tipo de entidade também pode não ter chave;
nesse caso, ele é chamado de tipo de entidade fraca.
Diferentemente do modelo relacional, não existe o conceito de chave primária no modelo
ER apresentado; a chave primária será escolhida durante o mapeamento para um esquema
relacional.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (75/132)
Banco de Dados

Projeto conceitual inicial do banco de dados EMPRESA


Tipos de entidade:
• Um tipo de entidade DEPARTAMENTO com atributos Nome, Numero, Localizacoes,
Gerente e Data inicio gerente. Localizacoes é o único atributo multivalorado.
Podemos especificar que tanto Nome quanto Numero são atributos-chave (separados),
pois cada um foi especificado como sendo exclusivo.

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (76/132)
Banco de Dados

Projeto conceitual inicial do banco de dados EMPRESA

• Um tipo de entidade PROJETO com atributos Nome, Numero, Localizacao e


Departamento gerenciador. Tanto Nome quanto Numero são atributos-chave
(separados).

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (77/132)
Banco de Dados

Projeto conceitual inicial do banco de dados EMPRESA


• Um tipo de entidade FUNCIONARIO com atributos Nome, Cpf, Sexo, Endereco,
Salario, Data nascimento, Departamento e Supervisor. Tanto Nome quanto Endereco
podem ser atributos compostos; no entanto, isso não foi especificado nos requisitos.
Temos de voltar aos usuários para ver se algum deles irá se referir aos componentes
individuais de Nome - Primeiro nome, Inicial meio, Ultimo nome — ou de Endereco.

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (78/132)
Banco de Dados

Projeto conceitual inicial do banco de dados EMPRESA

• Um tipo de entidade DEPENDENTE com atributos Funcionario, Nome dependente,


Sexo, Data nascimento e Parentesco (para o funcionário).

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (79/132)
Banco de Dados

Tipos, conjuntos e instâncias de relacionamento

Um tipo de relacionamento R entre n tipos de entidade E1 , E2 , ..., En define um conjunto


de associações - ou um conjunto de relacionamento - entre as entidades desses tipos de
entidade. Assim como no caso dos tipos de entidade e conjuntos de entidade, um tipo de
relacionamento e seu conjunto de relacionamento correspondente em geral são referenciados
pelo mesmo nome, R. Matematicamente, o conjunto de relacionamento R é um conjunto
de instâncias de relacionamento ri , onde cada ri associa-se a n entidades individuais
(e1 , e2 , ..., en ), e cada entidade ej em ri é um membro do conjunto de entidades Ej , 1 ≤ j ≤ n.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (80/132)
Banco de Dados

Tipos, conjuntos e instâncias de relacionamento

Informalmente, cada instância de relacionamento ri em R é uma associação de entidades,


onde a associação inclui exatamente uma entidade de cada tipo de entidade participante.
Cada instância de relacionamento ri desse tipo representa o fato de que as entidades parti-
cipantes em ri estão relacionadas de alguma maneira na situação do minimundo correspon-
dente.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (81/132)
Banco de Dados

Tipos, conjuntos e instâncias de relacionamento

Por exemplo, considere um tipo de relacionamento TRABALHA PARA entre os dois tipos
de entidade FUNCIONARIO e DEPARTAMENTO, que associa cada funcionário ao depar-
tamento para o qual o funcionário trabalha no conjunto de entidades correspondente. Cada
instância de relacionamento no conjunto de relacionamentos TRABALHA PARA associa
uma entidade FUNCIONARIO a uma entidade DEPARTAMENTO.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (82/132)
Banco de Dados

Tipos, conjuntos e instâncias de relacionamento


A Figura abaixo ilustra esse exemplo, onde cada instância de relacionamento ri aparece
conectada às entidades FUNCIONARIO e DEPARTAMENTO que participam em ri . No
minimundo representado pela figura, os funcionários f1 , f3 ef6 trabalham para o departa-
mento d1 ; os funcionários f2 ef4 trabalham para o departamento d2 ; e os funcionários f5 ef7
trabalham para o departamento d3 .

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (83/132)
Banco de Dados

Tipos, conjuntos e instâncias de relacionamento

Nos diagramas ER, os tipos de relacionamento são exibidos como caixas em forma de losango,
que são conectadas por linhas retas às caixas retangulares que representam os tipos de
entidade participantes. O nome do relacionamento é exibido na caixa em forma de losango.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (84/132)
Banco de Dados

Grau de um tipo de relacionamento


O grau de um tipo de relacionamento é o número dos
tipos de entidade participantes. Logo, o relaciona-
mento TRABALHA PARA tem grau dois. Um tipo
de relacionamento de grau dois é chamado de binário,
e um tipo de grau três é chamado de ternário. Um
exemplo de relacionamento ternário é FORNECE,
em que cada instância de relacionamento ri associa
três entidades - um fornecedor f, uma peça p e um
projeto j - sempre que f fornece a peça p ao pro-
jeto j. Os relacionamentos geralmente podem ser de
qualquer grau, mas os mais comuns são os relaciona-
mentos binários. Relacionamentos de grau mais alto
geralmente são mais complexos do que os binários. Figura: Elmasri and Navathe.
Sistemas de banco de dados - 6ª
edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (85/132)
Banco de Dados

Relacionamentos como atributos

Às vezes, é conveniente pensar em um tipo de relacionamento binário em termos de atri-


butos. Considere o tipo de relacionamento TRABALHA PARA. Pode-se pensar em um
atributo chamado Departamento do tipo de entidade FUNCIONARIO, em que o valor do
Departamento para cada entidade FUNCIONARIO é a (uma referência à) entidade DE-
PARTAMENTO para a qual esse funcionário trabalha. Logo, o conjunto de valores para
esse atributo Departamento é o conjunto de todas as entidades DEPARTAMENTO, que é
o conjunto de entidades DEPARTAMENTO.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (86/132)
Banco de Dados

Razões de cardinalidade para relacionamentos binários

A razão de cardinalidade para um relacionamento binário especifica o número máximo de


instâncias de relacionamento em que uma entidade pode participar. Por exemplo, no tipo
de relacionamento binário TRABALHA PARA, DEPARTAMENTO:FUNCIONARIO tem
razão de cardinalidade 1:N, significando que cada departamento pode estar relacionado a
(ou seja, emprega) qualquer número de funcionários, mas um funcionário só pode estar
relacionado a (trabalha para) um departamento. Isso significa que, para esse relacionamento
TRABALHA PARA em particular, uma entidade de departamento em particular pode estar
relacionada a qualquer número de funcionários (N indica que não existe um número máximo).
Por sua vez, um funcionário pode estar relacionado no máximo a um único departamento.
As razões de cardinalidade possı́veis para tipos de relacionamento binários são 1:1, 1:N, N:1
e M:N.
As razões de cardinalidade para relacionamentos binários são representadas nos diagramas
ER exibindo 1, M e N nos losangos.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (87/132)
Banco de Dados

Restrições de participação e dependências de existência

A restrição de participação especifica se a existência de uma entidade depende dela estar


relacionada a outra entidade por meio do tipo de relacionamento. Essa restrição especifica o
número mı́nimo de instâncias de relacionamento em que cada entidade pode participar, e às
vezes é chamada de restrição de cardinalidade mı́nima. Existem dois tipos de restrições de
participação - total e parcial. Se a polı́tica de uma empresa afirma que todo funcionário pre-
cisa trabalhar para um departamento, então uma entidade de funcionário só pode existir se
participar em, pelo menos, uma instância de relacionamento TRABALHA PARA. Assim, a
participação de FUNCIONARIO em TRABALHA PARA é chamada de participação total,
significando que cada entidade no conjunto total de entidades de funcionário deve estar rela-
cionada a uma entidade de departamento por meio de TRABALHA PARA. A participação
total também é conhecida como dependência de existência.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (88/132)
Banco de Dados

Restrições de participação e dependências de existência

Por outro lado, não esperamos que cada funcionário gerencie um departamento, de modo
que a participação de FUNCIONARIO no tipo de relacionamento GERENCIA é parcial,
significando que uma parte do conjunto de entidades de funcionário está relacionada a alguma
entidade de departamento por meio de GERENCIA, mas não necessariamente todas. Vamos
nos referir à razão de cardinalidade e restrições de participação, juntas, como as restrições
estruturais de um tipo de relacionamento.
Em diagramas ER, a participação total (ou dependência de existência) é exibida como uma
linha dupla que conecta o tipo de entidade participante ao relacionamento, enquanto a
participação parcial é representada por uma linha simples

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (89/132)
Banco de Dados

Atributos de tipos de relacionamento


Os tipos de relacionamento também podem ter atributos, semelhantes àqueles dos tipos de
entidade. Por exemplo, para registrar o número de horas por semana que um funcionário
trabalha em determinado projeto, podemos incluir um atributo Horas para o tipo de relaci-
onamento TRABALHA EM. Outro exemplo é incluir a data em que um gerente começou a
chefiar um departamento por meio de um atributo Data inicio para o tipo de relacionamento
GERENCIA.
Observe que os atributos dos tipos de relacionamento 1:1 ou 1:N podem ser migrados para
um dos tipos de entidade participantes. Por exemplo, o atributo Data inicio para o relacio-
namento GERENCIA pode ser um atributo de FUNCIONARIO ou de DEPARTAMENTO,
embora conceitualmente ele pertença a GERENCIA. Isso porque GERENCIA é um relaci-
onamento 1:1, de modo que cada entidade de departamento ou funcionário participa de no
máximo uma instância de relacionamento. Logo, o valor do atributo Data inicio pode ser
determinado separadamente, pela entidade do departamento participante ou pela entidade
do funcionário participante (gerente).

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (90/132)
Banco de Dados

Atributos de tipos de relacionamento

Para um tipo de relacionamento 1:N, um atributo de relacionamento pode ser migrado


somente para o tipo de entidade no lado N do relacionamento. Por exemplo, se o relaci-
onamento TRABALHA PARA também tiver um atributo Data inicio que indica quando
um funcionário começou a trabalhar para um departamento, esse atributo pode ser incluı́do
como um atributo de FUNCIONARIO. Isso porque cada funcionário trabalha para somente
um departamento, e por isso participa de, no máximo, uma instância de relacionamento
em TRABALHA PARA. Nos tipos de relacionamento 1:1 e 1:N, a decisão de onde colocar
um atributo de relacionamento - como um atributo de tipo de relacionamento ou como um
atributo de um tipo de entidade participante - é determinada de maneira subjetiva pelo
projetista do esquema.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (91/132)
Banco de Dados

Atributos de tipos de relacionamento

Para tipos de relacionamento M:N, alguns atributos podem ser determinados pela com-
binação de entidades participantes em uma instância de relacionamento, e não por qualquer
entidade isolada. Esses atributos precisam ser especificados como atributos de relaciona-
mento. Um exemplo é o atributo Horas do relacionamento M:N de TRABALHA EM. O
número de horas por semana que um funcionário trabalha atualmente em um projeto é
determinado por uma combinação funcionário-projeto, e não de maneira separada por qual-
quer entidade.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (92/132)
Banco de Dados

Tipos de entidade fraca


Tipos de entidade que não possuem atributos-chave próprios são chamados tipos de entidade
fraca. Ao contrário, os tipos de entidade regulares que têm um atributo-chave são chamados
tipos de entidade fortes. As entidades pertencentes a um tipo de entidade fraca são identi-
ficadas por estarem relacionadas a entidades especı́ficas de outro tipo em combinação com
um de seus valores de atributo. Um tipo de entidade fraca sempre tem uma restrição de
participação total (dependência de existência) com relação a seu relacionamento de identi-
ficação, porque a entidade fraca não pode ser identificada sem uma entidade proprietária.
Porém, nem toda dependência de existência resulta em um tipo de entidade fraca.
Um tipo de entidade fraca normalmente tem uma chave parcial, que é o atributo que pode
identificar exclusivamente as entidades fracas que estão relacionadas à mesma entidade pro-
prietária. Em nosso exemplo, se considerarmos que dois dependentes do mesmo funcionário
não poderão ter o mesmo nome, o atributo Nome de DEPENDENTE é a chave parcial. No
pior dos casos, um atributo composto de todos os atributos da entidade fraca será a chave
parcial.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (93/132)
Banco de Dados

Tipos de entidade fraca

Em diagramas ER, tanto um tipo de entidade fraca quanto seu relacionamento de identi-
ficação são distinguidos ao delimitar suas caixas e losangos com linhas duplas. O atributo
de chave parcial é sublinhado com uma linha tracejada ou pontilhada.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (94/132)
Banco de Dados

Refinando o projeto ER para o banco de dados


EMPRESA
Agora é possı́vel refinar o projeto de banco de dados alterando os atributos que representam
relacionamentos para tipos de relacionamento.
• GERENCIA, um tipo de relacionamento 1:1 entre FUNCIONARIO e DEPARTA-
MENTO. A participação de FUNCIONARIO é parcial. A participação de DEPAR-
TAMENTO não é clara pelos requisitos. Questionamos os usuários, que dizem que um
departamento precisa ter um gerente o tempo todo, o que implica participação total.
O atributo Data inicio é atribuı́do a esse tipo de relacionamento.
• TRABALHA PARA, um tipo de relacionamento 1:N entre DEPARTAMENTO e FUN-
CIONARIO. As duas participações são totais.
• CONTROLA, um tipo de relacionamento 1:N entre DEPARTAMENTO e PROJETO.
A participação de PROJETO é total, enquanto a de DEPARTAMENTO é determinada
para ser parcial, depois que os usuários indicaram que alguns departamentos podem não
controlar projeto algum.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (95/132)
Banco de Dados

Refinando o projeto ER para o banco de dados


EMPRESA

• SUPERVISAO, um tipo de relacionamento 1:N entre FUNCIONARIO (no papel de


supervisor) e FUNCIONARIO (no papel de supervisionado). As duas participações
são determinadas como sendo parciais, depois que os usuários indicaram que nem todo
funcionário é um supervisor e nem todo funcionário tem um supervisor.
• TRABALHA EM, determinado como sendo um tipo de relacionamento M:N com atri-
buto Horas, depois que os usuários indicaram que um projeto pode ter vários fun-
cionários trabalhando nele. As duas participações são determinadas como totais.
• DEPENDENTES DE, um tipo de relacionamento 1:N entre FUNCIONARIO e DE-
PENDENTE, que também é o relacionamento de identificação para o tipo de entidade
fraca DEPENDENTE. A participação de FUNCIONARIO é parcial, enquanto a de
DEPENDENTE é total.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (96/132)
Banco de Dados

Refinando o projeto ER para o banco de dados


EMPRESA

Depois de especificar os seis tipos de relacionamento citados, removemos dos tipos de enti-
dade todos os atributos que foram refinados para relacionamentos. Estes incluem Gerente e
Data inicio gerente de DEPARTAMENTO; Departamento gerenciador de PROJETO; De-
partamento, Supervisor e Trabalha em de FUNCIONARIO; e Funcionario de DEPEN-
DENTE. É importante ter o mı́nimo possı́vel de redundância quando projetamos o esquema
conceitual de um banco de dados. Se alguma redundância for desejada no nı́vel de armaze-
namento ou no nı́vel de visão do usuário, ela pode ser introduzida mais tarde.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (97/132)
Banco de Dados

Diagramas ER, convenções de nomes e questões de


projeto

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (98/132)
Banco de Dados

Diagramas ER, convenções de nomes e questões de


projeto

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (99/132)
Banco de Dados

Diagramas ER, convenções de nomes e questões de


projeto

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (100/132)
Banco de Dados

Diagramas ER, convenções de nomes e questões de


projeto

Figura: Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education, 2011
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (101/132)
Banco de Dados

Exercı́cio

Desenvolva o Diagrama Entidade Relacionamento para cada uma das seguintes situações:
1. Um aluno realiza vários trabalhos. Um trabalho é realizado por um ou mais alunos.
2. Um diretor dirige no máximo um departamento. Um departamento tem no máximo um
diretor.
3. Um autor escreve vários livros. Um livro pode ser escrito por vários autores.
4. Uma equipe é composta por vários jogadores. Um jogador joga apenas em uma equipe.
5. Um cliente realiza várias encomendas. Uma encomenda diz respeito apenas a um cliente.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (102/132)
Banco de Dados

Respostas

Questão 1:

Questão 2:

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (103/132)
Banco de Dados

Respostas
Questão 3:

Questão 4:

Questão 5:

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (104/132)
Banco de Dados

Operadores Aritméticos

Os operadores aritméticos são responsáveis pela execução de operações matemáticas simples,


que venham a efetuar adição, subtração, multiplicação e divisão.
Operador Descrição
+ Efetuar adição
- Efetuar subtração
* Efetuar multiplicação
/ Efetuar divisão

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (105/132)
Banco de Dados

Operadores Aritméticos
Pode-se utilizar o comando SELECT para selecionar registros em que a condição está for-
necida com um cálculo.

Por exemplo, apresentar os registros dos funcionários que ganham acima de 1.700,00 (valor
do salário) mais comissão de 50,00 (totalizando 1.750,00). Desta forma poderia ser executado
o comando:

SELECT Nome, Salario FROM cadfun WHERE Salario 1700 + 50;

É possı́vel efetuar cálculos tanto para apresentação de listagem como para efetivação de
atualizações de registros, por exemplo:
UPDATE Cadfun SET Salario = Salario * 10 WHERE CodFun = 7;

Os cálculos podem Ter sua prioridade matemática alterada com a utilização de parênteses.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (106/132)
Banco de Dados

Operadores Relacionais

Os operadores relacionais são utilizados em condições em que há necessidade de efetuar


comparação entre dois valores. Um operador relacional pode ser um dos seguintes tipos:
Operador Descrição
> Maior que
< Menor que
= Igual a
<> Diferente de
>= Maior ou igual a
<= Menor ou igual a

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (107/132)
Banco de Dados

Operadores Lógicos

Existem ocasiões em que é necessário trabalhar com o relacionamento de duas ou mais


condições ao mesmo tempo, efetuando desta forma testes múltiplos. Para estes casos é
necessário trabalhar com a utilização dos operadores booleanos. Um operador lógico pode
ser:
Operador Descrição
AND Operador de conjunção
OR Operador de disjunção
NOT Operador de negação

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (108/132)
Banco de Dados

Operadores Lógicos
O operador do tipo AND é utilizado quando dois ou mais relacionamentos lógicos de uma de-
terminada condição necessitam ser verdadeiros. Em seguida é apresentada a tabela-verdade
para este tipo de operador:
Condição 1 Condição 2 Resultado
Falsa Falsa Falso
Verdadeira Falsa Falso
Falsa Verdadeira Falso
Verdadeira Verdadeira Verdadeiro
O operador do tipo AND faz com que somente seja executada uma determinada operação
se todas as condições mencionadas forem simultaneamente verdadeiras, gerando assim um
resultado lógico verdadeiro.
SELECT * FROM cadfun WHERE (Depto = ‘5’ ) AND (Funcao = ‘VENDE-
DOR’);
O exemplo anterior efetua a apresentação dos dados de todos os funcionários que pertencem
ao departamento 5 e que sejam vendedores.
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (109/132)
Banco de Dados

Operadores Lógicos
O operador OR é utilizado quando pelo menos um dos relacionamentos lógicos (quando
houver mais de um relacionamento) de uma condição necessita ser verdadeiro. Em seguida
é apresentada a tabela-verdade para este tipo de operador:
Condição 1 Condição 2 Resultado
Falsa Falsa Falso
Verdadeira Falsa Verdadeiro
Falsa Verdadeira Verdadeiro
Verdadeira Verdadeira Verdadeiro
O operador OR faz com que seja executada uma determinada operação se pelo menos uma
das condições mencionadas gerar um resultado lógico verdadeiro.
SELECT * FROM cadfun WHERE (Funcao = ‘SUPERVISORA’ ) OR (Funcao
= ‘SUPERVISOR’);
O exemplo anterior efetua a apresentação dos dados de todos os funcionários que tenham a
função de supervisora ou a função de supervisor.
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (110/132)
Banco de Dados

Operadores Lógicos
O operador do tipo NOT é utilizado quando se necessita estabelecer que uma determinada
condição deve não ser verdadeira ou deve não ser falsa. O operador NOT se caracteriza por
inverter o estado lógico de uma condição. Em seguida é apresentada a tabela-verdade para
este tipo de operador:
Condição Resultado
Verdadeira Falso
Falsa Verdadeiro
O operador NOT faz com que seja executada uma determinada operação, invertendo o
resultado lógico da condição.
SELECT * FROM cadfun WHERE NOT (Funcao = ‘VENDEDOR’ );
O exemplo anterior efetua a apresentação dos dados de todos os funcionários que na sua
função não são vendedores (VENDEDOR)

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (111/132)
Banco de Dados

Operadores Auxiliares

A linguagem de consulta estruturada SQL possui, além dos operadores aritméticos, relaci-
onais e lógicos, alguns outros operadores auxiliares que facilitam a definição de condições
para comandos como SELECT, UPDATE e DELETE, quando da utilização da cláusula
WHERE.
• Definição de Intervalos: A definição de intervalos de valores para a cláusula WHERE
em uma condição pode ser obtida com BETWEEN, que possui a seguinte sintaxe:
expressão [NOT] BETWEEN valor mı́nimo AND valor máximo
em que expressão pode ser a definição de um campo, valor numérico, sequência de
caracteres, sendo que este parâmetro serve para definir a efetivação da comparação;
valor mı́nimo é a definição do menor valor da faixa de intervalo e valor máximo é a
definição do maior valor da faixa de intervalo.
SELECT * FROM cadfun WHERE Salario BETWEEN 1700 AND 2000;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (112/132)
Banco de Dados

Operadores Auxiliares

• Verificação de Existência: Algumas vezes não é possı́vel definir um intervalo sequen-


cial de valores. Nestes casos, junto à cláusula WHERE em uma condição, utiliza-se o
operador IN que possui a seguinte sintaxe:
expressão [NOT] IN valor1, valor2, valorN,...
Em que expressão pode ser a definição de um campo, valor numérico, sequência de
caracteres, sendo que este parâmetro serve para definir a efetivação da comparação;
valor1, valor2, valorN são as definições do grupo de valores em que a expressão será
verificada.
O exemplo seguinte efetua a apresentação dos dados de todos os funcionários que ocu-
pem a função de vendedor ou vendedora.
SELECT * FROM cadfun WHERE Funcao IN (‘VENDEDOR’ , ‘VENDE-
DORA’);

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (113/132)
Banco de Dados

Operadores Auxiliares
• Verificação de Caracteres: Para verificar sequências de caracteres dentro de um
determinado campo do tipo string (CHAR ou VARCHAR), pode-se utilizar junto à
cláusula WHERE uma condição baseada no uso do operador LIKE que possui a seguinte
sintaxe:
expressão [NOT] LIKE valor
Em que expressão pode ser a definição de um campo, valor numérico, seqüência de
caracteres, sendo que este parâmetro serve para definir a efetivação da comparação;
valor é a definição do que será pesquisado.
Caso a expressão analisada coincida com o valor indicado após o operador LIKE, a ação
estabelecida antes da cláusula WHERE será executada.
O exemplo seguinte efetua a apresentação dos dados de todos os funcionários cujo
nome comece com a letra A note no exemplo o uso do caractere % (porcentagem) que
representa um conjunto de caracteres que será desconsiderado na sequência avaliada.
SELECT * FROM cadfun WHERE Nome LIKE ‘A%’;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (114/132)
Banco de Dados

Operadores Auxiliares

• Verificação de Caracteres:
O exemplo seguinte efetua a apresentação dos dados de todos os funcionários que pos-
suam como Segunda letra de seus nomes A. Note no exemplo o uso do caractere
(underline), que representa um úncio caractere na seqüênica avaliada.
SELECT * FROM cadfun WHERE Nome LIKE ‘ A%’;
O próximo exemplo apresenta os dados de todos os funcionários que possuam a seqüência
de caracteres AN em qualquer posição de seu nome.
SELECT * FROM cadfun WHERE Nome LIKE ‘%AN%’;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (115/132)
Banco de Dados

Operadores Auxiliares

• Se vazio: Uma ocorrência bastante útil é verificar a existência de campos que possuam
valores em branco ou não. Nesses casos, utiliza-se junto à cláusula WHERE em uma
condição o operador IS NULL que possui a seguinte sintaxe:
expressão IS NOT NULL
Em que a expressão pode ser a definição de um campo, valor numérico, sequência de
caracteres, sendo que este parâmetro serve par definir a efetivação da comparação.
O exemplo seguinte apresentaria os dados de todos os registros que tivessem o campo
Nome gravado em brando, sem nenhum conteúdo (NULL).
SELECT * FROM cadfun WHERE Nome IS NULL;
Como não existe nenhum registro que atenda a este critério, não será apresentado
nenhum registro.
Observação: o operador lógico NOT é opcional e serve para inverter a ação condicional
dos operadores BETWEEN, IN, LIKE e IS NULL.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (116/132)
Banco de Dados

Funções Agregadas

Como ferramentas auxiliares no trabalho de análise de dados, a linguagem de consulta


estruturada SQL disponibiliza algumas funções, tais como: AVG ( ), COUNT ( ), MAX( ),
MIN( ), e SUM( ). Assim sendo, uma função pode Ter a seguinte sintaxe:
FUNÇÃO ((ALL) expressão / [DISTINCT] expressão)

Em que função pode ser AVG, MAX, MIN e SUM (no caso da função COUNT, terá um
parâmetro a mais, antes do valor ALL, que será a representado por um caractere asterisco
do número de registros da tabela que atenda a uma condição); all representa a contagem de
todos os valores não vazios (NULL) no campo indicado; distinct é a definição dos valores
não vazios e únicos existentes no campo avaliado; expressão corresponde ao valor avaliado
ou campo da tabela informado.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (117/132)
Banco de Dados

Funções Agregadas
O exemplo seguinte apresenta a média aritmética dos salários de todos os funcionários.
SELECT AVG(Salario) FROM cadfun;
Este exemplo apresenta a média aritmética dos salários de todos os funcionários do depar-
tamento 3.
SELECT AVG(Salario) FROM cadfun WHERE Depto = ‘3’;
O exemplo seguinte apresenta a soma aritmética dos salários de todos os funcionários.
SELECT SUM(Salario) FROM cadfun;
O exemplo seguinte apresenta a soma aritmética dos salários de todos os funcionários do
departamento 5.
SELECT SUM(Salario) FROM cadfun WHERE Depto = ‘5’;
O exemplo seguinte apresenta o maior salário existente entre todos os funcionários.
SELECT MAX(Salario) FROM cadfun;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (118/132)
Banco de Dados

Funções Agregadas

O exemplo seguinte apresenta o menor salário existente entre todos os funcionários.


SELECT MIN(Salario) FROM cadfun;

O exemplo exibe o número de funcionários que se encontram locados no departamento 3.


SELECT COUNT(*) FROM cadfun WHERE Depto = ‘3’;

O exemplo apresenta o número de funcionários que ganham um salário acima de 2000.


SELECT COUNT(*) FROM cadfun WHERE Salario > 2000;

O exemplo exibe o número de departamentos existentes no cadastro de funcionários.


SELECT COUNT(DISTINCT Depto) FROM cadfun;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (119/132)
Banco de Dados

Relacionamentos entre tabelas

Nas atividades anteriores foram vistos detalhes de como criar um banco de dados, criar uma
tabela, inserir dados, atualizar dados, remover dados, alterar a estrutura de uma tabela
existentes e diversos outros detalhes, mas todos relacionados a apenas uma tabela.

Uma das grandes caracterı́sticas de um sistema de banco de dados relacional é a capacidade


de interagir com múltiplas tabelas, como se elas fossem apenas uma.

Para exemplificar este tipo de operação, vamos criar um banco de dados denominado dep-
cobra (Departamento de cobrança), o qual possuirá duas tabelas: uma denominada cliente
e a outra denominada venda, que serão posteriormente relacionadas.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (120/132)
Banco de Dados

Relacionamentos entre tabelas

Tabela cliente: A tabela cliente será utilizada para armazenar os dados dos clientes que
efetuam compras a prazo. Ela deve ser criada de acordo com a seguinte estrutura:

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (121/132)
Banco de Dados

Relacionamentos entre tabelas

Tabela cobrança: A tabela de cobranca será utilizada para armazenar os dados das com-
pras a prazo efetuadas pelos clientes. Ela deve ser criada de acordo com a seguinte estrutura:

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (122/132)
Banco de Dados

Relacionamentos entre tabelas


Para determinara o relacionamento entre tabelas, é necessário Ter no mı́nimo duas tabelas
que possuam entre si algum campo em comum. No exemplo das tabelas cliente e venda,
existe o campo de código do cliente (Codigo na tabela cliente e CodCli na tabela venda)
como campo comum, pois apesar de os nomes serem diferentes, a estrutura e o tipo são
iguais (o que basta para definir um relacionamento entre as tabelas).

A obtenção de informação existente em tabelas relacionadas é conseguida com o comando


SELECT, o qual fará uso da seguinte sintaxe (será considerada a extração de informação de
duas tabelas):

SELECT <tabela1.campo>, <tabela2.campo>, < ... >


FROM <tabela1>, <tabela2>, < ... >
WHERE <condição> [operador <condição... >];

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (123/132)
Banco de Dados

Relacionamentos entre tabelas

Em que tabela1.campo será o campo da primeira tabela a ser apresentado na extração


das informações; tabela2.campo será o campo da Segunda tabela (o campo da Segunda
tabela será diferente do campo da primeira tabela e devem estar indicados na ordem em que
se deseja vê-los na extração); tabela1 será a indicação da primeira tabela e tabela2 será a
indicação da segunda tabela a ser pesquisada (a ordem de definição das tabelas não influencia
na extração das informações); condição será a definição da efetivação do relacionamento por
meio do campo em comum existente entre as tabelas que serão relacionadas (normalmente
a relação ocorre entre os campos de chave primária com o campo de chave estrangeira);
operador será a utilização opcional de um operador lógico ou auxiliar para ampliar a ação
de extração de informações.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (124/132)
Banco de Dados

Relacionamentos entre tabelas


Dentro do conceito exposto, imagine a necessidade de obter uma relação (listagem) das
duplicatas (tabela venda) existentes em cobrança e o nome (tabela cliente) dos clientes que
estão com essas duplicatas.

SELECT venda.Duplic, cliente.Nome FROM cliente, venda


WHERE cliente.Codigo = venda.CodCli;

Observe que a linha de código anterior determina após o comando SELECT a apresentação
em primeiro lugar do campo Duplic da tabela venda, depois a apresentação do campo Nome
da tabela cliente. Perceba que após o comando FROM estão sendo mencionados os nomes
das tabelas que devem ser lidas e por último, após a cláusula WHERE, está sendo indicada a
relação dos campos Codigo da tabela cliente com o campo CodCli da tabela venda. Perceba
que a relação existente determina apresentação dos dados que possuam os mesmos valores
entre os campos Codigo e CodCli.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (125/132)
Banco de Dados

Relacionamentos entre tabelas

Outro exemplo de extração relacionada pode ser a apresentação de uma listagem ordenada
por nomes de clientes, mostrando a relação de duplicatas que cada um possui em carteira
(a pagar) e seus respectivos valores.

SELECT cliente.Nome, venda.Duplic, venda.Valor


FROM cliente, venda
WHERE cleinte.Codigo = venda.CodCli
ORDER BY cliente.Nome;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (126/132)
Banco de Dados

Relacionamentos entre tabelas

Imagine a necessidade de efetuar a extração de uma listagem que apresente as duplicatas


existentes em carteira do cliente PCTEC – MICROCOMPUTADORES S/A. Na listagem
devem constar o nome do cliente, o número da duplicata e seu valor correspondente.

SELECT cliente.Nome, venda.Duplic, venda.Valor


FROM cliente, venda
WHERE cleinte.Codigo = venda.CodCli
AND cliente.Nome LIKE ‘PCTEC%’;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (127/132)
Banco de Dados

Relacionamentos entre tabelas

Uma outra situação poderia ser a apresentação dos nomes dos clientes e a data de venci-
mento de todas as duplicatas pendentes no mês de novembro de 2002. A listagem deve ser
apresentada na ordem cronológica de vencimento.

SELECT cliente.Nome, venda.Vencto FROM cliente, venda


WHERE cleinte.Codigo = venda.CodCli
AND venda.Vencto LIKE ‘2002-11%’
ORDER BY venda.Vencto;

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (128/132)
Banco de Dados

Informações agrupadas
O agrupamento de informações entre tabelas relacionadas vai depender da forma como a
relação é projetada. Outra informação a ser obtida é a quantidade de duplicatas existente
em carteira de cada cliente.
Para solucionar esta necessidade, deve-se utilizar junto a WHERE a cláusula GROUP BY,
como é demonstrado em seguida.
SELECT cliente.Nome, COUNT(*) FROM cliente, venda
WHERE cleinte.Codigo = venda.CodCli
GROUP BY cliente.Nome;
O comando anterior irá fazer a apresentação de uma listagem com duas colunas: a primeira
como o nome do cliente da tabela cliente e a segunda com o valor total de referências
encontradas na tabela venda. Perceba que a cláusula GROUP BY faz com que as informações
sejam agrupadas pelo nome do cliente.
A função COUNT efetua a contagem de acordo com a condição estabelecida em WHERE,
segundo a forma de agrupamento. Isto faz com que a contagem seja inicializada para cada
grupo de informação, fornecendo o valor total de referências de um determina cliente da
tabela cliente existente na tabela venda.
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (129/132)
Banco de Dados

Definição de apelidos
A linguagem de consulta estruturada SQL fornece um recurso muito útil para facilitar a
leitura e a definição de referências de nomes de tabelas, colunas (campos) e fórmulas. Este
recurso se baseia na possibilidade de dar um nome (de apelidar) diferente de uma tabela,
campo ou fórmula do nome nela existente. Isto é conseguido com um comando adicional
utilizado junto do comando SELECT. Trata-se do comando AS.
Imagine a necessidade de apresentar uma listagem identificada pelos apelidos Cliente (para
representar o campo Nome) e Vencidos (para representar o número de duplicatas vencidas
existente na tabela venda que será calculada pela função COUNT) de todos os clientes que
possuem tı́tulos com vencimento anterior a 31/12/1999.
SELECT cliente.Nome AS Cliente, COUNT(*) AS Vencidos
FROM cliente, venda
WHERE cliente.Codigo = venda.CodCli
AND Vencto <= ‘1999-12-31’
GROUP BY cliente.Nome
ORDER BY cliente.Nome;
(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (130/132)
Banco de Dados

Normalização

• A normalização serve como alternativa para o refinamento do esquema relacional, vi-


sando minimizar a redundância dos dados armazenados no banco de dados;
• Existem várias formas normais: 1ªFN, 2ªFN, 3ªFN e etc.;
• Cada relação na 3ªFN está também na 2ªFN, cada relação na 2ªFN está também na
1ªFN.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (131/132)
Banco de Dados

Normalização

• 1ªFN: Uma tabela está na 1ªFN se não possuir campos multivalorados;


• 2ªFN: Uma tabela está na 2ªFN se estiver na 1ªFN e todos os seus campos dependam
incondicionalmente da chave primária. Ou seja, não deve haver dependências parciais;
• 3ªFN: Uma tabela está na 3ªFN se estiver na 2ªFN e não existir replicação de dados
devido à existência de dependências transitivas.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (132/132)
References I

C. C. D. G. ELETRÔNICO. Apostila de MySQL. 2001.


Elmasri and Navathe. Sistemas de banco de dados - 6ª edição. Pearson Education,
2011.

(Centro Educacional Stella Dos Cherubins Guimarães Trois) • IBD • 17 de fevereiro de 2024 • (132/132)

Você também pode gostar