SQL 6ª Ed.

Page 1


BASES DE DADOS (VISÃO GERAL)

O primeiro passo na criação de uma base de dados consiste no seu desenho lógico utilizando ferramentas de análise.

Neste processo, a fase inicial consiste em elaborar um esquema visual (normalmente utiliza-se o modelo entidade-associação) que represente a estrutura a implementar mais tarde como base de dados.

Este é um processo que se desenrola de forma transparente e independente da estrutura de base de dados ou do sistema gestor de base de dados que vier a ser adoptado.

Ora, no problema que nos foi apresentado, existem duas

entidades descritas no enunciado

Carro e Pessoa.

Carro

Pessoa

O passo seguinte consiste em estabelecer uma relação entre as duas entidades para que possamos relacionar os dados de uma com os dados da outra.

Carro

Usado por

Pessoa

A linha que une as duas entidades estabelece a relação entre elas.

Na realidade existem duas relações:

Entre carro e pessoa (usado por); Entre pessoa e carro (usa).

( ( sentido:

sentido: ) )

mas é costume optar por uma delas (pela mais óbvia).

O “pé de galo

Pessoa significa que um carro pode ser usado por mais do que uma pessoa. Como não existe pé de galo no lado da entidade Carro, quer isto dizer que, a cada pessoa, só está associado um carro. ” colocado no lado da entidade

Depois de identificadas as entidades e estabelecidas as respectivas relações, é necessário indicar que atributos vão fazer parte de cada uma delas, isto é, que dados fazem parte da definição da entidade Carro e da entidade Pessoa. e a implementação física da base de dados desse mesmo modelo, é natural que se opte por este modelo para fazer a Existindo uma relação quase directa entre o modelo relacional

 FCA - Editora de Informática

17


DESENHO DE BASES DE DADOS RELACIONAIS

Problema: Um código postal pode estar associado a quantas pessoas? Resposta: Várias, logo colocamos o pé-de-galo junto à entidade Pessoa. Tem

Pessoa

Postal

Problema: Um código postal tem que estar associado a alguém? Resposta: Não. Logo, não existe obrigatoriedade no lado da entidade Pessoa. Tem

Pessoa

Postal

Os atributos associados a cada uma das entidades irão ser: Postal(Código, Localidade) Pessoa(Id, Nome, Idade, Salário, Telefone, Cod_Postal)

Como existe uma relação do tipo 1:N entre as entidades Postal e Pessoa, a entidade do como atributo (chave estrangeira) a chave da entidade do lado 1 (Postal), para que a relação possa ser estabelecida. Assim, a relação entre as entidades é

lado N (Pessoa), recebe

estabelecida entre os atributos Código e Cod_Postal.

Vejamos agora as tabelas respectivas com alguns dados já carregados. ID

Nome

Idade

Salario

Telefone

Cod_Postal

42

António Dias

43

74000

789654

1500

5

Célia Morais

26

170000

123456

1100

32

Florinda Simões

35

147000

4000

37

Isabel Espada

28

86000

1100

49

José António

17

210000

14

Nascimento Augusto

35

220000

25

Paulo Viegas

32

95000

1500 456123

2300 1500

Exemplo de dados da tabela “Pessoa”

 FCA - Editora de Informática

115


SQL – STRUCTURED QUERY LANGUAGE

6.2 Ordenação por uma Coluna

A ordenação por coluna faz-se especificando, na cláusula ORDER BY, qual a coluna pela

qual se pretende ordenar.

Problema: Seleccionar todas as pessoas, ordenando o resultado pela Idade.

SELECT * FROM Pessoa ORDER BY Idade +----+-------------------+-------+-----------+----------+------------+ | Id | Nome | Idade | Salario | Telefone | Cod_Postal | +----+-------------------+-------+-----------+----------+------------+ | 49 | José António | 17 | 210000.00 | NULL | 1500 | | 5 | Célia Morais | 26 | 170000.00 | 123456 | 1100 | | 37 | Isabel Espada | 28 | 86000.00 | NULL | 1100 | | 25 | Paulo Viegas | 32 | 95000.00 | NULL | 1500 | | 32 | Florinda Simões | 35 | 147000.00 | NULL | 4000 | | 14 | Nascimento Augusto| 35 | 220000.00 | 456123 | 2300 | | 42 | António Dias | 43 | 74000.00 | 789654 | 1500 | +----+-------------------+-------+-----------+----------+------------+

Nota

Por defeito a ordenação é Ascendente.

Assim, o comando anterior é equivalente a:

SELECT * FROM Pessoa ORDER BY Idade ASC

Problema: Seleccionar o Nome e o Salário de todas as Pessoas, ordenando o resultado pelo Salário, de tal forma que os maiores ordenados fiquem no topo da lista. Resolução: Teremos que fazer uma selecção ordenada de registos em que a ordenação tem que ser feita descendentemente (DESC) de maneira que os maiores salários apareçam no topo da lista.

176

 FCA - Editora de Informática


CRIAÇÃO E MANUTENÇÃO DE TABELAS

12.5.3.3 Constraint UNIQUE A Constraint UNIQUE permite indicar que os valores dessa coluna não se podem repetir. Para garantir que não existem dados repetidos nessa coluna, os SGBDR criam, sobre cada uma das colunas UNIQUE, um índice único (a ver no próximo capítulo).

Numa tabela podem existir tantas colunas UNIQUE quantas forem necessárias.

CREATE TABLE Teste( Id Nome Telefone BI

INTEGER CHAR(60) CHAR(15), INTEGER

PRIMARY KEY, UNIQUE, UNIQUE)

O comando anterior poderia ser escrito da seguinte forma:

CREATE TABLE Teste( Id INTEGER PRIMARY KEY, Nome CHAR(60), Telefone CHAR(15), BI INTEGER, UNIQUE(Nome), UNIQUE(BI) )

Nota

Nem todos os sistemas implementam a característica UNIQUE da mesma

forma. Embora nenhum deles admita repetição de valores, a forma como os nulos são tratados pode ser diferente de sistema para sistema. Por exemplo, em Oracle é possível adicionar valores NULL repetidos numa coluna UNIQUE,

enquanto o MySQL e o SQL AnyWhere não aceita o valor NULL em campos UNIQUE.

Se necessário, é possível a especificação da Constraint UNIQUE relativa a duas ou mais colunas seguindo a forma apresentada. No exemplo seguinte, garante-se que não existem na tabela duas pessoas com o mesmo nome e apelido.

CREATE TABLE Teste( Id INTEGER PRIMARY KEY, Nome CHAR(50), Apelido CHAR(10), Telefone CHAR(15), BI INTEGER, UNIQUE(Nome,Apelido), UNIQUE(BI) )

 FCA - Editora de Informática

275


SQL E VISUAL BASIC

Fig. 17.13 - Ecrã de Gestão de Códigos Postais

No início do Form procede-se à declaração de um DataAdapter que irá fazer a ligação

física aos dados e de um DataSet que os irá suportar em termos aplicacionais.

Dim DA As New OleDbDataAdapter("SELECT * FROM Postal ", Conn) Dim DsPostal As New DataSet

No evento Load do form começamos por declarar um objecto do tipo CommandBuilder de modo a preencher os comandos INSERT, UPDATE e DELETE do DataAdapter. Private Sub fPostal_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cmd As New OleDbCommandBuilder(DA)

Depois procedemos ao preenchimento do DataSet e à associação da grelha ao DataSet. Try DsPostal.Clear() DA.Fill(DsPostal) DataGrid.DataMember = "Postal" DataGrid.DataSource = DsPostal.Tables(0) DataGrid.Refresh() Catch ex As Exception MsgBox(ex.Message) End Try End Sub

 FCA - Editora de Informática

389


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.