A maior rede de estudos do Brasil

Grátis
244 pág.
Desenvolvimento Web - MVC

Pré-visualização | Página 4 de 41

Editora aceita duas editoras com o mesmo
nome. Dessa forma, eventualmente, não conseguiríamos descobrir os dados corretos da editora de
um determinado livro. Para resolver esse problema, deveríamos criar uma restrição na tabela Editora
que proíba a inserção de editoras com o mesmo nome.
Para resolver esse problema no SQL Server Express, poderíamos adicionar a propriedade UNI-
QUE no campo nome da tabela Editora. Porém, ainda teríamos mais um problema. Na tabela Li-
vro, poderíamos adicionar registros vinculados a editoras inexistentes, pois não há nenhuma relação
explícita entre as tabelas. Para solucionar esses problemas, devemos utilizar o conceito de chave
primária e chave estrangeira.
Toda tabela pode ter uma chave primária, que é um conjunto de um ou mais campos que de-
vem ser únicos para cada registro. Normalmente, um campo numérico é escolhido para ser a chave
primária de uma tabela, pois as consultas podem ser realizadas com melhor desempenho.
Então, poderíamos adicionar um campo numérico na tabela Editora e torná-lo chave primária.
Vamos chamar esse campo de id. Na tabela Livro, podemos adicionar um campo numérico chamado
editora_id que deve ser utilizado para guardar o valor da chave primária da editora correspondente
ao livro. Além disso, o campo editora_id deve estar explicitamente vinculado com o campo id da
tabela Editora. Para estabelecer esse vínculo, o campo editora_id da tabela Livro deve ser uma chave
estrangeira associada à chave primária da tabela Editora.
Uma chave estrangeira é um conjunto de uma ou mais colunas de uma tabela que possuem va-
lores iguais aos da chave primária de outra tabela.
Com a definição da chave estrangeira, um livro não pode ser inserido com o valor do campo
editora_id inválido. Caso tentássemos fazer isso, obteríamos uma mensagem de erro.
Exercícios de Fixação
1 Abra o Microsoft SQL Server Management Studio Express utilizando NOME_DA_MAQUINA
SQLEXPRESS como Server Name, SQL Server Authentication como Authentication, sa como Login
e sa como Password.
10 www.k19.com.br
11 BANCO DE DADOS
2 Caso exista uma base de dados chamada Livraria, remova-a conforme a figura abaixo:
www.facebook.com/k19treinamentos 11
BANCO DE DADOS 12
3 Crie uma nova base de dados chamada livraria, conforme mostrado na figura abaixo. Você vai
utilizar esta base nos exercícios seguintes.
12 www.k19.com.br
13 BANCO DE DADOS
4 Crie uma tabela chamada Editoras conforme as figuras abaixo.
www.facebook.com/k19treinamentos 13
BANCO DE DADOS 14
Altere os campos para torná-los obrigatórios, NÃO permitindo que eles fiquem em branco NU LL.
Além disso o campo Id deve ser uma chave primária.
14 www.k19.com.br
15 BANCO DE DADOS
O campo Id dever ser incrementado automaticamente. Defina ele com a propriedade Identity
segundo a figura abaixo:
5 Crie uma tabela chamada Livros conforme as figuras abaixo:
www.facebook.com/k19treinamentos 15
BANCO DE DADOS 16
Lembrando de NÃO marcar a opção ALLOW NULL. Além disso o campo Id deve ser uma chave
primária e automaticamente incrementada.
Você precisa tornar o campo EditoraId uma chave estrangeira. Clique com o botão direito sobre
a coluna EditoraId e selecione a opção Relantioships..., conforme a figura abaixo:
16 www.k19.com.br
17 BANCO DE DADOS
Devemos acrescentar o relacionamento entre livro e editora. Clique em Add e posteriormente no
botão à direita na linha Tables and Columns Specification.
Devemos informar qual é a chave primária que a coluna EditoraId da tabela Livros faz referência.
www.facebook.com/k19treinamentos 17
BANCO DE DADOS 18
Para isto, informe a tabela Editoras como Primary Key Table e indique a coluna Id como a chave
primária referenciada. Selecione a coluna EditoraId como a coluna que irá fazer referência a chave
primária da tabela Editoras.
6 Adicione alguns registros na tabela Editoras. Veja exemplos na figura abaixo:
Adicione alguns registros na tabela Livros. Veja exemplos na figura abaixo:
18 www.k19.com.br
19 BANCO DE DADOS
7 Consulte os registros da tabela Editoras, e em seguida consulte a tabela Livros. Veja exemplos
logo abaixo:
www.facebook.com/k19treinamentos 19
BANCO DE DADOS 20
8 Altere alguns dos registros da tabela Livros. Veja o exemplo abaixo:
9 Altere alguns dos registros da tabela Editoras. Veja o exemplo abaixo:
20 www.k19.com.br
21 BANCO DE DADOS
10 Remova alguns registros da tabela Livros. Veja o exemplo abaixo:
11 Remova alguns registros da tabela Editoras. Preste atenção para não remover uma editora que
tenha algum livro relacionado já adicionado no banco. Veja o exemplo abaixo:
www.facebook.com/k19treinamentos 21
BANCO DE DADOS 22
12 Faça uma consulta para buscar todos os livros de uma determinada editora. Veja um exemplo
na figura abaixo:
22 www.k19.com.br
ADO.NET
C
A
P
Í
T
U
L
O
2
No capítulo anterior, aprendemos que utilizar bancos de dados é uma ótima alternativa para
armazenar os dados de uma aplicação. Entretanto, você deve ter percebido que as interfaces dispo-
níveis para interagir com o SQL Server Express não podem ser utilizadas por qualquer pessoa. Para
utilizá-las, é necessário conhecer a linguagem SQL e os conceitos do modelo relacional. Em geral, as
interfaces dos outros SGDBs exigem os mesmos conhecimentos.
SELECT * FROM tbl_funcionarios WHERE
nome LIKE ‘%jonas%’;
INSERT INTO tbl_funcionarios (nome, 
codigo, salario) VALUES (’Rafael’, 1234,
1000);
Figura 2.1: Usuários comuns não possuem conhecimento sobre SQL ou sobre o modelo relacional
Para resolver esse problema, podemos desenvolver aplicações com interfaces que não exijam co-
nhecimentos técnicos de SQL ou do modelo relacional para serem utilizadas. Dessa forma, usuários
comuns poderiam manipular as informações do banco de dados através dessas aplicações. Nessa
abordagem, os usuários interagem com as aplicações e as aplicações interagem com os SGDBs.
www.k19.com.br
Cadastro de Funcionários
Nome:
Código:
Salário:
Figura 2.2: Usuários comuns devem utilizar interfaces simples
www.facebook.com/k19treinamentos 23
ADO.NET 24
Driver
As aplicações interagem com os SGDBs através de troca de mensagens. Os SGDBs definem o formato
das mensagens. Para não sobrecarregar o canal de comunicação entre as aplicações e os SGDBs, as
mensagens trocadas devem ocupar o menor espaço possível. Geralmente, protocolos binários são
mais apropriados para reduzir o tamanho das mensagens e consequentemente diminuir a carga do
canal de comunicação. Por isso, os SGDBs utilizam protocolos binários.
getTransaction
begin
commit
rollback
persist
getReference
�nd
10110
111000
10010
Figura 2.3: Diminuindo o tamanho das mensagens para não sobrecarregar o meio de comunicação
Mensagens binárias são facilmente interpretadas por computadores. Por outro lado, são com-
plexas para um ser humano compreender. Dessa forma, o trabalho dos desenvolvedores seria muito
complexo, aumentando o custo para o desenvolvimento e manutenção das aplicações.
1011010111
0010110001
1010111101
0111011100
0101101001
1101011101
0010110011 1011010111
0010110001
1010111101
0111011100
0101101001
1101011101
0010110011
1011010111
0010110001
1010111101
0111011100
0101101001
1101011101
0010110011
Figura 2.4: Mensagens binárias são altamente complexas para os seres humanos
Para resolver esse problema e facilitar o desenvolvimento das aplicações, as empresas proprietá-
24 www.k19.com.br
25 ADO.NET
rias dos SGDBs, normalmente, desenvolvem e distribuem drivers de conexão. Um driver de conexão
atua como um intermediário entre as aplicações e os SGDBs.
Os drivers de conexão são “tradutores” de comandos escritos em uma determinada linguagem
de programação para comandos definidos de acordo com o protocolo de