Você está na página 1de 11

Rodrigues Enoque Massíngue

Resoluçao da Ficha de Exercicios de PBD

Licenciatura em Informática

3º Ano - Laboral

Docente: Msc. Eugenio Macumbe

Universidade Pedagógica de Maputo

Maputo 2024
Parte I

1. A disciplina de Tecnologia de Base de Dados abordou os conceitos relacionados à Teoria de


Base de Dados e de forma a criar condições para melhor compreensão dos tópicos relacionados
com a disciplina Práticas de Base de Dados, defina e responda:

Uma Base de Dados é um conjunto organizado de dados, disponível a todos os utilizadores ou


processamentos da organização que deles tenham necessidade.

a) Base de Dados Distribuída e diferença com Base de Dados Centralizada.

Por definição, uma base de dados distribuída é um sistema de base de dados cujos dados se
encontram fisicamente dispersos por vários servidores, ligados por meios de comunicação, mas
integrados logicamente

b) Base de Dados Relacionais

Uma Base de Dados Relacionais é um tipo de base de dados que organiza os dados em tabelas
com linhas e colunas, onde as informações são armazenadas e relacionadas entre si por meio
de chaves primárias e estrangeiras. Este modelo de base de dados permite a manipulação dos
dados de forma eficiente e segura, garantindo a integridade das relações entre as tabelas. As
consultas são feitas por meio da linguagem SQL (Structured Query Language) para acessar,
atualizar e gerenciar os dados de forma consistente. iógicaegistromazenados no banco de
dados.

c) Conceito de relação e tabela

Relsção é a ligação ou conexão que existe entre elementos, entidades ou variáveis. No contexto
de banco de dados, uma relação se refere à ligação entre diferentes tabelas que compartilham
informações com base em chaves primárias e estrangeiras.

Uma tabela, por sua vez, é uma estrutura de dados organizada em linhas e colunas que
armazena informações sobre entidades, objetos ou conceitos. Cada linha representa um registro
individual e cada coluna representa um atributo específico desse registro.

Portanto, no contexto de banco de dados, uma relação é a conexão lógica entre diferentes
tabelas, estabelecida por meio de chaves primárias e estrangeiras que relacionam os registros
em uma tabela com os registros em outra tabela. Essas relações são essenciais para garantir a
integridade e consistência dos dados armazenados no banco de dados.

d) Atributo

Atributos: São propriedades usadas para descrever uma entidade/relacionamento.

e) Conceito de Túpla(o)
f) Conceito de chave

Identificador (chave) - Atributo ou combinação de atributos que identifica univocamente uma


instância da entidade

g) Tipo de chaves e suas relações

Existem diferentes tipos de chaves que podem ser usadas em um banco de dados relacional.
Aqui estão os principais tipos de chaves e suas relações:

1. Chave primária (Primary Key):

- Identifica exclusivamente cada registro em uma tabela.

- Não pode conter valores nulos.

- Pode haver apenas uma chave primária em uma tabela.

2. Chave estrangeira (Foreign Key):

- Estabelece uma relação entre duas tabelas.

- A chave estrangeira em uma tabela faz referência à chave primária em outra tabela.

- Garante a integridade referencial entre as tabelas.

3. Chave candidata (Candidate Key):

- São chaves potenciais que podem ser usadas como chave primária.

- Não contêm valores duplicados.

- Pode haver várias chaves candidatas em uma tabela.

4. Chave única (Unique Key):

- Garante que os valores em uma coluna sejam únicos.

- Pode aceitar valores nulos, mas apenas um valor nulo é permitido. - Pode haver várias
chaves únicas em uma tabela.

5. Chave composta:

- Uma chave composta é uma combinação de duas ou mais colunas que juntas formam uma
chave única.
- Pode ser usada como chave primária ou chave estrangeira, dependendo da necessidade.

As relações entre essas chaves em um banco de dados são fundamentais para garantir a
integridade dos dados e a consistência das operações de manipulação. A chave primária é
fundamental para identificar unicamente cada registro, enquanto as chaves estrangeiras
garantem a integridade referencial entre as tabelas. As chaves candidatas e únicas são usadas
para garantir que não haja duplicação de valores em determinadas colunas.

h) Sistema de Gestão de Base de Dados (SGBD). Exemplos

Sistema de Gestão de Bases de Dados (SGBD): é um software com recursos específicos para
facilitar a manipulação das informações das Bases de dados e o desenvolvimento de
aplicativos. Exemplos: Oracle, Ingres, Paradox, Access, DBase, MS SQL Server, MySQL
Server, PostGreSQL, MariaDB, DB2, etc

i) Linguagem SQL
j) Categorias da Linguagem SQL e comandos

As categorias da linguagem SQL são:

DDL (Data Definition Language): utilizada para criar, alterar ou excluir estruturas de banco de
dados, como tabelas, índices, visões, procedimentos armazenados, etc. Exemplos de comandos
DDL incluem CREATE, ALTER e DROP.

DML (Data Manipulation Language): utilizada para manipular os dados armazenados nos
objetos do banco de dados, como inserir, atualizar, excluir e recuperar registros em tabelas.
Exemplos de comandos DML incluem SELECT, INSERT, UPDATE e DELETE.

DCL (Data Control Language): utilizada para definir permissões de acesso e controle de
segurança no banco de dados. Exemplos de comandos DCL incluem GRANT e REVOKE.

DQL (Data Query Language): utilizada para consultar e recuperar dados de tabelas do banco
de dados. O principal comando da categoria DQL é o SELECT.

Além dessas categorias, existem diversos comandos específicos da linguagem SQL, tais como
JOIN, ORDER BY, GROUP BY, HAVING, BETWEEN, LIKE, etc. Cada um desses
comandos possui uma função específica para manipular e consultar os dados armazenados no
banco de dados.

Parte II

Leia atentamente as questões que se seguem e responde-as de forma clara e objectiva!

I.Que critérios são usados para classificar os Sistemas de Gestão de Base de Dados e mencione
para cada critério os diferentes tipos.
Modelo de Dados: Relacional , Orientado a Objecto ,Hierárquico e Rede (legacy) , Native,
XML DBMS

Número de utilizadores : Single-user , Multiuse

Tipo de Implementação (number of sites) : Centralizada ,Distribuída,Homogénea,


Heterogénea •

Custo: Grátis (Free e normalmente Open source) ,Diferentes tipos de licenciamento (Different
types of licensing

II. Defina os conceitos de relação, atributo e túpla(o).

- Relação: Uma relação em bancos de dados é uma estrutura que organiza dados em linhas e
colunas, semelhante a uma tabela. Cada linha na relação representa um registro ou instância de
dados, e cada coluna representa um atributo específico desse registro. As relações são usadas
para armazenar e organizar dados de forma eficiente para consulta e manipulação.

- Atributo: Um atributo é uma característica específica ou propriedade de um objeto ou entidade


em um banco de dados. Em uma relação, os atributos são representados por colunas que
descrevem informações relacionadas a cada registro. Por exemplo, em uma relação de clientes,
os atributos podem incluir nome, endereço, telefone, e-mail, etc.

- Tupla: Uma tupla, também conhecida como linha, é um conjunto ordenado de valores que
representa um registro único em uma relação. Cada tupla em uma relação corresponde a um
registro específico e contém valores para cada atributo da relação. Por exemplo, em uma
relação de alunos, uma tupla pode representar as informações de um aluno específico, como
nome, matrícula, curso, etc.

III. Um dos conceitos fundamentais no contexto do Modelo Relacional é o conceito de chave.

a)Qual é a relação existente entre super chave -> chave candidata e chave primária -> chave
estrangeira.

A relação existente entre super chave -> chave candidata e chave primária -> chave estrangeira
é que a chave primária em uma tabela pode ser utilizada como chave estrangeira em outra
tabela para estabelecer uma relação entre essas tabelas. As chaves candidatas e super chaves
são utilizadas para garantir a integridade e unicidade dos dados em uma tabela.

IV.O que cada etapa do processo de normalização resolve? (Fundamente até a 3FN).

1NF (Primeira Forma Normal): Esta etapa resolve a questão da atomicidade dos atributos, ou
seja, cada coluna da tabela deve conter apenas um valor e não múltiplos valores. Isso elimina
a repetição de dados e facilita a recuperação e manipulação das informações.
2NF (Segunda Forma Normal): Nesta etapa, a normalização busca resolver a dependência
parcial dos atributos, garantindo que cada atributo da tabela dependa completamente da chave
primária. Isso ajuda a evitar anomalias de atualização e inserção de dados na tabela.

3NF (Terceira Forma Normal): A normalização até a 3FN busca eliminar a dependência
transitiva dos atributos, garantindo que um atributo não dependa de outro que não seja a chave
primária. Isso ajuda a garantir a integridade dos dados e facilita a manutenção e evolução do
banco de dados.

V. Defina atributo multi-valor e ilustre como este tipo de atributo é representado no


diagrama ER.

Parte III

Dadas as afirmações abaixo, para cada afirmação diga se é Verdadeira (V) ou Falsa (F)
i Chaves candidatas são usadas para relacionar duas entidades. F
ii O esquema de uma relação é constituído por um ou mais atributos que traduzem o
tipo de dados a armazenar. V
iii O domínio de um atributo traduz a quantidade de tuplas que uma relação poderá
suportar. F
iv Uma das vantagens dos SGBD é a existência de uma interface lógica entre dados e
aplicações que permite com que as aplicações acedam directamente aos dados da
base de dados. V
v Cardinalidade de uma relação é o número de colunas que compõem a relação. F
vi O modelo relacional, em rede, hierárquico e Entidade-relacionamento representam
Modelos
Base de Dados orientados à registos. F
vii Na modelação o paradigma Top-Down prevê o uso da normalização. V
viii Em Base de Dados 0 (zero) é equivalente a Nulo (Null). F
ix O modelo Relacional foi proposto por Peter Chen. F
x Modelos conceituais são utilizados para se descrever a estrutura de uma Base de
dados de uma forma mais próxima da percepção dos usuários (independente de
aspectos de implementação).
xi A Projecção é uma operação onde o esquema da relação resultante se reduz a lista
de atributos que constam no predicado. F
xii Uma base de dados em Rede é semelhante a uma base de dados Hierárquica. No
entanto, enquanto que uma base de dados em Rede tem apenas um-para-muitos
relacionamentos entre entidades, uma base de dados hierárquica permite
relacionamentos muitos -para-muitos. F
xiii O maior motivo em usar uma Base de Dados Relacional no lugar de Bases de Dados
NoSQL é poder-se manipular dados não estruturados com flexibilidade e com maior
garantia na performance. F
xiv Neo4j é um exemplo de um Sistema de Gestão de Base de Dados orientado à
Documentos. F
xv No processo de conversão dos diagramas E-R em relações, cada relacionamento é
convertido para relação. F
xvi SQL é a linguagem universal para manipulação de Base de Dados Relacionais. V
xvii Em Álgebra Relacional a operação de União só pode ser executada em relações que
possuam o mesmo número de túplo(a)s. V

Parte IV

Com base na linguagem SQL, responda as seguintes questões.

1) Dada a base de dados da UniversidadeABC composta pelas seguintes


tabelas:

Faculdade(cod_faculdade, designacao, avenida, nr, telefone, email);

Curso(cod_curso, nomeCurso, cod_faculdade);

Disciplina(cod_disciplina, nomed);

Curriculo (cod_curso, cod_disciplina, semestre, ano, nr_creditos);

GrauAcademico (cod_grau, nome_grau);

DocumentoIdentificação (cod_doc, designacao_documento);

Docente (cod_docente, apelido, primeiros_nomes, data_nascimento,


email, telefone, cod_documento, validade_documento, cod_grau,
cod_faculdade);

Estudante(cod_estudante, apelido, primeiros_nomes, contacto, email,


rua_avenida, bairro, quarteirao, casanr, cod_documento,
validade_documento, cod_curso);

Turma(cod_turma, ano_curso, semestre, ano_academico, cod_curso);

Pauta(cod_estudante, cod_disciplina, cod_turma, teste1, teste2, trab1, trab2, media,


cod_docente);

a) Crie a Base de Dados UniversidadeSABER e sobre a base de dados as tabelas acima


indicadas.

CREATE DATABASE UniversidadeSABER;

CREATE TABLE Faculdade ( cod_faculdade INT PRIMARY KEY, designacao VARCHAR(50),


avenida VARCHAR(50), nr INT, telefone VARCHAR(20), email VARCHAR(50) );
CREATE TABLE Curso ( cod_curso INT PRIMARY KEY, nomeCurso VARCHAR(50),
cod_faculdade INT, FOREIGN KEY (cod_faculdade) REFERENCES Faculdade(cod_faculdade) );

CREATE TABLE Disciplina ( cod_disciplina INT PRIMARY KEY, nomed VARCHAR(50) );

CREATE TABLE Curriculo ( cod_curso INT, cod_disciplina INT, semestre INT, ano INT,
nr_creditos INT, PRIMARY KEY (cod_curso, cod_disciplina), FOREIGN KEY (cod_curso)
REFERENCES Curso(cod_curso), FOREIGN KEY (cod_disciplina) REFERENCES
Disciplina(cod_disciplina) );

CREATE TABLE GrauAcademico ( cod_grau INT PRIMARY KEY, nome_grau VARCHAR(50) );

CREATE TABLE DocumentoIdentificacao ( cod_doc INT PRIMARY KEY, designacao_documento


VARCHAR(50) );

CREATE TABLE Docente ( cod_docente INT PRIMARY KEY, apelido VARCHAR(50),


primeiros_nomes VARCHAR(50), data_nascimento DATE, email VARCHAR(50), telefone
VARCHAR(20), cod_documento INT, validade_documento DATE, cod_grau INT, cod_faculdade
INT, FOREIGN KEY (cod_documento) REFERENCES DocumentoIdentificacao(cod_doc),
FOREIGN KEY (cod_grau) REFERENCES GrauAcademico(cod_grau), FOREIGN KEY
(cod_faculdade) REFERENCES Faculdade(cod_faculdade) );

CREATE TABLE Estudante ( cod_estudante INT PRIMARY KEY, apelido VARCHAR(50),


primeiros_nomes VARCHAR(50), contacto VARCHAR(20), email VARCHAR(50), rua_avenida
VARCHAR(50), bairro VARCHAR(50), quarteirao VARCHAR(10), casanr VARCHAR(10),
cod_documento INT, validade_documento DATE, cod_curso INT, FOREIGN KEY (cod_documento)
REFERENCES DocumentoIdentificacao(cod_doc), FOREIGN KEY (cod_curso) REFERENCES
Curso(cod_curso) );

CREATE TABLE Turma ( cod_turma INT PRIMARY KEY, ano_curso INT, semestre INT,
ano_academico INT, cod_curso INT, FOREIGN KEY (cod_curso) REFERENCES Curso(cod_curso)
);

CREATE TABLE Pauta ( cod_estudante INT, cod_disciplina INT, cod_turma INT, teste1 FLOAT,
teste2 FLOAT, trab1 FLOAT, trab2 FLOAT, media FLOAT, cod_docente INT, PRIMARY KEY
(cod_estudante, cod_disciplina, cod_turma), FOREIGN KEY (cod_estudante) REFERENCES
Estudante(cod_estudante), FOREIGN KEY (cod_disciplina) REFERENCES
Disciplina(cod_disciplina), FOREIGN KEY (cod_turma) REFERENCES Turma(cod_turma),
FOREIGN KEY (cod_docente) REFERENCES Docente(cod_docente) );

b) Insira dados fictícios nas tabelas, pelo menos 3 registos por tabela.

INSERT INTO Faculdade VALUES (1, 'Faculdade de Engenharia', 'Rua 25 de Abril', 123,
'123456789', 'feng@universidadeabc.pt');
INSERT INTO Faculdade VALUES (2, 'Faculdade de Ciências Sociais', 'Avenida da Liberdade', 456,
'987654321', 'fcs@universidadeabc.pt');

INSERT INTO Faculdade VALUES (3, 'Faculdade de Economia', 'Rua do Comércio', 789,
'456123789', 'feconomia@universidadeabc.pt');

INSERT INTO Curso VALUES (1, 'Engenharia Civil', 1);

INSERT INTO Curso VALUES (2, 'Sociologia', 2);

INSERT INTO Curso VALUES (3, 'Economia', 3);

INSERT INTO Disciplina VALUES (1, 'Matemática');

INSERT INTO Disciplina VALUES (2, 'Sociologia Geral');

INSERT INTO Disciplina VALUES (3, 'Economia Politica');

INSERT INTO Curriculo VALUES (1, 1, 1, 2021, 6);

INSERT INTO Curriculo VALUES (2, 2, 2, 2021, 5);

INSERT INTO Curriculo VALUES (3, 3, 1, 2021, 4);

INSERT INTO GrauAcademico VALUES (1, 'Licenciatura');

INSERT INTO GrauAcademico VALUES (2, 'Mestrado');

INSERT INTO GrauAcademico VALUES (3, 'Doutoramento');

INSERT INTO DocumentoIdentificação VALUES (1, 'Cartão de Cidadão');

INSERT INTO DocumentoIdentificação VALUES (2, 'Passaporte');

INSERT INTO DocumentoIdentificação VALUES (3, 'Bilhete de Identidade');

INSERT INTO Docente VALUES (1, 'Silva', 'João', '1990-05-15', 'joao.silva@universidadeabc.pt',


'912345678', 1, '2025-05-15', 1, 1);

INSERT INTO Docente VALUES (2, 'Santos', 'Marta', '1985-10-20',


'marta.santos@universidadeabc.pt', '987654321', 2, '2023-10-20', 2, 2);

INSERT INTO Docente VALUES (3, 'Ferreira', 'Rui', '1978-03-08', 'rui.ferreira@universidadeabc.pt',


'654987321', 3, '2024-03-08', 3, 3);
INSERT INTO Estudante VALUES (1, 'Martins', 'Ana', '912345678',
'ana.martins@universidadeabc.pt', 'Rua das Flores', 'Bairro A', 'Quarteirao 1', 12, 1, '2025-05-15', 1);

INSERT INTO Estudante VALUES (2, 'Fernandes', 'Pedro', '987654321',


'pedro.fernandes@universidadeabc.pt', 'Avenida Central', 'Bairro B', 'Quarteirao 2', 34, 2, '2023-10-
20', 2);

INSERT INTO Estudante VALUES (3, 'Gomes', 'Mariana', '654987321',


'mariana.gomes@universidadeabc.pt', 'Rua Principal', 'Bairro C', 'Quarteirao 3', 56, 3, '2024-03-08',
3);

INSERT INTO Turma VALUES (1, 3, 1, 2021, 1);

INSERT INTO Turma VALUES (2, 1, 2, 2021, 2);

INSERT INTO Turma VALUES (3, 2, 1, 2021, 3);

INSERT INTO Pauta VALUES (1, 1, 1, 14, 15, 16, 17, 15.5, 1);

INSERT INTO Pauta VALUES (2, 2, 2, 12, 13, 14, 15, 13.5, 2);

INSERT INTO Pauta VALUES (3, 3, 3, 16, 17, 18, 19, 17.5, 3);

2) Dada a base de dados da empresa Khensani composta pelas seguintes


tabelas:

Departamento (cod_departamento, designacao_departamento);

Cargo (cod_cargo, designacao_cargo, salario_base);

DocumentoIdentificação (cod_doc, designacao_documento);

Funcionario (cod_funcionario, apelido, primeiros_nomes, data_nascimento,


email, telefone, data_ingresso, cod_documento, validade_documento,
cod_departamento, cod_cargo);
Dependente (Cod_Dependente, cod_funcionario, apelido, primeiros_nomes,
data_nascimento, grau_parentesco, cod_documento, validade_documento);

a) Crie a Base de Dados KurhulaEnterpreise e sobre a base de dados as tabelas acima


indicadas

CREATE DATABASE KurhulaEnterprise;

USE KurhulaEnterprise;

CREATE TABLE Departamento (cod_departamento INT PRIMARY KEY,


designacao_departamento VARCHAR(50));
CREATE TABLE Cargo (cod_cargo INT PRIMARY KEY,designacao_cargo
VARCHAR(50),salario_base DECIMAL(10,2));

CREATE TABLE DocumentoIdentificacao (cod_doc INT PRIMARY KEY,designacao_documento


VARCHAR(50));

CREATE TABLE Funcionario (cod_funcionario INT PRIMARY KEY,apelido VARCHAR(50),

primeiros_nomes VARCHAR(50), data_nascimento DATE, email VARCHAR(50), telefone


VARCHAR(20), data_ingresso DATE, cod_documento INT, validade_documento DATE,
cod_departamento INT, cod_cargo INT,

FOREIGN KEY (cod_documento) REFERENCES DocumentoIdentificacao(cod_doc),

FOREIGN KEY (cod_departamento) REFERENCES Departamento(cod_departamento),

FOREIGN KEY (cod_cargo) REFERENCES Cargo(cod_cargo));

CREATE TABLE Dependente ( Cod_Dependente INT PRIMARY KEY, cod_funcionario INT,

apelido VARCHAR(50), primeiros_nomes VARCHAR(50), data_nascimento DATE,


grau_parentesco VARCHAR(20), cod_documento INT, validade_documento DATE,

FOREIGN KEY (cod_funcionario) REFERENCES Funcionario(cod_funcionario),

FOREIGN KEY (cod_documento) REFERENCES DocumentoIdentificacao(cod_doc));

INSERT INTO Departamento (cod_departamento, designacao_departamento) VALUES (1,


'Financeiro'), (2, 'Recursos Humanos'), (3, 'Marketing');

INSERT INTO Cargo (cod_cargo, designacao_cargo, salario_base) VALUES (1, 'Contabilista', 2000),
(2, 'Recrutador', 1800), (3, 'Designer Gráfico', 2200);INSERT INTO DocumentoIdentificacao
(cod_doc, designacao_documento) VALUES (1, 'Cartão de Cidadão'), (2, 'Passaporte'), (3, 'BI');

INSERT INTO Funcionario (cod_funcionario, apelido, primeiros_nomes, data_nascimento, email,


telefone, data_ingresso, cod_documento, validade_documento, cod_departamento, cod_cargo)
VALUES (1, 'Silva', 'Ana', '1990-05-15', 'ana.silva@email.com', '912345678', '2020-01-15', 1, '2025-
01-15', 1, 1), (2, 'Santos', 'João', '1985-08-20', 'joao.santos@email.com', '932456789', '2018-03-10', 2,
'2024-03-10', 2, 2), (3, 'Martins', 'Mariana', '1995-11-25', 'mariana.martins@email.com', '962345678',
'2019-07-20', 3, '2023-07-20', 3, 3);

INSERT INTO Dependente (Cod_Dependente, cod_funcionario, apelido, primeiros_nomes,


data_nascimento, grau_parentesco, cod_documento, validade_documento) VALUES (1, 1, 'Silva',
'Pedro', '2010-03-02', 'Filho', 1, '2030-03-02'), (2, 2, 'Santos', 'Rita', '2012-08-10', 'Filha', 1, '2032-08-
10'), (3, 3, 'Martins', 'Luís', '2008-12-15', 'Filho', 1, '2028-12-15');

Você também pode gostar