Академический Документы
Профессиональный Документы
Культура Документы
Atributos
Os atributos são as menores unidades da estrutura de dados de uma aplicação. São os dados
elementares, aos quais é possível atribuir características.
Tabelas
São conjuntos de dados estruturados a partir dos atributos. As tabelas são acessadas através de
um ou mais atributos que os compõem, definido(s) como sua chave primária. Uma chave
especificada como primária não deve ser duplicada em um arquivo de dados. Já as chaves
especificadas como secundárias, que fornecem acessos alternativos aos dados, podem permitir
duplicação. As informações sobre chaves são geralmente armazenadas em um arquivo separado
do arquivo de dados, chamado arquivo de índice.
Nomes de arquivos de dados e de índices devem ser declarados de acordo com a regra de
formação de nomes de arquivos do Windows.
Banco de Dados
São coleções de dados (tabelas) inter-relacionados de forma a servir a uma ou mais aplicações. A
maioria dos bancos de dados atuais é relacional. Um banco de dados relacional armazena
informações em tabelas lógicas constituídas de linhas e colunas.
Relacionamentos
Definição de como duas tabelas de um determinado banco de dados se relacionam ou dependem
um do outro.
• Tabelas relacionadas
Um relacionamento é estabelecido entre duas tabelas, sendo uma delas a tabela-pai e a outra a
tabela-filho.
• Cardinalidade
A estrutura do relacionamento entre tabelas pode ser:
Exemplo:
Utilizando o Banco de Dados Paradox
Considerações:
Neste caso há relacionamento de 1 x N , ou seja, um registro da tabela CURSO (tabela-pai)
poderá relacionar-se com vários registros da tabela ALUNO (tabela-filho).
Considerações:
Neste caso há relacionamento de 1 x N , ou seja, um registro da tabela CURSO (tabela-pai)
poderá relacionar-se com vários registros da tabela DISCIPLINA (tabela-filho).
Vamos agora criar uma tabela com informações sobre a matrícula de alunos.
Considerações:
A chave primária é composta, ou seja, necessitamos do COD_ALUNO e COD_DISC para identificar
o registro.
Integridade Referencial
Não se pode eliminar um registro de uma tabela-pai caso haja registros relacionados em uma
tabela-filho.
Exemplo:
Tentar eliminar o registro de um curso, sem primeiro eliminar todas as disciplinas que pertençam
a este curso ou todos os registros de matrículas em disciplinas deste curso.
• Alpha (A) : Este tipo de campo pode armazenar uma string contendo qualquer um dos
seguintes caracteres: Letras, números e caracteres especiais da tabela ASCII. Pode
armazenar um máximo de 255 caracteres
• Number (N) : Este tipo de campo pode armazenar números variando de 10-307 até
10308 com 15 algarismos significativos
• Money ($) : Este tipo de campo pode armazenar números formatados para exibir um
símbolo monetário com um número de casas decimais a ser definido durante a criação da
tabela. Independentemente do número de casas decimais, o Database Desktop utiliza
sempre seis casas decimais nos cálculos internos com este tipo de campo.
• Short (S) : Este tipo de campo pode armazenar números inteiros entre -32768 e 32768.
• Long Integer (I) : Este tipo de campo pode armazenar números inteiros entre
-21474883648 e 21474883647.
• <BCD (Binary Coded Decimal - # ) : Este tipo de campo é usado para realizar cálculos
numéricos com uma precisão maior do que aquela efetuada com os demais tipos
númericos. A principal utilidade deste tipo de campo consiste em fornecer compatibilidade
com outras aplicações que usam dados deste tipo, pois no caso da utilização de tabelas
Paradox num aplicativo, só serão permitidos números com um máximo de 15 algarismos
significativos.
• Date (D) : Este tipo de campo pode armazenar datas variando de 1 de janeiro de 9999 AC
a 31 de dezembro de 9999 DC.
• Time (T) : Este tipo de campo pode armazenar um horário com a precisão de
milissegundos.
• Graphics (G) : Este tipo de campo pode armazenar imagens gráficas armazenadas em
arquivos do tipo BMP, PCX, GIF, TIF e EPS. Quando a imagem é armazenada em um
campo do tipo Graphics colando-a do Clipboard, ela é convertida no formato BMP. Este
tipo não requer a especificação de tamanho na coluna Size, pois o seu conteúdo não será
armazenado na tabela, mas em um arquivo separado. Campos do tipo Graphics não
podem ser editados pelo Database Desktop.
• Memo (M) : Este tipo de campo é usado para armazenar strings de texto que não cabem
num campo do tipo Alpha. O tipo de campo Memo pode ter, virtualmente, qualquer
comprimento (qualquer número de caracteres). O tamanho atribuído ao campo na coluna
Size especifica a quantidade de caracteres armazenados diretamente na tabela, podendo
variar de 1 a 240. Um arquivo com a extensão .MB completa a definição do campo. A
quantidade de caracteres que podem ser armazenados em um campo deste tipo só
depende do espaço disponível em disco. Este tipo de campo pode armazenar os mesmos
caracteres que os descritos no tipo Alpha e não pode ser editado pelo Database Desktop.
• Formatted Memo (F) : Este tipo de campo é identico ao anterior, exceto que o texto
armazenado pode ser formatado pelo Paradox. Campos do tipo Formatted Memo não
podem ser editados pelo Database Desktop.
• OLE (O) : Este tipo de campo pode armazenar diferentes tipos de dados, como imagens,
sons e documentos. O campo OLE não requer a especificação de tamanho na coluna Size,
pois o seu conteúdo não será armazenado na tabela, mas em um arquivo separado.
Campos OLE não podem ser editados pelo Database Desktop.
• Logical (L) : Este tipo de campo pode armazenar valores do tipo Verdadeiro (True) ou
Falso (False).
• Autoincrement (+) : Este tipo de campo armazena um inteiro longo que só pode ser lido
(e não editado). O Database Desktop inicializa este campo com o valor 1, incrementando-
o para cada novo registro adicionado à tabela. Você pode redefinir este valor mínimo
especificando o valor desejado na caixa de texto Minimum Value da caixa de dialógo
Create Paradox 7 Table. Entretanto, se você deletar um registro da tabela, o campo do
tipo Autoincrement dos demais registros não será atualizado, e o próximo registro
adicionado à tabela receberá, no campo do tipo Autoincrement, o valor igual ao valor
máximo já armazenado em um registro, acrescido de uma unidade, isto é, tudo se passa
como se nenhum registro houvesse sido deletado. Este tipo de campo não pode ser
editado pelo Database Desktop.
• Binary (B) : Este tipo de campo é usado para manipular dados que não podem ser
interpretados pelo Database Desktop, e só devem ser utilizados por usuários avançados.
Geralmente é utilizado no armazenamento de dados de áudio.
• Bytes (Y) : Este tipo de campo é usado para manipular dados que não podem ser
interpretados pelo Database Desktop, e só deve ser utilizado por usuários avançados.
Geralmente serve para o armazenamento de dados de código de barras.
<
Criação de tabelas.
Vamos criar duas tabelas e digitar alguns registros que nos permitirão nos próximos tópicos,
testar as sentenças SQL.
Basta pressionar a barra de espaço no campo Type para mostrar uma listagem dos tipos de
campos do Paradox.
Vale lembrar que para cada chave secundária é criado um arquivo de índice. Neste caso queremos
ordenar a nossa tabela de Alunos por ordem alfabética de NOME DO ALUNO e NOME DA CIDADE.
Nesse caso serão dois arquivos de índices.
Opções de indexação:
No nosso caso, vamos deixar marcada só a opção "Maintained". Clique em seguida em OK.
Aparecerá a seguinte tela. Você deverá fornecer o nome do arquivo de índice. Vamos digitar
INDNOME. Clique em OK.
Em seguida crie uma pasta "Mini-curso" abaixo da unidade "C:\". Neste momento será gravada a
tabela ALUNO e as tabelas de índices associadas, ou seja, INDNOME e INDCIDADE.
Criaremos agora uma tabela que permitirá armazenar os valores de mensalidades pagos pelo
aluno durante o semestre.
Seguindo o roteiro crie a tabela e grave com o nome de MENSALIDADE. Neste caso, não teremos
arquivos de índices secundários, pois não definimos nenhum campo para ser chave secundária.
Observe que a chave primária é composta, ou seja, são necessários os campos COD_ALUNO e
MES para formar a chave primária, pois o aluno paga 6 mensalidades. Neste caso o
relacionamento de ALUNO x MENSALIDADE é de 1 x N.
Antes definiremos no Database Desktop que a pasta "C:\Mini-curso" será o nosso diretório de
trabalho. Todas as operações de abrir e salvar já posicionarão automaticamente nesta pasta.
Vamos digitar alguns registros na tabela ALUNO. Para isso, clique no botão "Modo de Edição".
A tabela MENSALIDADE é filha da tabela ALUNO, ou seja, só existirá algum registro na tabela
MENSALIDADE se existir algum aluno cadastrado na tabela ALUNO.
Iremos entrar registros para a tabela MENSALIDADE. Não será necessário digitar o código do
aluno, pois já definimos um relacionamento com a tabela ALUNO.
No campo COD_ALUNO basta pressionar as teclas CONTROL-SPACE que aparecerá a tabela ALUNO
e poderemos selecionar para qual aluno entraremos os dados sobre a mensalidade. Definindo o
relacionamento o usuário só conseguirá entrar registros para a tabela MENSALIDADE, de alunos
que estejam cadastrados na tabela ALUNO.
Entraremos os seguintes registros para a tabela MENSALIDADE.
Para alterar um registro basta entrar no modo de edição, posicionar-se em um registro e alterar
as informações.
"Eu não posso eliminar registros de uma tabela-pai se existirem registros relacionados na tabela-
filho".
Aparecerá a seguinte tela. Selecione o campo COD_ALUNO e clique na seta para a direita. Em
seguida clique no nome da tabela "ALUNO.db" e seta para a esquerda. Lembrando que a definição
da integridade referencial só se dá através de campos do mesmo tipo e tamanho existentes nas
duas tabelas.
Clique em OK.
Você tem que dar um nome para a integridade referencial estabelecida. Daremos o nome de
INTMENSALIDADE, como mostrado na tela a seguir:
Clique em OK.
Agora tente eliminar algum registro na tabela ALUNO (utilize CONTROL-DELETE). Se existir algum
registro deste aluno na tabela MENSALIDADE você não vai conseguir.
Esta opção permite definir direitos e senhas para acesso à tabela. Os direitos que podem ser
definidos são:
4 - LINGUAGEM SQL
Introdução
SQL (Structured Query Language) é a linguagem comum de gerenciamento de bancos de dados.
Sua principal vantagem consiste em ser uma linguagem padronizada - o que faz com que um
mesmo conjunto comum de instruções SQL possa ser usado em todos os sistemas de
gerenciamento de bancos de dados compatíveis com a SQL.
A linguagem SQL foi criada nos anos 70 pela IBM, que estava preocupada em desenvolver um
método que permitisse mesmo a usuários sem conhecimento prévio de programação extrair e
exibir as informações desejadas de um banco de dados.
Uma consulta é uma pergunta que um aplicativo faz a um banco de dados e depois retorna
registros. As consultas retornam um conjunto de registros que satisfazem a alguns critérios e
contêm informações de campos selecionados. Ao falar sobre consultas, considere toda instrução
SQL como uma pergunta. O resultado conseguido é a resposta que o mecanismo de banco de
dados dá. Existem algumas instruções SQL que são simplesmente um comando: "Eu ordeno que
você crie uma tabela!" ou "Eu ordeno que você insira um registro!". Para estes comandos, você
não receberia um resultado. Entretanto, para perguntas ou consultas, um resultado é o conjunto
de registros retornados pelo mecanismo de banco de dados.
5 - SENTENÇAS SQL
Utilizaremos o Database Desktop para realizarmos consultas às tabelas criadas no item 3, ou seja,
tabela ALUNO e tabela MENSALIDADE. Para a construção e execução das consultas SQL
utilizaremos a seguinte opção do Database Desktop:
Atenção: Lembre-se de configurar como diretório de trabalho (File-Working Directory), a pasta
onde estão suas tabelas. Neste caso não é necessário abrir as tabelas.
Após escrever uma sentença SQL, para executá-la basta clicar no seguinte botão da barra de
ferramentas:
O asterisco indica que todos os campos devem ser retornados, e FROM <TABELA> permite que o
mecanismo de banco de dados saiba qual tabela consultar.
Experimente digitar a seguinte consulta e em seguida mande executar:
Além dos operadores lógicos =, > e < a linguagem SQL suporta também
um operador LIKE, que pode ser usado para procurar modelos em uma
string, um operador IN que determina se um valor está em um conjunto e
um operador BETWEEN que pode ser usado para determinar se um
campo está entre dois valores.
O operador LIKE é mais flexível do que o operador =, pois ele pode
realizar buscas de curinga poderosas. Os dois designadores de curinga
são os caracteres % (porcentagem) e _(sublinhado). O símbolo de
porcentagem designa todos os caracteres, e o sublinhado representa um
único caracter. Eles podem ser usados em conjunto.
Exemplos:
- Consulta que retorna os registros dos alunos cujos nomes começam com
a letra "M"
- Consulta que retorna os registros dos alunos cujos nomes começam com
a letra "M" e terminam com a letra "a"
- Consulta que retorna os registros dos alunos cujos nomes terminam com
a letra "a", com idade acima de 20 anos
- Consulta que retorna os registros dos alunos cujos nomes começam com
a letra "M" ou terminam com a letra "a", e com idade acima de 20 anos
Exemplos:
Exemplo:
Exemplo:
- Consulta que retorna os registros dos alunos que começam com a letra
"M", com idade entre 20 e 23 anos, em ordem alfabética pelo campo
CIDADE
ORDER BY CIDADE
ORDER BY COD_ALUNO
Exemplos:
- Consulta que retorna a soma das mensalidades pagas por cada aluno
(agrupadas por aluno)
GROUP BY MES
GROUP BY COD_ALUNO
Exemplo:
Exemplos:
GROUP BY COD_ALUNO
GROUP BY IDADE
Até agora realizamos consultas utilizando apenas uma tabela por vez.
As junções permitem que os dados de mais de uma tabela logicamente
relacionada sejam conectados. Quando juntamos duas tabelas é realizado
um produto cartesiano destas duas tabelas, ou seja, se a tabela 1 tem 5
registros e a tabela 2 tem 4 registros, a junção das duas tabelas terá 5 x 4
registros = 20 registros.
Exemplos:
O que aconteceu?
Exemplos:
Como não existem campos com os mesmos nomes nas duas tabelas, essa
consulta poderia ficar da seguinte forma:
Inserção de registros:
Atualização de registros:
WHERE <condição>
Exemplos:
UPDATE ALUNO
SET IDADE=25
WHERE CODIGO="5001005"
UPDATE ALUNO
Exclusão de registros:
WHERE <condição>
Exemplos:
WHERE CODIGO="5001005"
Criação de Tabelas:
CAMPO1 TIPO_DO_CAMPO1,
CAMPOn TIPO_DO_CAMPOn,
CODIGO CHARACTER(7),
NOME CHARACTER(30),
IDADE SMALLINT,
Exclusão de Tabelas:
Exemplos:
DROP TELEFONE
Índices
a) criação
b) exclusão
Exemplos:
ON ALUNO IDADE