1. Bases de dados: Introdução
Carlos Santos
LabMM 4 - NTC - DeCA - UA
Aula 02, 19-02-2013
2. Bases de dados [1963]
O que é uma base de dados (BD)?
• Uma coleção de dados relacionados entre si.
Alguns exemplos de BDs?
• Cartões com informação sobre os livros de uma biblioteca
• Fichas dos pacientes de um médico
• Sistema informático com os dados académicos dos alunos da UA
Vantagens das BDs suportadas em sistemas informáticos?
• Rapidez no acesso aos dados
• Facilidade na gestão desses dados
• Selecionar, atualizar, adicionar e remover
• Outras: cópia, segurança,...
3. Sistemas de Gestão de Bases de Dados (SGBD)
Aplicações que permitem gerir as BDs e os dados que estas contêm
• MySQL
• PostgreSQL
• MS SQL Server / MS Access
• Oracle
Estruturam as BDs aí existentes, segundo um modelo
• “Ficheiros simples”
• Hierárquico (dados organizados em árvore – 1 pai/N filhos)
• Rede (dados organizados em rede – N pais/ N filhos)
• Relacional
• Orientado por objetos (métodos e propriedades)
• mais informação: http://en.wikipedia.org/wiki/Database_model
4.
5. Bases de Dados Relacionais
Edgar F. Codd (1923-2003) – “Pai” das BDs relacionais (BDR)
• “A relational Model of Data for Large Shared Data Banks” [1970] Propunha
uma nova teoria (essencialmente matemática) para representar estruturas
de dados
Em 1985 publicou dois artigos (Computerworld) que definiam as 12 regras
que um SGBD devia respeitar. (Conteúdo muito complexo!)
• Note that a view is theoretically updatable if there exists a time-independent algorithm for
unambiguously determining a single series of changes to the base relations that will have as their
effect precisely the requested changes in the view.
• mais informação: http://en.wikipedia.org/wiki/Codd%27s_12_rules
Christopher J. Date - foi um colaborador do Edgar F. Codd e é hoje um
dos autores mais importantes nesta área
6. Bases de Dados Relacionais
Modelo relacional
• Genericamente pode afirmar-se que se trata de um modelo baseado nas
relações (associações) existentes entre tabelas onde são armazenados os
dados
• No entanto, de acordo com o modelo de Codd, a definição de um modelo
relacional prende-se com o armazenamento dos próprios dados nas
tabelas
7. SGBDR e principais componentes
Sistema de Gestão de Bases de Dados Relacionais (SGBDR)
• SGBD que opera num modelo relacional
Alguns componentes de um SGBDR (como o MySQL)
• Tables (tabelas)
• Queries (consultas/questões)
• Views (vistas)
8. Tabelas: definição
Tabela
• Estrutura bidimensional fundamental no modelo relacional
• Armazena dados de uma entidade, nas suas linhas e colunas
Colunas
• Campos (atributos/propriedades) da entidade
Linhas
• Registos (instâncias) da entidade
9. Tabelas: exemplo
nMec Nome Apelido AnoEntradaUA DataNascimento
23594 João Gomes 2002 10-04-1978
34921 Lurdes Costa 2008 19-02-1980
33482 Manuel Martins 2007 23-03-1981
18923 Ana Lopes 1995 08-12-1977
10. Tabelas: estrutura
Armazenam dados com uma estrutura similar
nMec Nome Apelido AnoEntradaUA DataNascimento
23594 João Gomes 2002 10-04-1978
34921 Lurdes Costa 2008 19-02-1980
33482 Manuel Martins 2007 23-03-1981
18923 Ana Lopes 1995 08-12-1977
43002 Rua 5 Nr. 22, 3º 3810 Aveiro
UC Lab. Mult 5 BD 2011-2012 Carlos Santos
11. Tabelas: regras
Regra para a identificação das tabelas
• Nome único dentro da BD: “Aluno”, “Formando”
• Regras de case-sensitive dependem de SGBDR e possíveis
configurações: não arriscar e respeitar sempre o case!
• Plural ou singular? (Ex: Users.Name ou User.Name?)
Dicas para a identificação das colunas
• Os nomes das colunas (campos) não podem ser duplicados na mesma
tabela e devemos evitar utilizar palavras reservadas (user, date, login,
password, ...)
• Nome escrito no formato CamelCaps: DataNascimento (recomendação)
• Sempre sem espaços, acentos e outros caracteres especiais!
• Nome único para cada coluna (evita mais tarde o uso de ALIAS)
12. Query
Consulta/questão colocada ao SGBDR sobre os dados armazenados
numa BD que este contém
• Consulta/questão é processada pelo SGBDR que devolve depois o
resultado
• Nome e idade dos Caloiros de NTC em 2011/2012?
• Nome dos alunos de LabMM4 com nota final positiva ordenados por
nota final?
O resultado de uma query é também uma tabela que se designa por tabela
resposta
13. View
Permite a construção de uma tabela virtual na BD com os registos que
resultam do processamento de uma query
• O acesso a esses registos torna-se mais rápido e eficiente
• A tabela virtual é gerida automaticamente pelo SGBDR
• Podem fazer-se outras queries sobre uma view
15. Tipo de dados armazenados
Para cada coluna/campo de uma tabela
• Definir o tipo de dados que esta irá armazenar
• Disso dependerá a eficiência, o desempenho e a otimização da BD, das
tabelas e do acesso aos dados aí contidos
16. Tipo de dados armazenados
Escolher um tipo de dados que exija um menor espaço de
armazenamento em disco, mas que ainda assim, seja suficiente para
conter os dados pretendidos
• Armazenar o género de um paciente
• masculino/feminino ou 0/1 ou m/f?
Escolher um tipo de dados adequado à informação a armazenar
• Armazenar data de acordo com uma formatação específica
• YYYY-MM-DD ou YY-MM-DD?
Escolher um tipo de dados que permita restringir (quando apropriado) a
gama de valores passíveis de armazenamento
• Armazenar o departamento da UA, a partir dos elementos de uma lista
completa de departamentos da UA
• Armazenar o país a partir de uma lista de países
17. Tipos de dados no MySQL
Organização em 3 grupos principais
• Numeric
• Todo o tipo de valores numéricos
• Integer (inteiros) -> 2
• Floating point (números com parte decimal [, ou .]) -> 2.345
• ...
• Date and Time
• Dados relacionados com datas, horas, …
• String
• Sequência de caracteres, texto, símbolos (frases, palavras)
18. Dados numéricos inteiros (MySQL)
TINYINT (1 Byte)
• -128 … 127 ou 0 … 255
SMALLINT (2 Bytes)
• -32768 … 32767 ou 0 … 65535
MEDIUMINT (3 Bytes)
• -8388608 … 8388607 ou 0 … 16777215
INT (4 Bytes)
• -2147483648 … 2147483647 ou 0 … 4294967295
20. Dados numéricos com parte decimal (MySQL)
DECIMAL
• Número armazenado como String (texto)
DOUBLE
• -1,798E+308 … -2,225E-308
• 2,225E-308 … 1,798E+308
FLOAT
• -3,403E+38 … -1,175E-38
• 1,175E-38 … 3,403E+38
21. Dados Date e Time
DATE
• YYYY-MM-DD
DATETIME
• YYYY-MM-DD HH:MM:SS
TIMESTAMP (M)
• (14) YYYY-MM-DD HH:MM:SS
• (8) YYYY-MM-DD
• (4) YY-MM
• (2) YY
22. Dados Date e Time
TIME
• HH:MM:SS
YEAR (2|4)
• YY (1970-2069)
• YYYY (1901-2155)
23. Dados String
CHAR(M)
• (1-255) Sequência de caracteres de tamanho fixo
VARCHAR(M)
• Sequência de caracteres de tamanho variável
• Pode armazenar até um máximo de M caracteres
• Otimiza o espaço necessário ao armazenamento
24. Dados String
TINYTEXT
• 255 caracteres
TEXT
• 65535 caracteres
MEDIUMTEXT
• 16777215 caracteres
LONGTEXT
• 4294967295 caracteres
25. Dados String
Strings binárias
• Permitem armazenar ficheiros (imagens, sons, vídeos, etc) na BD
BLOB (Binary Large Object)
• Sequência de caracteres que codificam uma imagem, som
TINYBLOB - 255 caracteres
BLOB - 65535 caracteres
MEDIUMBLOB - 16777215 caracteres
LONGBLOB - 4294967295 caracteres
26. Dados String
Strings de elementos
• Definem uma gama de valores possíveis, para os dados a armazenar
ENUM (“elemento1”, “elemento2”,…,”elemento65535”)
• Armazena um elemento do conjunto
SET (“elemento1”, “elemento2”,…,”elemento64”)
• Armazena zero ou mais elementos do conjunto