26
Bases de dados: Introdução Carlos Santos LabMM 4 - NTC - DeCA - UA Aula 02, 19-02-2013

LabMM4 (T02 - 12/13) - Bases de dados

Embed Size (px)

Citation preview

Page 1: LabMM4 (T02 - 12/13) - Bases de dados

Bases de dados: Introdução

Carlos SantosLabMM 4 - NTC - DeCA - UAAula 02, 19-02-2013

Page 2: LabMM4 (T02 - 12/13) - Bases de dados

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,...

Page 3: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 4: LabMM4 (T02 - 12/13) - Bases de dados
Page 5: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 6: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 7: LabMM4 (T02 - 12/13) - Bases de dados

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)

Page 8: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 9: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 10: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 11: LabMM4 (T02 - 12/13) - Bases de dados

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)

Page 12: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 13: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 14: LabMM4 (T02 - 12/13) - Bases de dados

Como se representa

Diagramas ER

Page 15: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 16: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 17: LabMM4 (T02 - 12/13) - Bases de dados

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)

Page 18: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 19: LabMM4 (T02 - 12/13) - Bases de dados

Dados numéricos inteiros (MySQL)

BIGINT (8 Bytes)

• -9223372036854775808 … 9223372036854775807• 0 … 18446744073709551615

BOOL, BOOLEAN

• FALSE = 0, TRUE ≠ 0

Page 20: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 21: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 22: LabMM4 (T02 - 12/13) - Bases de dados

Dados Date e Time

TIME

• HH:MM:SS

YEAR (2|4)

• YY (1970-2069)• YYYY (1901-2155)

Page 23: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 24: LabMM4 (T02 - 12/13) - Bases de dados

Dados String

TINYTEXT

• 255 caracteres

TEXT

• 65535 caracteres

MEDIUMTEXT

• 16777215 caracteres

LONGTEXT

• 4294967295 caracteres

Page 25: LabMM4 (T02 - 12/13) - Bases de dados

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

Page 26: LabMM4 (T02 - 12/13) - Bases de dados

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