Você está na página 1de 22

Bases de dados

Normalização de uma base de dados

1
1.
2.

3.
4. Normalizar as relações (tabelas) e remover as
anomalias encontradas.
5.

2

Principal objetivos da Normalização:

• Melhorar a performance da BD.


(atualização/inserção/remoção de dados)


3


• A ordem dos campos dentro de uma tabela é indiferente.

1.

2.

3.

4. Boyce-Codd Normal Form (BCNF)

5.

6.

4

Não contém atributos compostos;

Não contém grupos repetitivos (atributos multivalor);

1.

2.

5
cod Nome Morada NIF
1 Ana Silva Av. 5 Outubro, nº 23, 1000-003 Lisboa 9685985
2 Artur Ribeiro Av. Da Liberdade, nº 145, 4000-010 9789685
Porto

cod nome rua nPort Cod_postal Desc_CPos NIF


a tal
1 Ana Silva Av. 5 Outubro 23 1000-003 Lisboa 9685985
2 Artur Av. Da 145 4000-010 Porto 9789685
Ribeiro Liberdade

Exemplo 2:

numero nome disciplina pais

15627 Ana Matemática Portugal


programação I
Bases de dados
1342 Rui Biologia Portugal
Matemática
6453 Neringa Base de dados Lituânia
programação I
Matemática

6
numero nome pais numeroAluno Disciplina
15627 Ana Portugal 15627 Matemática
1342 Rui Portugal 15627 programação I
6453 Neringa Lituania 15627 Bases de Dados
1342 Biologia
1342 Matemática
6453 Bases de Dados
6453 programação I
6453 Matemática

1.

2.

7
Base de dados

Exemplo: Suponha a seguinte tabela de encomendas a fornecedores


numEnc item Fornecedor Prod qtd preço
120 1 Empresa farinhas lda. FR1 20 2
120 2 Empresa farinhas lda. FR2 34 3
378 1 Açucares & adoçantes sa AC1 56 0,5
378 2 Açucares & adoçantes sa AD1 10 2,5

378 3 Açucares & adoçantes sa AC2 450 1,2

Na 2FN fica:
numEnc item Prod qtd preço
num fornecedor
120 1 FR1 20 2
Enc
120 2 FR2 34 3
120 Empresa farinhas lda.
378 1 AC1 56 0,5
378 Açucares & adoçantes sa
378 2 AD1 10 2,5
378 3 AC2 450 1,2 15

8
17

1.

2. Não existem dependências funcionais entre atributos não

9
19

10
Dade de dados
nome numBI Endereço Dt_nasc numD nomeDep GerenteBI
Emp ep
Ana 12121 aa@mail.pt 25-09-90 1 Vendas 1234
Rui 10232 rui@mail.pt 23-12-80 1 Vendas 1234
Marta 34334 mt@mail.pt 26-09-60 1 Vendas 1234
José 23323 ze@mail.pt 9-10-99 2 Marketing 6776
Rita 78787 rt@mail.pt 12-9-82 2 Marketing 6776

nome num Endereço Dt_nasc num


num nomeDep Geren
Emp BI Dep
teBI
Ana 12121 aa@mail.pt 25-09-90 1
1 Vendas 1234
Rui 10232 rui@mail.pt 23-12-80 1
2 Marketing 6776
Marta 34334 mt@mail.pt 26-09-60 1
José 23323 ze@mail.pt 9-10-99 2
rita 78787 rt@mail.pt 12-9-82 2

Dade de dados
Exemplo 2: Suponha a tabela de encomendas e fornecedores

numEnc codFrn Nome Fornecedor Rua cidade telef


120 10 Empresa farinhas lda. Rua desce Porto 96859
333 10 Empresa farinhas lda. Rua desce Porto 96859
450 20 Açucares & adoçantes Av. bonita Viana 87438
378 20 Açucares & adoçantes Av. bonita Viana 87438
780 20 Açucares & adoçantes Av. bonita Viana 87438

Na 3FN fica:
numEnc codFrn codFrn Nome Fornecedor Rua cidade telef
120 10 10 Empresa farinhas lda. Rua desce Porto 96859
333 10 20 Açucares & adoçantes Av. bonita Viana 87438
450 20
378 20
780 20 22

11
Databases

Exercício:

23

• O campo linha_fatura é composto por: código do produto,

12
Fatura(n_factura, data, total_fact, dados_cliente, {linha_factura})

Para ficar na 1FN é necessário decompor os atributos compostos em


atributos atómicos.

25

13
Linha_factura(n_factura, cod_produto, des_produto, Qtd, preço, valor,
valorIVA, total)

27

n_Fa Cod_pr Des_produto qtd preç valor valorI total


ct od o va
23 19 Arroz carolino 2 1,00 2,00 0,12 2,12
23 21 Azeite suave 4 3,00 12,00 0,72 12,72
23 42 Laranja algarve 2 1,50 3,00 0,18 3,18
24 21 Massa nacional 6 0,5 3,00 0,18 3,18
24 19 Arroz carolino 1 1,00 1 0,06 1,06
24 21 Azeite suave 2 3,00 6,00 0,36 6,36
24 42 Laranja algarve 2 1,50 3,00 0,18 3,18
25 19 Arroz carolino 2 1,00 2,00 0,12 2,12
25 21 Azeite suave 4 3,00 12,00 0,72 12,72

14
Base de dados

Na 2FN ficaria:
Linha_factura(num_factura, cod_produto, Qtd, preço, valor, IVA, total)
produto(cod_produto, des_produto, …);

N_f Cod_ qtd preço Valor Iva total


act prod
23 19 2 1,0 2,0 0,12 2,12 Cod_ Desc_prod
Prod
23 21 4 3,0 12,0 0,72 12,72
19 Arroz carolino
23 42 2 1,50 3,0 0,18 3,18
12 Azeite Alentejano
24 12 6 0,5 3,0 0,18 3,18
24 19 1 1,0 1 0,06 1,06 21 Massa nacional

24 21 2 3,0 6,0 0,36 6,36 42 Laranja algarve

24 42 2 1,50 3,0 0,18 3,18


25 19 2 1,0 2,0 0,12 2,12
25 21 4 3,0 12,0 0,72 12,72 29

15
31

Linha_factura(num_factura, cod_produto, Qtd, preço, IVA)

16
33

Forma Normal de Boyce-codd (FNBC)


17
35

Num_aluno Cod_formacao Cod_formador


23 01 05
24 01 05
56 01 05

BCFN
Num_aluno Cod_formacao
Cod_formacao Cod_formador
23 01
01 05
24 01
56 01

18

37

Exemplo: TrabalhosPraticos(projeto, aluno, sala)


Projeto Aluno
Projeto Aluno Sala P1 1245
P1 1245 S1 P1 3456
P1 3456 S1 4FN P2 7890
P1 1245 S2 P2 3590
P1 3456 S2
Projeto Sala
P2 7890 S3
P1 S1
P2 3590 S3
P1 S2
P2 7890 S2
P2 S3
P2 3590 S2
P2 S2

19

39

• se um fornecedor F fornece a componente C


• e se um projeto P encomenda a componente C

• então o fornecedor F fornece a componente C ao projeto P.

20
Objetivos da desnormalização:

41

1FN 2FN 3FN FNBC 4FN 5FN

- +
Relações
+ -
Redundância

21
Exercício:

43

Referências:
SQL Structured Query Language, 13ª edição,
Luís Damas,
FCA – Editora de Informática,
ISBN 978-972-722-443-2

Database System Concepts, 5th Edition


Abraham Silberschatz, Henry F. Korth and S. Sudarshan
McGraw Hill, 2005
ISBN 0-07-124476-X

44

22

Você também pode gostar