Escolar Documentos
Profissional Documentos
Cultura Documentos
Apostila TLBD II
Apostila TLBD II
Pgina 1
Sumrio
1.
1.2.
2.
2.2.
Cardinalidade do relacionamento........................................................ 12
2.3.
2.3.1.
2.3.2.
2.3.3.
2.3.4.
2.3.5.
2.3.6.
2.3.7.
3.
3.1.1.
3.1.2.
3.2.
Normalizao ............................................................................................ 34
3.2.1.
1 Forma Normal................................................................................... 34
3.2.2.
2 Forma Normal................................................................................... 34
3.2.3.
3 Forma Normal................................................................................... 35
3.3.
Exerccios prticos...................................................................................... 36
3.3.1.
Condomnio ............................................................................................... 36
3.3.2.
Biblioteca .................................................................................................. 36
3.3.3.
Operadora de Turismo............................................................................ 37
Pgina 2
3.3.4.
Sistema escolar......................................................................................... 38
3.3.5.
3.3.6.
3.3.7.
Inscrio .................................................................................................... 39
3.3.8.
Paciente ..................................................................................................... 39
4.
4.1.
4.2.
4.3.
4.4.
4.4.1.
4.5.
5.
5.1.
5.2.
6.
7.
Pgina 3
1.
Conceitos gerais
Pgina 4
1.1.
O Modelo relacional
O modelo relacional uma teoria matemtica criada por Edgar Frank Codd
em 1970 para descrever como as bases de dados devem funcionar. O Modelo
relacional revelou-se ser o mais flexvel e adequado ao solucionar os vrios
problemas que se colocam no nvel da concepo e implementao da base de dados.
A estrutura fundamental do modelo relacional a relao (tabela). Uma relao
constituda por um ou mais atributos (campos) que traduzem o tipo de dados a
armazenar. Cada instncia do esquema (linha) chamada de tupla (registro).
O modelo relacional implementa estruturas de dados organizadas em
relaes ou tabelas. Porm, para trabalhar com essas tabelas, algumas restries
precisaram ser impostas para evitar aspectos indesejveis, como: Repetio de
informao, incapacidade de representar parte da informao e perda de
informao. Essas restries so: integridade referencial, chaves e integridade de
junes de relaes.
As ilustraes abaixo apresentam exemplos de tabelas sob o modelo
relacional.
MDICO
Cdigo do Mdico
1
2
3
4
Nome
Mauricio de Nassau
Jorge Amado
Paulo Coelho
Willian Bonner
PACIENTE
Cdigo do Paciente
1
2
3
4
Nome
Jabes Ribeiro
Vane do Renascer
Geraldo Simes
Capito Azevedo
MDICO
Cdigo do Mdico
1
1
2
4
Cdigo do Paciente
2
3
1
3
Especialidade
Cardiologia
Dermatologista
Cardiologia
Neurologista
Data
21/01/2013
21/01/2013
12/04/2012
27/05/2012
Hora
14:25
15:45
09:25
11:15
Pgina 5
1.2.
Pgina 6
Pgina 7
Pgina 8
2.
Modelagem de dados
Nome
Regilan Meira Silva
Aline Araujo Freitas
Joaquim Jos Pereira da Silva
Maria Aparecida Gomes da Costa
TELEFONES
Cdigo
1
1
3
4
Numero
(73)9158-9683
(71)3458-5112
(73)8874-9681
(77)8841-2563
Data de nascimento
13/02/1983
27/08/1986
12/05/1967
06/01/1995
Tipo
Celular
Residencial
Celular
Celular
Pgina 9
2.1.
Modelo Entidade-Relacionamento
Pgina 10
Pgina 11
Cardinalidade do relacionamento
Pgina 12
Pgina 13
brModelo 2.0
MySQL Workbench 5.2
Open ModelSphere 3.1
Devgems Data Modeler 1.4
Exerccios prticos
Pgina 14
Pgina 15
Pgina 16
Pgina 17
3.
nome
Luis Felipe Scolari
Fernando Henrique Cardoso
Dilma Rouseff
Paulo Henrique Ganso
sexo
M
M
F
M
estado_civil
Casado
Vivo
Divorciada
Solteiro
telefone
(81)5623-5475
(11)4126-1856
(33)2354-8962
(11)2653-4123
Pgina 18
A tabela Aluno possui cinco campos (atributos). Para cada campo existe um
conjunto de valores permitidos chamado domnio daquele atributo:
3.1.
Linguagem SQL
Pgina 19
Pgina 20
3.1.1.
Pgina 21
CREATE
campo1
campo2
campo3
TABLE nome_da_tabela(
Tipo,
Tipo,
Tipo)
matricula
nome
data_nasc
salario
Caracteres (Strings)
Numricos
Tempo e Data
TIPO DE DADOS
CHAR (n)
CHAR
VARCHAR (n)
BIT
NUMERIC
ou
NUMERIC (n) ou
DESCRIO
Tipo de dados STRING com comprimento fixo (n > 0)
Um nico caractere
Tipo de dados STRING com comprimento varivel (n > 0)
Valores True/False ou 0/1
Valor numrico constitudo por n dgitos e sinal e com d
casas decimais
Pgina 22
NUMEROC (n,d)
DATETIME
INTEGER ou INT
SMALLINT
FLOAT
DATE
TIME
Escrever um comando de SQL que permita criar uma tabela com o nome
Caixa_Postal, capaz de armazenar um inteiro de at quatro dgitos e uma
string com 45 caracteres
Escrever um comando de SQL que permita criar uma tabela com o nome
Pessoa, com o seguintes atributos: ID, Nome, Idade, Salario, Telefone e
Cdigo Postal)
Pgina 23
colunas, tais como: Que valores podem admitir? Qual o valor padro? O campo
representa um atributo identificador (chave primria)?
Na tabela caixa postal, apresentada anteriormente, estamos admitindo que
a tabela composta por duas colunas(cdigo e localidade) e que qualquer uma delas
pode admitir valores nulos(ou seja, o usurio poder informar dados vazios para os
campos).
Se quisermos que uma coluna no admita valores nulos, usamos a clusula
NOT NULL. Caso um valor no seja inserido em uma coluna o valor padro
(default) armazenado nela NULL. No entanto, possvel associar um outro valor
default atravs da clusula DEFAULT. Se quisermos, por exemplo, que a
localidade padro (default) se chame Ilhus ento teremos que fazer o seguinte:
Pgina 24
Tabela Paciente
Pgina 25
Exemplo:
DROP TABLE Dados_Pessoais
Pgina 26
Exemplos:
3.1.2.
Pgina 27
Recomendaes:
1. Selecione chaves primarias absolutamente disciplinada e que
permaneam nicas;
2. Selecione chaves primarias que no tenham qualquer tendncia a
alteraes;
3. Se possvel seleciona chaves primarias simples;
4. De preferncia a colunas numricas para chaves primarias;
5. Selecione chaves primarias que sejam familiares;
6. Se no houver nenhuma coluna com chave primaria candidata,
utilize chaves primarias atribudas pelo sistema (autonumerao).
Pgina 28
Pgina 29
Um para Um
Um para Vrios
Vrios para Vrios
entre
Aluno
Pgina 30
Pgina 31
Pgina 32
Pgina 33
3.2.
Normalizao
Est na 1FN
Todos os atributos no chave dependem da totalidade da chave.
Pgina 34
Exemplo:
Fatura (NumeroFatura,CodigoCliente, NomeCliente, Logradouro, Bairro,
Cidade, Cep)
Itens (NumeroFatura (PK), CodigoProduto(PK), DescricaoProduto,
Preco, Quantidade)
A tabela Itens no se encontra na 2FN porque os atributos
DescricaoProduto, Preco, Quantidade no dependem de CodigoFatura, mas
s de CodigoProduto.
Para fazer a passagem para a 2 FN ser necessrio: Separar a tabela Itens
em duas Tabelas: Itens e Produto.
Relao na 2 FN:
Fatura (NumeroFatura (PK),CodigoCliente, NomeCliente, Logradouro,
Bairro, Cidade, Cep)
Itens (NumeroFatura (PK), CodigoProduto (PK), Quantidade)
Produto (CodigoProduto (PK), DescricaoProduto,Preco)
Exemplo:
Pgina 35
Relao na 3 FN:
3.3.
Exerccios prticos
3.3.2. Biblioteca
Construa um banco de dados para um sistema de controle e gerenciamento
de emprstimos de livros de uma biblioteca acadmica conforme as caractersticas
abaixo:
Pgina 36
Cada ttulo pode ter vrios autores e um mesmo autor pode ter escrito
vrios ttulos. Um autor possue cdigo, nome, telefone e endereo.
As editoras possuem cdigo, nome, telefone e endereo.
As reas de conhecimento possuem cdigo e uma descrio.
Usurios, que podem ser alunos, professores ou funcionrios, tomam
livros emprestados por uma semana. A data de emprstimo importante
no processo. Cada usurio possui um cdigo, nome, telefone e endereo.
Cada ttulo possui vrias palavras-chave e uma palavra-chave pode estar
ligada a vrios ttulos. Uma palavra-chave possui cdigo e descrio.
Pgina 37
Pgina 38
3.3.7. Inscrio
Aplicar as Formas Normais cabveis para a situao abaixo:
Inscricao
(Codigo
Aluno
(PK),
NomeAluno,
Telefone,
AnoAdmisso,CodigoDisciplina, NomeDisciplina, NomeCurso, DataMatricula).
3.3.8. Paciente
Aplicar as Formas Normais cabveis para a situao abaixo:
Paciente
(num_paciente
(PK),
nome_paciente,
num_quarto,
descricao_quarto, num_comodos_quarto, cod_medico, nome_medico, fone_medico).
Pgina 39
4.
4.1.
Comando INSERT
Exemplos:
INSERT INTO Cliente(codigo,nome,sexo)
VALUES(200810, Regilan Meira, Masculino)
Pgina 40
4.2.
Comando UPDATE
Exemplos:
UPDATE
Pgina 41
Pgina 42
4.3.
Comando DELETE
Exemplos:
DELETE FROM ESCOLA
Pgina 43
4.4.
Comando SELECT
Exemplos:
SELECT codigo,aluno,media
FROM NOTAS
WHERE aluno = Tiago
SELECT matricula,nome,responsavel,data_nascimento,cpf,rg,
endereco,codigo_curso,observacoes FROM ALUNOS
WHERE nome = Camila
Situao 01: Escrever o comando SQL que permite obter o RG, Nome e o
Cdigo Postal de todos os clientes registrados no banco de dados.
SELECT Rg, Nome, CodigoPostal
FROM Cliente
Pgina 44
Pgina 45
Pgina 46
SELECT Nome,Salario
FROM Pessoa
ORDER BY Salario DESC
Situao 11: Selecionar da tabela Pessoa o Nome e a Idade que iro ter
daqui a dois anos. O resultado dever vir pela nova idade.
SELECT Nome, Idade + 2 as Nova_Idade
FROM Pessoa
ORDER BY Idade + 2
Pgina 47
Pgina 48
Situao 19: Qual o salrio mdio dos Funcionrios com mais de 40 anos.
SELECT AVG(Salario) AS Media_Salario
FROM Funcionario
WHERe Idade > 40
Pgina 49
Situao 21: Mostrar para cada funcionrio o valor total das vendas
realizadas.
SELECT Nome, Sum(Valor) AS Total_Vendas
FROM Vendas
GROUP BY Nome
4.4.1.
Pgina 50
O Inner Join (ligao entre tabelas), ocorre quando se juntam duas ou mais
tabelas, ligando-as atravs da Chave Primria de uma e da Chave Estrangeira da
outra. Num Inner Join so exibidos apenas os registros em que exista ligao entre
as tabelas. A juno de duas ou mais tabelas, feita atravs das chaves
estrangeiras, na clusula WHERE.
Considere o seguinte comando:
SELECT Pessoa.Nome,Postal.Cod_Postal,Postal.Localidade
FROM Pessoa,Postal
WHERE Pessoa.Cod_Postal = Postal.Codigo
Pgina 51
Pgina 52
Pgina 53
Pgina 54
4.5.
Exerccios prticos
a) Considere as seguintes tabelas:
Pgina 55
Mostre o nome do curso onde o nmero de vagas seja maior que 30,
ordenado pelo nmero de vagas em descendente
Apague todos os horrios da sala nmero 15
Coloque todos os cursos da sala 1 para a sala 14
Crie uma tabela chamada cidades com os campos codigo e nome
Mostre todos os dados da tabela instrutores
Apague a tabela criada anteriormente
Mostre a quantidade de vagas totais
Mostre a mdia de vagas
Mostre o menor nmero de vagas
Mostre o maior nmero de vagas
Pgina 56
Pgina 57
Pgina 58
5.
5.1.
GRANTE e REVOKE.
Pgina 59
SQL Server
ALTER USER Nome_do_usuario
WITH PASSWORD = Senha_do_usuario
SQL Server
DROP LOGIN Nome_do_usuario
PRIVILGIO
SELECT/SELECT (Lista)
INSERT/INSERT (Lista)
Apostila de banco de dados
http://www.regilan.com.br
DESCRIO
Permite selecionar todas as colunas de
uma tabela ou colunas especificas em
listas
Permite inserir registros em todas as
Pgina 60
UPDATE/UPDATE (Lista)
DELETE
REFERENCES/REFERENCES (Lista)
EXECUTE
ALL
Pgina 61
5.2.
UPDATE Tabela_Conta
SET Saldo = Saldo + 1000
WHERE Conta = Conta Pedro
UPDATE Tabela_Conta
SET Saldo = Saldo - 1000
WHERE Conta = Conta Joo
Pgina 62
BEGIN TRANSACTION
UPDATE funcionario SET salario = salario + salario*0.05
IF @@ERROR <> 0
ROLLBACK
ELSE
COMMIT
GO
Pgina 63
Pgina 64
6.
<?php
$link = mysql_connect('localhost' , root', ad$14B' );
if (!$link ) {
echo 'No foi possvel conectar: ' . mysql_error();
}
echo 'Conexo bem sucedida' ;
mysql_close( $link);
?>
Pgina 65
Pgina 66
<?php
while($linha = mysql_fetch_array($result)){
echo($linha[nome_do_campo].<br>);
}
?>
Pgina 67
PGINA: cadastrar_aluno.php
Este arquivo .php contm o formulrio para preenchimento de dados para
cadastrar um aluno.
Pgina 68
Pgina 69
PGINA: cadastrar_aluno_gravar.php
Este arquivo .php contm o cdigo de acesso ao banco de dados com o script
para gravao dos dados informados no formulrio web para cadastrar um aluno.
<body>
<?php
//cria um link de conexo com o MYSQL. passado para a
funo 3 parmetros, o primeiro o nome do servidor, em seguida o
nome do usurio e por ltimo a senha, que neste caso est vazia
$link = mysql_connect("localhost" , "root", "" );
//se o link com o servidor for realizado, ser selecionado
o banco de dados
if ($link ) {
//seleciona o banco de dados usado como exemplo: conexaophp
$db = mysql_select_db("conexaophp");
//se o banco de dados for selecionado corretamente, ser
executado o comando SQL para gravar no banco de dados os dados
vindos do formulrio cadastrar_aluno.php
if ($db) {
//as quatro vriaveis a seguir recebem os valores vindos do
formulrio anterior que so passados via mtodo POST
$nome=$_POST["nome"];
$sexo=$_POST["sexo"];
$datanascimento=$_POST[datanascimento];
$curso=$_POST[curso];
//consulta SQL se insero. OS campos que so varchar no
banco so passados como string, para isso usamos as aspas
simples
Pgina 70
PGINA: exibir_aluno.php
Este arquivo .php contm o cdigo de acesso ao banco de dados com o script
para seleo de dados e apresentao dos dados dos alunos em uma tabela html.
Pgina 71
<th>Curso</th>
</tr>
<?php
//cria um link de conexo com o MYSQL. passado para a
funo 3 parmetros, o primeiro o nome do servidor, em seguida o
nome do usurio e por ltimo a senha, que neste caso est vazia
$link = mysql_connect("localhost" , "root", "" );
//se o link com o servidor for realizado, ser selecionado
o banco de dados
if ($link ) {
//seleciona o banco de dados usado como exemplo: conexaopho
$db = mysql_select_db("conexaophp");
//se o banco de dados for selecionado corretamente, ser
executado o comando SQL para buscar os dados da tabela curso
if ($db) {
//executa o comando SQL para buscar os dados da tabela
curso e gravar na vriavel resultado.
$resultado = mysql_query("select aluno.nome,curso.curso
from aluno,curso where curso.idcurso = aluno.curso");
//a repetio abaixo usada para buscar cada linha de
dados gerado pelo resultado da consulta. Equanto houver linha de
dados, os dados sero lidos
//Para cada linha, gerado uma nova linha na tabela de
exibio dos dados. Cada coluna da linha, receber uma das
colunas do resultado da consulta em cada linha de dados.
while($linha = mysql_fetch_array($resultado)){
?>
<tr>
<td><?php echo($linha["nome"]);?></td>
<td><?php echo($linha["curso"]);?></td>
</tr>
<?php
}
}
}
?>
</body>
</html>
Pgina 72
7.
Para iniciar o acesso a dados com o Visual C# o primeiro passo definir qual
o SGBD que ser utilizado e tambm a biblioteca de dados, que depender do
SGBD definido.
Exemplos:
Access: OleDb
My SQL: MySQLClient
Nome
Celular
Pgina 73
OBS: Estes objetos devero ser criados no incio da classe do formulrio, para que
todos os eventos criados possam utilizar estes objetos, que nestes casos so
GLOBAIS para o formulrio ao qual eles foram criados.
SqlConnection conexao = new SqlConnection("string de conexo do banco de
dados");
SqlCommand comando = new SqlCommand();
Pgina 74
Pgina 75
Executar o comando
Inserir: INSERT
Atualizar: UPDATE
Excluir: DELETE
Pgina 76
Pgina 77
com a
Pgina 78
using
using
using
using
using
using
using
using
using
System;
System.Collections.Generic;
System.ComponentModel;
System.Data;
System.Drawing;
System.Linq;
System.Text;
System.Threading.Tasks;
System.Windows.Forms;
using System.Data.SqlClient;
namespace WindowsFormsApplication4
{
public partial class Form1 : Form
{
SqlConnection conexao = new SqlConnection("string de conexo do banco de
dados");
SqlCommand comando = new SqlCommand();
SqlDataAdapter adapter = new SqlDataAdapter();
DataSet ds = new DataSet();
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
preencheGrid();
}
private void button1_Click(object sender, EventArgs e)
{
comando.Connection = conexao;
comando.CommandText = "INSERT INTO Contato(Nome,Celular,Email)";
comando.CommandText += "values ('" + txtNome.Text + "', '" +
txtCelular.Text + "',";
comando.CommandText += "'" + txtEmail.Text + "')";
conexao.Open();
comando.ExecuteNonQuery();
conexao.Close();
preencheGrid();
Pgina 79
}
}
}
Pgina 80