quarta-feira, 2 de dezembro de 2009

Exercicios Álgebra Relacional

Seleção













Projeção











Seleção e Projeção










Junção









Agregação





Normalização

1) Quais são as diretrizes informais para o projeto de esquema de relações? Explique resumidamente cada uma.

Semântica de atributos.
• Redução de valores redundantes em tuplas.
• Redução de valores nulos em tuplas.
• Não permissão de tuplas espúrias.

Semântica de atributos.

Assume-se que certo significado esteja associado aos atributos, para todo agrupamento de
atributos que formam uma relação esquema. Intuitivamente, verifica-se que cada relação pode
ser interpretada como um conjunto de fatos ou declarações. Este significado, ou semântica,
especifica como podem ser interpretados os valores de atributos armazenados em uma tupla
da relação, em outras palavras, como os valores de atributos estão relacionados uns com os
outros. Em geral, é mais simples descrever a semântica de relações, ao invés da semântica de
atributos de uma relação.
Diretriz 1ª: Projetar um esquema de relação de maneira que seja simples descrever seu
significado. Normalmente, isso significa que não se pode combinar atributos de múltiplos tipos
de entidades e tipos de relacionamentos numa simples relação. Intuitivamente, se um esquema
de relação corresponde a um tipo de entidade ou tipo de relacionamento, o significado tende a
ser claro. Por outro lado, tende ser uma mistura de múltiplas entidades e relacionamentos e,
assim, semanticamente não-clara.

Redução de valores redundantes em tuplas
Deve-se minimizar o espaço de armazenamento utilizado pelas relações básicas:
_ Agrupe atributos em esquemas de relações;
_ Deve-se evitar situações que caiam em problemas de Anomalias na Atualização.
Modelar esquemas de relações básicas de forma que nenhuma anomalia de atualização possa ocorrer nas relações. Se houver a possibilidade de ocorrer alguma anomalia, registre-a claramente e tenha certeza de que os programas que atualizam o banco de dados operarão
corretamente.
_ Pode-se violar uma diretriz em prol do desempenho de uma consulta, entretanto, as medidas cabíveis devem ser tomadas para que os dados estejam sempre
consistentes e íntegros.

Redução de valores nulos em tuplas.
A existência de muitas possibilidades de uso do valor null causa desperdício de espaço no armazenamento e gera problema de entendimento do significado do atributos e da especificações de joins, e funções agregadas.
_ Motivos para uso do null:
_ O atributo não se aplica à tupla;
_ O valor do atributo para a tupla é desconhecido;
_ O valor do atributo para a tupla é conhecido, mas ausente, ou seja, ainda não foi registrado
Até onde for possível, evite colocar os atributos em uma relação básica cujos valores freqüentemente possam ser nulos. Se os nulls forem inevitáveis, tenha certeza de que eles se aplicam somente em casos excepcionais e não na maioria das tuplas da relação.
_ Ex: se só 10% dos empregados tiverem escritórios particulares, há pouca justificativa para incluir um atributo ESCRITORIO-NRO na relação EMPREGADO; pode ser criada uma relação EMP_ESCRITÖRIOS (ESSN, ESCRITORIO_NRO) que contenha apenas as tuplas dos empregados que possuírem escritórios particulares.


Não permissão de tuplas espúrias.
Considere os esquemas de relação EMP_LOCS e EMP_PROJ1 que pode
substituir a relação EMP_PROJ da Figura 9.1b.
Uma tupla em EMP_LOCS significa que o empregado cujo nome é ENOME trabalha em algum
projeto cuja localização é PLOCALIZAÇÂO. Uma tupla em EMP_PROJ1 significa que o
empregado cujo número do seguro social é NSS trabalha HORAS por semana em um projeto
cujo nome, número e localização são PNOME, PNUMERO e PLOCALIZAÇÂO. A Figura 9.4b
mostra a extensão de EMP_LOCS e EMP_PROJ1 correspondente à relação extensão
EMP_PROJ da Figura 9.3, aplicando-se operações de projeção (¶) adequadas.
Suponha agora que EMP_PROJ1 e EMP_LOCS sejam utilizadas como relações base ao invés
de EMP_PROJ. Isto seria, particularmente, um projeto ruim, pois não se pode recuperar as
informações que existiam originalmente em EMP_PROJ a partir de EMP_PROJ1 e
EMP_LOCS. Se uma operação JOIN-NATURAL for aplicada em EMP_PROJ1 e EMP_LOCS,
surgirão mais tuplas que existiam em EMP_PROJ. A Figura 9.5 ilustra o resultado obtido
aplicando-se o join, considerando apenas as tuplas existentes acima da linha pontilhada, para
reduzir o tamanho da relação resultante. As tuplas adicionais são chamadas tuplas espúrias
porque elas representam informações espúrias ou erradas, e por isso elas não válidas. As
tuplas espúrias estão marcadas por asteriscos (*) na Figura 9.5.
A decomposição de EMP_PROJ em EMP_PROJ1 e EMP_LOCS é ruim porque quando é
aplicada a operação JOIN-NATURAL, não são obtidas as informações originais corretas. Isto
porque foi escolhido PLOCALIZAÇÃO como o atributo que relaciona EMP_LOCS e
EMP_PROJ1, e PLOCALIZAÇÃO não é nem uma chave-primária


2)Quais são as métricas de qualidade informal para projeto de esquemas de relações? Explique resumidamente cada uma delas.

R: São quatro métricas (Semântica de Atributos, Informação redundante ou anomalias de atribuição, valor null em tuplas e não permissão de tuplas espúrias).


3)O que é e para que serve o conceito de dependência funcional? Quais são os tipos de dependência? Explique-os

R: dependência funcional: Dependências Funcionais são restrições ao conjunto de relações válidas. Elas permitem expressar determinados fatos em banco de dados relativos ao empreendimento que se deseja modelar. Anteriormente foi definido o conceito de superchave. Para existir o destino (dependência -->chave estrangeira) tem que existir a origem (chave primaria). O atributo deve realmente caracterizar a relação.


4)O que é e para que serve normalização de dados relacionais? Quando será utilizada a normalização na maioria das vezes?

R: Eliminar redundâncias e inconsistências de um banco de dados, com reorganização mínima dos dados, é o processo pelo qual transformamos um BD fora do padrão do m-rel, num BD normalizado (dentro do padrão m-rel). Normalmente é usado em BD antigos ou criado por pessoa não técnica.


5)O que são e quantas são as formas formais de relação? Explique-as resumidamente. Para manter eficiência e a simplicidade de processamento em certos casos podemos normalizar as relações até a 3ºFN por quê?

R: O objetivo da normalização de um banco de dados é evitar os problemas que podem provocar falhas no projeto do banco de dados, bem como eliminar a mistura de assuntos e as correspondentes redundâncias dos dados desnecessárias. O processo de normalização aplica uma série de regras sobre as tabelas (também chamadas de relações) de um banco de dados, para verificar se estão corretamente projetadas.
Primeira Forma Normal: A primeira forma normal enuncia que cada atributo de uma entidade ou relacionamento pode armazenar apenas um valor. Tabelas com atributos multi-valorados não são consideradas em 1NF.
Segunda Forma Normal: A segunda forma normal (2NF) descreve que todo atributo deve ser determinado unicamente pela chave primária. Se existem atributos que dependem apenas de parte da chave, estes devem ser separados em tabelas onde a 2NF seja obedecida.
Terceira Forma Normal: A terceira forma normal (3NF) exige que a tabela esteja em 2NF e que todos os atributos que não são chave sejam mutuamente independentes, isto é, que não existam funções que definam um ao outro. Portanto, sempre a chave por inteiro deve definir toda a tabela.
Forma normal Boyce/Codd (BCNF): Definição que engloba as outras formas normais, e define que uma tabela está em BCNF se, e somente se, todo determinante funcional for em relação a uma chave candidata. Na prática, uma tabela está em BCNF se estiver em 3NF e não existir dependência funcional dentro da chave primária.


6- Dê exemplos de normalizações de uma relação.

Tabela normalizada
Atributos não atômicos ou contém tabelas aninhadas
Exemplo: Tabela de alocação de funcionários a projetos
Código do Projeto: 1
Tipo: Desenvolvimento
Descrição: Vagas




A seguinte tabela descreveria os dados acima apresentados: Projetos(codp, tipo, descrição, empregados(code, nome, categ, salário,data_início, tempo_aloc)).
Tabela não normalizada empregados é um atributo não atômico.
[editar] Primeira Forma Normal
Definição (note que relacionamentos como são definidos acima são necessariamente na 1NF)
"Uma tabela está na 1FN, se e somente se, não possuir atributos multivalor."
Definir relações NFNF
• como transformar relações NFNF (também chamadas relações UNF) em relações 1NF
o como transformar as restrições chave de relações aninhadas
o como transformar as dependências funcionais de relações aninhadas
Passagem à 1FN:
• Gerar uma única tabela com colunas simples
• Chave primária : id de cada tabela aninhada
Exemplo: Projetos(codp, tipo, descrição, code, nome, categ, salário, data_início, tempo_aloc)
Problemas:
• Redundância
• Anomalias de Atualização
[editar] Segunda Forma Normal
Definição:
Uma relação está na 2FN se, e somente se, estiver na 1FN e cada atributo não-chave for dependente
da chave primária inteira, isto é, cada atributo não-chave não poderá ser dependente de apenas
parte da chave.
No caso de tabelas com chave primária composta. Se um atributo depende apenas de uma parte da chave primária, então esse atributo deve ser colocado em outra tabela.
Passagem à 2FN:
• Geração de novas tabelas com DFs completas
• Análise de DFs:
* tipo e descrição - DF de codp
* nome, categ e salário - DF de code
* data_início e tempo_aloc - DF de toda a chave
Resultado:
• Projetos(codp, tipo, descrição)
• Empregados(code, nome, categ, salário)
• ProjEmp(codp, code, data_início, tempo_aloc)
Conclusões:
• Maior independência de dados (não há mais repetição de empregados por projeto, por exemplo)
• Redundâncias + Anomalias - DF indiretas
[editar] Terceira Forma Normal
• definição
“ Uma relação R está na 3NF, se ela estiver na 2NF e cada atributo não chave de R
não possui dependência transitiva, para cada chave candidata de R.”
Passagem à 3FN:
• Geração de novas tabelas com DF diretas
• Análise de DFs entre atributos não chave:
- salário - DF de categ
Resultado:
• Projetos(codp, tipo, descrição)
• Empregados(code, nome, categ)
• Categorias(categ, salário)
• ProjEmp(codp, code, data_início, tempo_aloc)
Conclusões:
• Maior independência de dados
• 3FN gera representações lógicas finais na maioria das vezes
• Redundâncias + Anomalias - DF multivaloradas

O que significa a sigla SQL

1) O que significa a sigla SQL? Qual a finalidade dessa linguagem? Como ela se divide? Quais são os comandos principais de cada divisão? Explique-os resumidamente.

R:Structured Query Language ou Linguagem de consulta estruturada ou SQL, é uma linguagem de pesquisa declarativa para banco de dados relacional. Muitas das características originais do SQL foram inspiradas na álgebra relacional.
O SQL foi desenvolvido originalmente no inicio dos anos 70 no laboratório da IBM em San Jose, dentro do projeto System R, que tinha por objetivo demonstrar a viabilidade da implementação do modelo relacional proposto por E. F. Cold.
A DML é um subconjunto da linguagem usada para inserir, atualizar e apagar dados.
INSERT – é usado para inserir um registro (formalmente tupla) a uma tabela existente.
DELETE – para mudar os valores de dados em uma ou mais linhas da tabela existente.


2) Quais são os tipos de dados que a linguagem SQL padrão (ANSI) suporta? Explique cada um resumidamente.

DML – linguagem de manipulação de Dados
DDL – linguagem de definição de dados
DCL – linguagem de controle de dados
DTL – linguagem de transação de dados
DQL – linguagem de consulta de dados


3) Explique o comando SELECT. Sua sintaxe, características básicas, Cláusula Where, operadores, conectores, subconsultas, funções de agregação, cláusula order by, group by, having e compute by.

O comando SELECT permite o usuário especificar uma consulta como uma descrição do resultado desejado.

Clausulas

FROM – utilizada para especificar a tabela que se vai selecionar os registros
WHERE – utilizada para especificar as condições que devem reunir os registros que serão selecionados
GROUP BY - utilizada para separar os registros selecionados em grupos específicos
HAVING – utilizada para expressar a condição que deve satisfazer cada grupo
ORDER BY – utilizada para ordenar os registros selecionados com uma ordem especifica
DISTINCT – utilizada para selecionar dados sem repetição

Operadores lógicos

AND E – avalia as condições e devolve um valor verdadeiro caso ambos sejam corretos
OR OU – avalia as condições e devolve um valor verdadeiro se algum for correto
NOT negação – devolve o valor contrario a expressão

Operadores Relacionais

<>maior que
<> diferente de
<= menor ou igual que >=maior ou igual que
= igual a

BETWEEN – é utilizado para especificar um intervalo de valores
LIKE – é utilizado na comparação de um modelo e para especificar registros de um banco de dados.

4 - o que é uma visão (view) em SQL? Explique suas propriedades, utilidades e os comandos para a sua manipulação.

Uma visão ou view no contexto dos bancos de dados é uma relação que não armazena dados, composta dinamicamente por uma consulta que é previamente analisada e otimizada.
Basicamente VIEW é uma tabela virtual gerada a partir do resultado de uma instrução SELECT.
Uma VIEW contem linhas e colunas, como se fosse uma tabela real, os campos na view são capôs obtidos em uma tabela de um banco de dados.


5 - O que são procedimentos armazenados (stored procedure)? Para que servem, o que eles permite fazer e quais comandos podemos utilizar no seu corpo e para criá-los?

Procedimento armazenado é uma coleção de comando SQL para dispensamento de banco de dados, encapsula tarefas repetitivas, aceita parâmetros de entrada e retorna um valor de status. O procedimento armazenado pode reduzir o tráfego na rede, melhorar a performance, criar mecanismos de segurança.

Exemplo (MS-SQL Server)

Create procedure busca
@nomedebusca varchar (50)
As
Select nome1, nome2
From nome_da_tabela
Where nome = @nomedebusca

6 - O que são gatilhos (TRIGGERS)? Para que servem, quais as vantagens na sua utilização, como funcionam e como criá-los?

Gatilho é um recurso de programação executado sempre que o evento associado ocorrer, é muito utilizado para ajudar a manter a consistência dos dados ou para propagar alterações em um determinado dado de uma tabela para outra. Um bom exemplo é um gatilho criado para controle de quem alterou a tabela, nesse caso, quando a alteração for efetuada o gatilho é disparado e grava em uma tabela de histórico de alteração, o usuário e data/hora de alteração.

Exemplo (MS-SQL Server)

CREATE TRIGGER nome_do_gatilho ON dono.Nome_da_tabela
FOR INSERT (ou UPDATE ou DELETE)
AS
Código para execução

segunda-feira, 26 de outubro de 2009

Álgebra Relacional

1) Quantos e Quais são os grupos nos quais a álgebra relacional está dividida? Identifique quais operações pertencem a cada um deles.

R: As operações da álgebra relacional são normalmente divididas em dois grupos. O primeiro
deles inclui um conjunto de operações da teoria de conjuntos. As operações são UNION,
INTERSECTION, DIFFERENCE e CARTESIAN PRODUCT. O segundo grupo consiste de
operações desenvolvidas especificamente para bases de dados relacionais, tais como:

SELECT, PROJECT e JOIN entre outras.


2) Explique a Operação SELECT e PROJECT. Quando usar, Para que usar, Como usar, diferenças, etc.

R: A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação. Estas
tuplas devem satisfazer uma condição de seleção. Por exemplo, a seleção de um subconjunto
de tuplas da relação EMPREGADOS que trabalham para o departamento 4 ou que tenham
salário maior que 3000. Cada uma dessas condições é especificada individualmente usando a
operação SELECT como segue:

NDEP = 4 (EMPREGADO)

SALÁRIO > 3000 (EMPREGADO)

Em geral, a operação SELECT é denotada por:

()

onde o símbolo é usado para denotar o operador SELECT, e a condição de seleção é uma
expressão Booleana especificada sobre atributos da relação especificada.
A relação resultante da operação SELECT tem os mesmos atributos da relação especificada
em . A expressão Booleana especificada em é
construída a partir de cláusulas da forma:
, ou

O Operador PROJECT:

Pensando na relação como uma tabela, então o operador SELECT seleciona algumas linhas da tabela enquanto descarta outras. O operador PROJECT, por outro lado, seleciona certas colunas da tabela e descarta outras. Se existir o interesse sobre certos atributos da relação pode-se usar o PROJECT para “projetar” a relação sobre esses atributos. Por exemplo, suponha a necessidade de listar, para cada empregado, os atributos PNOME, SNOME e SALÁRIO; então pode-se usar o PROJECT como segue:

SNOME, PNOME, SALÁRIO (EMPREGADO)

A forma geral do operador PROJECT é:

()

onde é o símbolo usado para representar o operador PROJECT e é uma lista de atributos da relação especificada por . A relação resultante tem apenas os atributos especificados em e aparecem na mesma ordem que aparecem na lista. Assim, o grau é igual ao número de atributos em .


3) Explique a Operação UNION, INTERSECTION e DIFFERENCE. Quando usar, Para que usar, Como usar, etc.

R: Existem várias operações da teoria de conjuntos que são utilizadas para agrupar elementos de
dois conjuntos, entre elas estão: UNION, INTERSECTION e DEFFERENCE. Estas operações
são binárias; isto é, elas necessitam de dois conjuntos. Quando essas operações são adaptadas para a base de dados relacional deve-se assegurar que essas operações resultem sempre em relações válidas.
Pode-se definir as três operações UNION, INTERSECTION e DIFFERENCE sobre duas relações que sejam união compatível R e S:

· UNION ¾ O resultado da operação, denotado por R È S, é uma relação que inclui todas as tuplas de R e todas as tuplas de S. Tuplas duplicadas são eliminadas.

· INTERSECTION ¾ O resultado desta operação, denotado por R Ç S, é a relação que inclui todas as tuplas que são comuns a R e S.

· DIFFERENCE ¾ O resultado desta operação, denotado por R - S, é a relação que inclui todas as tuplas de R, mas que não estão em S.


4) Explique a Operação CARTESIAN PRODUCT. Quando usar, Para que usar, Como usar, etc.

R: A operação CARTESIAN PRODUCT, denotada por c, é também uma operação de conjunto
binária, mas as relações sobre as quais são aplicadas não necessitam ser união compatível.
Esta operação é usada para combinar tuplas de duas relações tal que tuplas relacionadas possam ser identificadas.

O CARTESIAN PRODUCT cria tuplas com atributos combinados de duas relações. Pode-se então selecionar apenas as tuplas que estejam relacionadas especificando uma condição de
seleção apropriada, como foi feita no exemplo. Devido à seqüência: CARTESIAN PRODUCT
seguido de SELECT, ser muito comum para se identificar tuplas relacionadas de duas relações,
uma operação especial JOIN foi criada para especificar esta seqüência como uma única operação. Assim, a operação CARTESIAN PRODUCT é raramente utilizada isoladamente.



5) Explique as Operações de junção (JOIN) e divisão (DIVISION). Quando usar, Para que usar, Como usar, etc.

R: A operação JOIN, denotada por x, é usada para combinar tuplas relacionadas de relações em
uma única tupla. Esta operação é muito importante para quaisquer bases de dados relacionais,
pois permite processar relacionamentos entre relações. Para ilustrar a operação JOIN, suponha
que se deseja recuperar os nomes dos gerentes de cada departamento. Para obter-se o nome
dos gerentes, é necessário combinar cada tupla de departamento com tuplas de empregados
cujo valor NSS seja igual ao valor de SNNGER na tupla departamento. Isto é feito usando a operação JOIN, então projeta-se o resultado sobre aqueles atributos necessários:
55

DEPT_GER¬DEPARTAMENTO xSNNGER=NSS EMPREGADO

RESULT¬pDNOME, SNOME, PNOME (DEPT_GER)


A operação DIVISION é útil para um tipo especial de consulta que ocorre freqüentemente em
aplicações de base de dados. Esta requisição pode ser ilustrada pela seguinte consulta:
“Recupere os nomes dos empregados que trabalham em todos os projetos em que ‘John Smith’ trabalha. Para expressar esta consulta usando DIVISION deve-se fazer o seguinte:
primeiro recuperar a lista de números de projetos em que ‘John Smith’ trabalha em uma relação
intermediária SMITH_PNOS:

SMITH¬s PNOME = ‘John’ AND SNOME = ‘Smith’ (EMPREGADO)

SMITH_PNOS¬p PNRO (TRABALHA_EM * NSSEMP = NSS SMITH)

Depois, criar uma relação que inclua tuplas da forma que lista todos os empregados, cujo número do segura social é NSSEMP, que trabalham num determinado projeto PNRO:

NSS_PNRO¬p PNRO, NSSEMP (TRABALHA_EM)

Finalmente, aplicar a operação DIVISION para as relações obtidas a fim de obter os números dos seguros sociais desejados:

NSS_DESEJADO (NSS)¬NSS_PNRO ¸ SIMTH_PNOS

RESULT¬p PNOME, SNOME (NSS_DESEJADO * EMPREGADO)



6) Explique as Operações de AGREGAÇÃO. Quando usar, Para que usar, Como usar, etc.

R: O primeiro tipo de consulta que não pode ser expressa na álgebra relacional é conhecido como
funções agregadas sobre coleções de valores da base de dados. Por exemplo, pode-se querer recuperar a média ou total salarial de todos os empregados ou o número de tuplas de
empregados. As funções normalmente aplicadas para coleções de valores numéricos são:

SUM, AVERAGE, MAXIMUM e MINIMUM. A função de contagem de tuplas é normalmente chamada COUNT. Cada uma destas funções pode ser aplicada a todas as tuplas de uma relação.

quinta-feira, 10 de setembro de 2009

MRel - Modelo Relacional

1. Explique conceitualmente a diferença entre o MER e o Modelo de Dados Relacional, ou simplesmente Modelo Relacional (MRel).

R: A diferença entre eles é que no MER utiliza dados conceituais de alto-nível e o MRel utiliza implementação de dados mais simples.O MER é um modelo de dados conceitual de alto-nível. Assim, os conceitos do MER foram projetados para serem compreensíveis a usuários, descartando detalhes de como os dados são armazenados. E já o MRel os modelos de dados de implementação são mais simples com uma estrutura de dados uniforme e o mais formal. E os modelos de dados relacional apresenta os dados da base com uma coleção de relações, cada relação poderá ser estendida como uma tabela ou um simples arquivo de registro.Atualmente, o conceito MER é utilizado principalmente durante processo de projetos da base de dados, estima-se que esse conceito possa ser utilizado diretamente em uma classe de SGBS’s.MRel - O Modelo de Dados Relacional foi introduzido por Codd(1970). Entre os modelos de dados de implementação, o modelo relacional é o mais simples, com estrutura de dados uniforme e o mais formal.O modelo de dados relacional representa os dados da base de dados como uma coleção de relações. Informalmente, cada relação pode ser entendida como uma tabela ou um simples arquivo de registros.O MER é um modelo de dados conceitual de alto-nível. Assim, os conceitos do MER foram projetados para serem compreensíveis a usuários, descartando detalhes de como os dados são armazenados.

2. Explique os conceitos de Instância, Esquema e Domínio no MRel. Explique as notações no MRel.

R: A instância de uma relação em um determinado momento é toda a relação no momento, ou seja, uma instancia de Alunos são todos os alunos cadastrados no momento. Se amanhã acrescentar mais alunos, a instância será todos os alunos antigos mais os novos.Um domínio D é um conjunto de valores atômicos, sendo que por atômico, podemos compreender que cada valor do domínio é indivisível. Durante a especificação do domínio é importante destacar o tipo, o tamanho e a faixa do atributo que está sendo especificado. Por exemplo:Coluna Tipo Tamanho FaixaRG Numérico 10,0 03000000-25999999Nome Caracter 30 a-z, A-ZSalário Numérico 5,2 00100,00-12999,99Um esquema de relação R, denotado por R(A1, A2, ... , An), onde cada atributo Ai é o nome do papel desempenhado por um domínio D no esquema relação R, onde D é chamado domínio de Ai e é denotado por dom(Ai). O grau de uma relação R é o número de atributos presentes em seu esquema de relação.A instância r de um esquema relação denotado por r(R) é um conjunto de n-tuplas r = [t1, t2, ... , tn] onde os valores de [t1, t2, ... , tn] devem estar contidos no domínio D. O valor nulo também pode fazer parte do domínio de um atributo e representa um valor não conhecido para uma determinada tupla. Notação do Modelo RelacionalAs seguintes notações serão utilizadas para apresentar alguns conceitos do modelo relacional:• Uma relação esquema R de grau n é representada como R(A1, A2, ..., An).Uma tupla t em uma relação r(R) é representada como t=, onde vi éo valor correspondente para atributos Ai. Serão utilizadas as seguintes notaçõespara se referir aos valores dos componentes de tuplas:• t[Ai] indica o valor de vi em t para o atributo Ai.• t[Au, Aw, ..., Az] onde Au, Aw, ..., Az é uma lista de atributos de R, indica oconjunto de valores de t correspondentes aos atributosespecificados na lista.• As letras Q, R e S denotam nomes de relação.• As letras q, r e s denotam instâncias de relação.• As letras t, u e v denotam tuplas.• Em geral, o nome de uma relação tal como ESTUDANTE indica o conjunto atual detuplas na relação - instância corrente da relação - e ESTUDANTE(Nome, NSS, ...)refere-se à relação esquema.• Os nomes de atributos são algumas vezes qualificados com o nome da relação naqual pertencem, por exemplo, ESTUDANTE.Nome ou ESTUDANTE.Anos.

3. Explique os conceitos de super-chave, chave candidata e chave estrangeira?

R: Um conjunto de atributos de uma relação R que identifica univocamente cada tupla na relação R é chamada uma Super-chave. Chave é uma super-chave da qual não pode retirar nenhum atributo e ainda preservar-se propriedade d identificação unívoca. Chave Candidata é comum que exista mais de uma chave para uma mesma relação. Neste caso, cada uma das chaves é chamada de chave candidata. Quando uma relação esquema tem muitas chaves-candidatas, a escolha da chave primária é arbitrária; no entanto, é sempre melhor escolher a chave-primária com o menor número de atributos. Uma Chave Estrangeira ocorre quando um conjunto de atributos C.


4. Explique o conceito de integridade no MRel?

R: As restrições de chave e de integridade de entidade aplicam-se apenas a relações individuais. A restrição de integridade referencial é uma restrição que é especificada entre duas relações e é usada para manter a consistência entre tuplas de duas relações. Informalmente, a restrição de integridade referencial estabelece que um tupla de uma relação que se refere à outra relação deve se referir a uma tupla existente naquela relação. Não existe uma representação formal para chave estrangeira. Normalmente, identifica-se um arco direto de cada chave estrangeira à relação que ela faz referência. Restrições de Integridade sobre um Esquema de Base de Dados Relacional: as restrições de chave especificam as chaves-candidatas de cada relação esquema; os valores das chaves-candidatas devem ser únicos para todas as tuplas de quaisquer instâncias da relação esquema. Além da restrição de chave, dois outros tipos de restrições são consideradas no modelo relacional: integridade de entidade e integridade referencial. A restrição de integridade de entidade estabelece que nenhum valor da chave-primária pode ser nulo. Isso porque, o valor de uma chave-primária é utilizado para identificar tuplas42 em uma relação. Por exemplo, se duas ou mais tuplas tiverem o valor null para a chaveprimária, não haverá como diferenciar uma tupla da outra.

5. Explique o conceito de integridade referencial no MRel.

R: Uma Chave Estrangeira ou Integridade Referencial ocorre quando um conjunto de atributos C Informalmente, a restrição de entidade referencial declama que uma tupla em uma relação, que faz referência a outra relação, deve se referir a uma tupla existente nessa relação. O conceito de Integridade Referencial depende do conceito de Cahve Estrangeira.


6. Explique os conceitos de Intenção e Extensão no MRel. Quais são as operações de atualização sobre relações?

R: Foi introduzido por Codd (1970). Tornou-se um padrão de fato para aplicações comerciais, devido a sua simplicidade e performance. É um modelo formal, baseado na teoria matemática das relações. Um dos SGBD's precursores que implementaram este modelo foi o System R (IBM). Baseado em seus conceitos surgiram: DB2 (IBM), SQL-DS (IBM), Oracle, Informix, Ingres, Sybase entre outros. Intenção da relação -> Esquema da Relação RExtensão da relação -> Estado da relação r(R)Não há ordenamento de tuplas de uma relação (diferentemente de um arquivo)Ordenamento de valores dentro de uma tupla n-tupla -> lista ordenada de n valores (ordem é importante na definição) Em nível lógico -> ordem não é importante, se houver correspondência entre atributo e valor Outra definição para relação:Um esquema da relação R(A1, A2,..., An) é um conjunto de atributos

quinta-feira, 3 de setembro de 2009

DER – Diagrama Entidade Relacionamento

Faça o DER da modelagem dos 6 (seis) primeiros exercícios de BDI.


1) CADASTRO NACIONAL DE VEÍCULOS: Você apresentará um modelo de dados para o cadastro nacional de veículos. Sabe-se que:O veículo possui sempre uma placa única em todo o país;O veículo possui sempre um responsável legal por ele. É necessário manter o histórico desta responsabilidade (propriedade);O veículo pertence sempre a uma categoria;O veículo é sempre de uma marca e de um modelo e possui ano de fabricação.






2) BIBLIOTECA: Você irá elaborar um modelo de dados para atender as necessidades de informação de uma biblioteca universitária. São elas:O cadastro dos usuários com endereço completo, inclusive com a informação do curso do usuário e data de início e de término previsto;O cadastro das obras da biblioteca, com a devida classificação: livros científicos, periódicos científicos, periódicos informativos, periódicos diversos, entretenimento, etc.;A língua em que encontra-se a obra;A mídia onde encontra-se a obra;Os autores da obra com o controle da nacionalidade do autor;As editoras dos exemplares com o ano de edição;os usuários estão classificados entre alunos, professores e funcionários, sendo que para os professores não serão considerados limites de volumes para empréstimos, nem possíveis atrasos na devolução destes.O histórico dos empréstimos.






3) CONTROLE DE ESTOQUE: Uma empresa do comércio varejista, deseja fazer o controle de estoque de seu estabelecimento. Para facilitar a administração do seu estoque, a organização criou uma estrutura de almoxarifados, onde um produto pode ser estocado em vários almoxarifados e um almoxarifado pode conter vários produtos. A reposição de estoque acontece quando os produtos adquiridos de um fornecedor chegam com sua respectiva nota fiscal de compra. Já a baixa do estoque se dá quando ocorre a emissão de uma nota fiscal de venda para um determinado cliente. Além disso, deseja-se classificar os produtos em linhas a serem determinadas pelo usuário de acordo com a sua necessidade.





4) EMPRESA DE FLORES: A X.P.T.O LTDA. criou a FLOWERNET, uma rede que tem como objetivo atender todo o mercado nacional no que diz respeito à venda e entrega de flores. Através desta rede, um cliente pode fazer uma compra de flores em Belo Horizonte e pedir para a entrega ser feita em Fortaleza. Para isso a X.P.T.O firmou convênio com várias floriculturas em várias cidades do Brasil. Uma floricultura pode atender várias cidades da região. O pedido do cliente, que pode possuir vários tipos de flores, é cadastrado e repassado para uma das floriculturas conveniadas que atendem a cidade, na qual será entregue o pedido.





5) APURAÇÃO ELEITORAL: Para facilitar o processamento da apuração eleitoral da eleição municipal a ser realizado nesse ano, o TRE (Tribunal Regional Eleitoral) resolveu informatizar esse processo. Sabe-se que cada localidade é dividida em várias zonas eleitorais que, por sua vez, são divididas em várias seções nas quais os eleitores estão vinculados. O candidato a um cargo público deve estar vinculado a um único partido político. Vale ressaltar que, segundo a legislação vigente, o voto é secreto.



6) CONCURSO PÚBLICO: Uma organização deseja implementar o procedimento de concurso público para tornar transparente o seu processo de seleção de pessoal. Esta organização possui vários departamentos, que por sua vez, possui vários cargos. O mesmo cargo pode estar vinculado à vários departamentos. Um concurso público é realizado para vários cargos, e um cargo pode ser oferecido em vários concursos. O candidato faz inscrição em somente um cargo oferecido em um concurso público. O concurso tem várias etapas, que tem a participação de vários candidatos. O candidato obtém a nota em cada etapa que participa. A etapa pode ser classificatória ou eliminatória.

quinta-feira, 27 de agosto de 2009

Modelo de Entidade e Relacionamento (MER)

1- Explique o conceito do MER e a sua importância no relacionamento entre os profissionais da informática e os demais profissionais.

Modelo de Entidade e Relacionamento (MER)

Definição
O modelo de entidade e relacionamento é o mais utilizado atualmente, devido a sua simplicidade e eficiência. Baseia-se na percepção de mundo real, que consiste em uma coleção de objetos básicos, chamados entidades e relacionamentos entre esses objetos. Você poderá usar ou não um software para modelagem de dados.
Consiste em mapear o mundo real do sistema em um modelo gráfico que irá representar o modelo e o relacionamento existente entre os dados. Este modelo foi desenvolvido a fim de facilitar o projeto de banco de dados permitindo a especificação de um esquema que representa a estrutura lógica global do Banco de Dados.
O Modelo de Entidades e Relacionamentos é um modelo abstrato cuja finalidade é descrever, de maneira conceitual, os dados a serem utilizados em um Sistema de Informações ou que pertencem a um domínio. A principal ferramenta do modelo é sua representação gráfica, o Diagrama Entidade Relacionamento. Normalmente o modelo e o diagrama são conhecidos por suas siglas: MER e DER.

Entidade
Identifica o objeto de interesse do sistema e tem "vida" própria, ou seja, a representação
abstrata de um objeto do mundo real sobre o qual desejamos guardar informações.
Exemplo: Clientes, Fornecedores, Alunos, Funcionários, Departamentos, etc.
Não são entidades:
Entidade com apenas 01 elemento;
Operações do sistema;
Saídas do sistema;
Pessoas que realizam trabalhos (usuários do sistema);
Cargos de direção

Atributo
Informações que desejamos guardar sobre a instância de entidade.
Exemplo: Nome do aluno, Número da turma, Endereço do fornecedor, Sexo do funcionário, etc.

Domínio do Atributo

Universo de valores que um atributo pode armazenar.
Exemplos:
Conjunto de valores do atributo Sexo do funcionário: M ou F;
Conjunto de valores do atributo Nome do aluno: 40 caracteres alfanuméricos.
Conjunto de valores do atributo salário: inteiro maior que 5000


Relacionamento
Na análise de relacionamentos o objetivo é definir como e quando as entidades se relacionam, isto é particularmente importante a fim de dar maior entendimento do problema.
Outro fator importante é o diagrama de entidade e relacionamento que representa graficamente o modelo de entidade e relacionamentos, este diagrama pode ser feito com o uso de ferramenta de modelagem de dados ou usando algum programa gráfico. Os softwares para modelagem de dados são alternativas mais interessantes em função da produtividade, organização do seu diagrama de entidade e relacionamento e facilidade de modificações.
Representa a associação entre os elementos do conjunto de uma entidade com outra entidade.
Exemplo: O João está matriculado na disciplina de Banco de Dados. Onde:
“João”: Elemento do conjunto de valores do atributo Nome do aluno da entidade Aluno;
“Banco de Dados”: Elemento do conjunto de valores do atributo Nome da disciplina da
entidade Disciplina;
“Matriculado”: Ligação existente entre um aluno e uma disciplina.
Matriculado
Aluno
Disciplina



2- Explique e comente o conceito de entidades e atributos.

Entidade: é qualquer coisa, concreta ou abstrata, incluindo associações entre entidades, abstraídos do mundo real e modelado em forma de tabela que guardarão informações no banco de dados.

Atributos
Um atributo é um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso são exemplos de atributos de objetos Pessoa. Cor, peso e modelo são possíveis atributos de objetos Carro. Cada atributo tem um valor para cada instância de objeto. Por exemplo, o atributo idade tem valor ``29'' no objeto Pedro Y. Em outras palavras, Pedro Y tem 29 anos de idade. Diferentes instâncias de objetos podem ter o mesmo valor para um dado atributo.
Cada nome de atributo é único para uma dada classe, mas não necessariamente único entre todas as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado endereço.



3- Explique e comente o conceito de relacionamento.

É a forma como os objetos que compõem a realidade se relacionam.
Quando se reduz a realidade em objetos como entidades e seus atributos, está se trabalhando com a parte estática dos Negócios.
Todavia, na verdade, iremos encontrar situações onde Clientes solicitam Cotações, que geram Pedidos de Vendas quando aprovadas; os Pedidos vendem Produtos em quantidades e preços diferentes que são faturados através da Nota Fiscal, que é paga em parcelas pelas Duplicatas e, assim por diante, em um fluxo dinâmico.
Isto mostra que os dados se relacionam entre si, indicando a própria dinâmica dos negócios, bem como as regras e políticas que os regem. Para representar essa dinâmica, o Modelo E-R define o conceito de relacionamento entre as entidades.
Logo, o relacionamento é um conceito dinâmico, pois representa a própria dinâmica dos negócios, bem como as suas regras e políticas.Um Banco de Dados Relacional é um banco de dados que segue o Modelo Relacional.
De forma mais detalhada, um Banco de Dados Relacional é um conceito abstrato que define maneiras de armazenar, manipular e recuperar dados estruturados unicamente na forma de tabelas, construindo um banco de dados.
O termo também é aplicável aos próprios dados, quando organizados dessa forma, ou a um Sistema Gerenciador de Banco de Dados Relacional (SGBDR) – do inglês Relacional database management system (RDBMS) .A arquitetura de um banco de dados relacional pode ser descrita de maneira informal ou formal. Na descrição informal estamos preocupados com aspectos práticos da utilização e usamos os termos tabela, linha e coluna. Na descrição formal estamos preocupados com a semântica formal do modelo e usamos termos como relação(tabela), dupla(linhas) e atributo(coluna).
Tipos de relacionamento
De acordo com a cardinalidade, existem 3 (três) tipos básicos de relacionamento entre as entidades.

A. Relacionamento um – para - um (1:1)
Indica que uma única ocorrência de uma entidade pode se relacionar com apenas uma única ocorrência de outra entidade. Este tipo de relacionamento é bastante raro (no mundo dos negócios).
Por exemplo: FUNCIONÁRIO (1) gerencia (1) DEPARTAMENTO
(Lê-se: um departamento possui um funcionário que exerce o papel de gerente; por sua vez, um funcionário-gerente pode gerenciar apenas um departamento de cada vez.)

B. Relacionamento um – para - muitos (1:N ou 1:M)
Indica que uma ocorrência de uma entidade pode se relacionar com muitas ocorrências de outra entidade. No entanto, a recíproca não é verdadeira. Este tipo de relacionamento é muito comum (no mundo dos negócios).
Por exemplo: FUNCIONÁRIO (1) possui (N) DEPENDENTE
(Lê-se: um funcionário pode possuir vários dependentes; mas cada dependente pertence a apenas um funcionário.)
Outro exemplo: CLIENTE (1) solicita (N) COTAÇÃO
(Lê-se: um cliente pode solicitar muitas cotações de vendas; no entanto, cada cotação somente pode ter sido solicitada por um cliente.)

C. Relacionamento muitos – para - muitos (N:M)
Indica que várias ocorrências de uma entidade pode se relacionar com muitas ocorrências de outra entidade. Pode-se representar como N:M ou como M:N ou, ainda, como N:N ou M:M. Geralmente, um relacionamento desse tipo pode ser convertido e simplificado pela criação de uma entidade intermediária (do tipo associativa, a ser vista posteriormente) e de dois relacionamentos do tipo 1:N (um – para - muitos).
Por exemplo: PEDIDO (N) vende (M) PRODUTO
(Lê-se: em cada pedido podem ser vendidos muitos produtos diferentes - um para cada linha do pedido; por outro lado, um produto pode ser vendido por diversos pedidos.)



4- Explique e comente o conceito de atributo-chave.

Um conceito importante em um banco de dados relacional é o conceito de atributo chave, que permite identificar e diferenciar uma tupla de outra. Através do uso de chaves é possível acelerar o acesso a elementos (usando índices) e estabelecer relacionamentos entre as múltiplas tabelas de um sistema de banco de dados relacional.
O conceito de chave é muito importante no Modelo Relacional. De entre todas as chaves candidatas apenas uma será a escolhida para identificar cada linha de forma única. A chave selecionada de entre as chaves candidatas é designada por chave primária da relação. Uma chave estrangeira é um conjunto de um ou mais atributos que são chave primária numa outra relação. Isto é, quando um atributo surge em mais do que uma relação, estamos perante um relacionamento de registros.
Chave estrangeira
O conceito de Chave estrangeira em uso de banco de dados se refere ao tipo de relacionamento entre as tabelas de dados do banco de dados.
Uma chave estrangeira é chamada quando há o relacionamento entre duas tabelas.
Sempre em chave estrangeira vai haver relacionamentos entre tabelas, por exemplo, se uma tabela que tem uma chave primária de outra tabela.
Chave externas ou estrangeiras
Uma chave externa ou estrangeira é um atributo ou uma combinação de atributos numa relação R2, cujos valores são necessários para equivaler à chave primária de uma relação R1.
Uma chave estrangeira é um campo, que aponta para a chave primária de outra tabela. Ou seja, passa a existir uma relação entre essas duas tabelas. A finalidade da chave estrangeira é garantir a integridade dos dados referenciais, pois apenas serão permitidos valores que supostamente vão aparecer na Base de Dados.
Chave primária
Chaves primárias (em inglês Primary Keys ou PK) sob o ponto de vista de um banco de dados relacional, referem-se às tuplas (conjuntos) de um ou mais campos, cujos valores, considerando a combinação de valores de todos os campos da tupla, nunca se repetem e que podem ser usadas como um índice para os demais campos da tabela do banco de dados. Em chaves primárias, não pode haver valores nulos nem repetição de tuplas.
Simplificando, quando a chave primária é simples, ou seja, é formada por um único campo da tabela, esse campo não pode ter dois ou mais registros de mesmo valor, e também não pode conter nenhum registro nulo. Se a chave primária é composta, ou seja, formada por mais de um campo, os valores de cada campo podem se repetir, mas não a combinação desses valores. Exemplo: a tabela 'Livros_Autores' tem como chave primária (cod_livro, cod_autor). Podem existir nessa tabela os registros:
(5, 9), (5, 10), (4, 9), (9, 5)



5- Explique o conceito do DER e a sua importância no relacionamento entre os profissionais da informática e os demais profissionais.

Diagrama entidade relacionamento é um modelo diagramático que descreve o modelo de dados de um sistema com alto nível de abstração. Ele é a principal representação do Modelo de Entidades e Relacionamentos. É usado para representar o modelo conceitual do negócio. Não confundir com modelo relacional, que representam as tabelas, atributos e relações materializadas no banco de dados.
· MER: Conjunto de conceitos e elementos de modelagem que o projetista de banco de dados precisa conhecer. O Modelo é de Alto Nível.
· DER: Resultado do processo de modelagem executado pelo projetista de dados que conhece o MER.
É um modelo em rede que descreve a diagramação dos dados armazenados de um sistema em alto nível de abstração. Devido a complexidade da estrutura de dados e os relacionamentos deve-se dar uma importância maior para os dados que serão utilizados para formar uma informação importante para um Gerente ou diretor de uma empresa ( importantes para um sistema de gestão empresarial).

Portanto é importante especifica e documentar, e o DER é uma ferramenta de modelagem especificamente para isto. “Modelar os dados (organizar em tabelas) e seus relacionamentos.
Quais os benefícios ?

- Realça os relacionamentos entre os depósitos de dados de um DFD que de outro modo só seriam percebidos nas especificações de processos.
- Facilita descobrir funções necessárias no DFD.
- Organizar a nossa estrutura de dados (redundância de dados)

Os Componentes

Tipo de Objetos – representação no sistema (tabelas de dados)

Retângulo;

Uma coleção ou um conjunto de objetos (coisas) do mundo real cujo membros individuais (instâncias) tem as seguintes características:
- Cada um deles só pode ser identificado de uma única forma (instâncias)
o Chaves (código, CPF, CNPJ, etc...)
- Cada um exerce um papel no sistema em construção
o Deve ter um significado
- Cada um pode ser descrito por um ou mais elementos de dados
o Cliente (nome, endereço, telefone, rg, CPF, etc...)

Tipos Especiais de Relacionamentos

- Indicadores de tipos de objetos (muitos-para-muitos)

Funciona tanto como um objeto como um relacionamento





Exemplo: Guardar a data e hora que aconteceu a compra.

- Indicadores de Subtipos/Supertipos
o Consistem em um objeto e um ou mais subcategorias, interligados por um relacionamento.

Herança




Diretrizes para a Construção de DER

- O DER deve ser criado a partir de entrevistas com o usuário e de seu conhecimento do ramo da empresa do usuário. (fichas cadastrais, notas fiscais, fichas de pedido, extratos bancários, etc...). Assim é encontrado os principais objetos e relacionamentos.
- Identificar os diferentes elementos de dados (campos) nos diferentes tipos de tabelas (objetos).
o Isto pode ser feito através do DFD e especificando em um dicionário de dados.
o Realizar refinamentos
- Verificar a existência de supressão de dados (reduzir o DER)
o Verificar a existência de relacionamentos redundantes ou errôneos
§ Tipos de objetos compostos por apenas um identificador (tabela cliente e cônjuge. Relacionamento de um para um)
§ Tipos de objetos para os quais existe apenas uma instância (constante)
§ Relacionamentos derivados ou calculados devem ser removidos do sistema
· Exemplo: Renovar pela data de aniversário, primeira letra.







6- Dê ou faça um exemplo de um DER e explique o mesmo.




No Exemplo:
Banco de dados que permite o correto controle das matrículas dos alunos em uma escola, onde a preocupação concentra-se no acompanhamento da vida acadêmica dos alunos.
Identificar as Entidades – de acordo com os requisitos do sistema
ALUNO - matricula-se - CURSO
-um aluno pode matricular-se em um único curso nesta escola, mas um curso contém vários alunos
Cardinalidade N : 1
CURSO - formado - DISCIPLINA
-um curso é formado por diversas disciplinas, mas uma mesma disciplina pode estar em mais que um curso
Cardinalidade N : M
ALUNO - cursa - DISCIPLINA ® nota, falta, situação
-vários alunos podem cursar uma mesma disciplina e uma disciplina tem vários alunos
Cardinalidade N : M
Os relacionamentos têm que procurar representar a realidade que ocorre no mundo real.

quinta-feira, 20 de agosto de 2009

Introdução a Banco de Dados I

1) O que é e como funciona o armazenamento de dados em arquivo? (criação, utilização, vantagens e problemas).

Um banco de dados (a sua abreviatura é BD, em inglês DB, database) é uma entidade na qual é possível armazenar dados de maneira estruturada e com a menor redundância possível. Estes dados devem poder ser utilizados por programas, por utilizadores diferentes. Assim, a noção básica de dados é acoplada geralmente a uma rede, a fim de poder pôr conjuntamente estas informações, daí o nome banco. Fala-se geralmente de sistema de informação para designar toda a estrutura que agrupa os meios organizados para poder compartilhar dados. Um banco de dados permite pôr dados à disposição de utilizadores para uma consulta, uma introdução ou uma atualização, assegurando-se dos direitos atribuídos a estes últimos. Isso é ainda mais útil quando os dados informáticos são cada vez mais numerosos. Um banco de dados pode ser local, quer dizer utilizável numa máquina por um utilizador, ou repartida, quer dizer que as informações são armazenadas em máquinas distantes e acessíveis por rede.A vantagem essencial da utilização de banco de dados é a possibilidade de poder ser acedida por vários utilizadores simultaneamente. A fim de poder controlar os dados bem como os utilizadores, a necessidade de um sistema de gestão fez-se sentir rapidamente. A gestão de banco de dados faz-se graças a um sistema chamado SGBD (sistema de gestão de bases de dados) ou em inglês DBMS (Database management system).

2-O que é e como funcionam os SGBD? Explique a evolução dos arquivos, passando pelo BD até SGBD.

O SGBD é um conjunto de serviços (aplicações software) que permitem gerir as bases de dados, quer dizer:
Permitir o acesso aos dados de maneira simples
Autorizar um acesso às informações a múltiplos utilizadores
Manipular os dados presentes na base de dados (inserção, supressão, modificação) O SGBD pode decompor-se em três subsistemas: O sistema de gestão de ficheiros: permite o armazenamento das informações num suporte físico O SGBD interno: gere a emissão das informações O SGBD externo: representa o interface com o utilizador

Os principais sistemas de gestão de bases de dados são os seguintes:
Borland Paradox
Filemaker
IBM DB2
Ingres
Interbase
Microsoft SQL server
Microsoft Access
Microsoft FoxPro
Oracle
Sybase
MySQL
PostgreSQL
mSQL
SQL Server 11
As primeiras arquiteturas usavam mainframes para executar o processamento principal para todas as funções do sistema, incluindo os programas aplicativos, programas de interface com o usuário, bem como a funcionalidade dos SGBDs. Esta é a razão pela qual a maioria dos usuários acessava os sistemas via terminais que não possuíam poder de processamento, apenas capacidade de visualização. Todos os processamentos eram feitos remotamente, e apenas as informações a serem visualizadas e os controles eram enviados do mainframe para os terminais de visualização, que eram conectados a ele através de várias redes de comunicação. Como os preços do hardware foram decrescendo, muitos usuários trocaram seus terminais por computadores pessoais (PC) e estações de trabalho. No começo os SGBDs usavam esses computadores da mesma maneira que usavam os terminais, ou seja, o SGBD era centralizado e toda sua funcionalidade, execução de programas aplicativos e processamento da interface do usuário eram executados em apenas uma máquina. Gradualmente os SGBDs começaram a explorar a disponibilidade do poder de processamento no lado do usuário, o que levou a arquitetura cliente-servidor. A arquitetura cliente-servidor foi desenvolvida para dividir ambientes de computação onde um grande número de PCs, estações de trabalho, servidores de arquivos, impressoras, servidores de banco de dados e outros equipamentos estão conectados juntos por uma rede. A idéia é definir servidores especializados tais como servidor de arquivos que mantém os arquivos de máquinas clientes ou servidores de impressão que podem estar conectados a várias impressoras, assim quando se deseja imprimir, todas as requisições de impressão são enviadas a este servidor. As máquinas clientes disponibilizam para o usuário as interfaces apropriadas para utilizar esses servidores, bem como poder de processamento para executar aplicações locais. Esta arquitetura se tornou muito popular por algumas razões. Primeiro a facilidade de implementação dada à clara separação de funcionalidade e o servidor. Segundo um servidor é inteligentemente utilizado porque as tarefas mais simples são delegadas as máquinas clientes mais baratas. Terceiro o usuário pode executar uma interface gráfica que já lhe é familiar ao invés de usar a interface do servidor. Desta maneira a arquitetura cliente-servidor foi incorporada nos SGBDs comerciais. Diferentes técnicas foram propostas sendo uma bastante adotada por muitos Sistemas Gerenciadores de Banco de Dados Relacionais (SGBDRs) comerciais a inclusão da funcionalidade de um SGBD centralizado no lado do servidor. As consultas e a funcionalidade transacional permanecem no servidor, sendo que este é chamado de servidor de consulta ou servidor de transação. Desta maneira um servidor de SQL é fornecido para os clientes. Cada cliente tem que formular suas consultas SQL, e prover a interface do usuário e a funções de interface para linguagem de programação. O cliente pode também se referir a um dicionário de dados que incluem informações sobre a distribuição dos dados em vários servidores SQL, bem como os módulos para a decomposição de uma consulta global em um número de consultas locais que podem ser executadas em vários sítios. Comumente o servidor SQL também é chamado de back-end machine e o cliente de front-end machine. Como SQL provê uma linguagem padrão para SGBDRs, ele criou o ponto de divisão lógica entre o cliente e o servidor. Existem várias tendências para Banco de Dados atualmente, nas mais diversas direções.

3-Quais são os tipos de conexão existentes com BD? Explique-as.

TIME SHARING
Estações dos usuários não possuem inteligência e tipicamente são terminais alfanuméricos.
Toda a aplicação é executada no servidor, inclusive o SGDB.
Existe um alto overhead de comunicação.
O acesso remoto é simplificado através de linhas dedicadas.
Não é escalável.

SERVIDOR DE ARQUIVOS
As estações de trabalho são inteligentes.
Toda a aplicação é executada na estação, inclusive o SGBD.
Todos os arquivos residem no servidor e transitam pela rede quando são acessados.
O tráfego da rede é proporcional ao número de estações
É mais escalável do que a conexão anterior, porém apresenta problemas com
Relação ao tamanho do BD devido ao tráfego de dados pela rede.

CLIENTE-SERVIDOR
O SGBD é residente e executado no servidor
As estações são inteligentes, possuem alta capacidade de processamento.
A aplicação é dividida entre a estação (cliente) e o SGBD.
O SGBD executa comandos SQL, vindos dos clientes, e apenas os resultados desses comandos trafegam pela rede.
Apresenta uma sobrecarga menor para a rede do que o tipo de conexão servidor de arquivos. Também sobrecarrega menos o servidor do que o tipo de conexão time sharing.
É difícil atualizar aplicações nas estações clientes.
Estações clientes não devem guardar dados corporativos por razões de segurança.
O acesso remoto pode ser complexo. Esse problema foi minorado recentemente com a disponibilização de Intranets.
Integridade, segurança e backup da BD devem ter procedimentos semelhantes aos de mainframes.
Ajuste do sistema.

SERVIDOR DE APLICAÇÕES
Concentra a aplicação numa única máquina, o servidor de aplicações, que recebe os pedidos dos clientes e os dirige ao SGBD
Combina todas as vantagens da arquitetura cliente-servidor e elimina a principal desvantagem referente a atualização da aplicação.
Propicia sigilo do código da aplicação, agora residente numa máquina fisicamente controlada.
Em sistemas muito grandes a concentração de todo o processamento em uma única máquina pode ser diminuída replicando uma ou mais vezes o servidor de aplicações.

SERVIDOR WEB
Permite acesso gráfico ao SGBD de forma transparente, tanto local como remotamente
A aplicação reside em um servidor WWW que também faz o papel de servidor de aplicações
O único software requerido no cliente é um navegador padrão.
Apresenta problemas no que se refere a diferentes graus de resolução gráfica.


4-Quais são os modelos de dados existentes? Explique-os.

Modelo Hierárquico
É o primeiro reconhecido como modelo de dados. Foi desenvolvida devido à consolidação dos
discos de armazenamento endereçáveis, sua estrutura utiliza as organizações de endereçamento físicos dos discos. Os dados estão estruturados em hierarquias ou árvores. Os nós das hierarquias contêm ocorrências de registros, onde cada registro é uma coleção de campos (atributos) cada um contendo apenas uma informação. O registro que em uma hierarquia precede outros se designa registro-pai dos outros registros que são chamados de registros-filhos. Uma ligação é uma associação entre dois registros. O relacionamento entre um registro-pai e registros-filhos é de 1:N. Os dados estão organizados e podem ser acessados segundo uma seqüência hierárquica com uma navegação do topo para as folhas e da esquerda para a direita. Um registro pode estar associado a vários registros diferentes. Para que exista esta condição este registro deve ser replicado. A replicação possui duas grandes desvantagens: pode causar inconsistência de dados quando houver atualização e o desperdício de espaço é inevitável. O Sistema comercial mais divulgado no modelo hierárquico foi Informativo Management System da IBM Corp(IMS). Grande parte das restrições e consistências de dados estavam contidas dentro nos programas escritos para as aplicações. Era necessário escrever programas na ordem para acessar o banco de dados. Um diagrama de estrutura da árvore é o esquema para um banco de dados hierárquico. Tal diagrama
consiste em dois componentes básicos: Caixas - que correspondem ao tipo de registro e
Linhas - que correspondem às ligações.

Modelo em Rede
Aparece como uma extensão do modelo hierárquico. Elimina o conceito de hierarquia e permite
que um mesmo registro esteja envolvido em várias associações. No modelo em rede os registros estão organizados em grafos. Nele aparece um único tipo de associação (set), que define uma relação de 1: N entre 2 tipos de registros: proprietário e membro. Desta maneira dados dois relacionamentos 1:N entre os registros A e D e entre os registros C e D é possível construir um relacionamento M:N entre A e D. O gerenciador Data Base Task Group (DBTG) da CODASYL (Committee on Data Systems and Languages) estabeleceu uma norma para este modelo de banco de dados, com linguagem própria para definição e manipulação de dados. Os dados tinham uma forma limitada de independência física. A única garantia era que o sistema deveria recuperar os dados para as aplicações como se eles estivessem armazenados na maneira indicada nos esquemas. Os geradores do relatório da CODASYL também definiram sintaxes para dois aspectos chaves dos sistemas gerenciadores de dados: Concorrência e segurança. O mecanismo de segurança fornecia uma facilidade na qual parte do banco de dados (áreas) pudessem ser bloqueadas para prevenir acessos simultâneos quando isto fosse necessário. A sintaxe da segurança permitia que uma senha fosse associada com cada objeto descrito no esquema. Ao contrário do Modelo Hierárquico, em que qualquer acesso aos dados passa pela raiz, o modelo em rede pode-se ter acesso a qualquer nó da rede. Estes dois modelos: Hierárquico e Rede são Orientados a Registros, isto é qualquer acesso à base de dados, inserção, consulta, alteração ou remoção é feito com um registro de cada vez. No Modelo em Rede o sistema comercial mais divulgado CA-IDMS da Computer Associates. O diagrama para representar os conceitos do modelo de rede consiste em dois componentes básicos: Caixas - as quais correspondem os registros e Linhas - as quais correspondem as associações.

Modelo Relacional
O modelo relacional apareceu devido a seguintes necessidades: aumentar a independência de
dados nos sistemas gerenciadores de banco de dados; prover um conjunto de funções apoiadas em álgebra relacional para armazenamento e recuperação de dados; permitir processamento ad hoc1. O modelo relacional resultou de um estudo teórico realizado por CODD [Codd70] (investigador da IBM), tendo por base a teoria dos conjuntos e álgebra relacional. O modelo foi apresentado num artigo publicado em 1970, mas que só nos anos 80, foi implementado. O Modelo relacional revelou-se ser o mais flexível e adequado ao solucionar os vários problemas que se colocam ao nível da concepção e implementação da base de dados. A estrutura fundamental do modelo relacional é a relação. Uma relação é constituída por um ou mais atributos (campos), que traduzem o tipo de dados a armazenar. Cada instancia 1 processamento dedicado, exclusivo
do esquema (linha), designa-se por tupla (registro). O modelo relacional não tem caminhos predefinidos para acessar dados como no modelo de redes ou hierárquicos. O modelo relacional
implementa estruturas de dados organizadas em relações (tabelas). Porém para trabalhar com
essas tabelas algumas restrições tiveram que ser impostas para evitar aspectos indesejáveis
no modelo relacional tais como: Repetição de informação, Incapacidade de representar parte
da informação e perda de informação. Essas restrições são: integridade referencial, chaves,
integridade de junções de relações.

Modelo Orientado Objetos
Os bancos de dados orientados a objeto começaram a se tornar comercialmente viáveis em
meados de 1980. Eles começaram a ser desenvolvidos em função dos limites de armazenamento e representações semânticas dos modelos relacionais. Alguns exemplos são os sistemas de informações geográficas (SIG), os sistemas CAD e CAM. Esses sistemas são mais facilmente construídos usando tipos complexos de dados. A habilidade para criar os tipos de dados necessários é uma característica das linguagens de programação orientada a objetos. Estes sistemas, porém , necessitam guardar representações das estruturas de dados que eles usam no armazenamento permanente. A estrutura padrão para os bancos de dados objeto foi feita pelo Grupo de gerenciamento dados objetos (ODMG). Esse grupo é formado por representações da maioria dos fabricantes no mercado de banco de dados objeto. Membros do grupo estão comprometidos a incorporar o padrão em seus produtos. O termo Modelo Orientado Objetos é usado para o documento padrão que contém a descrição geral das facilidades de um conjunto de linguagens de programação orientadas a objetos e a biblioteca de classes que pode formar a base para o Sistema de banco de Dados. Quando os bancos de dados orientados a objetos foram introduzidos, algumas das falhas perceptíveis do modelo relacional parecem ter sido solucionadas com esta tecnologia e acreditava-se que tais bancos de dados ganhariam grande parcela do mercado. Porém hoje se acredita que os Banco de Dados Orientados a Objetos serão usados em aplicações especializadas, enquanto os sistemas relacionais continuarão a sustentar os negócios tradicionais nos quais as estruturas de dados baseadas em relações são suficientes. Um diagrama UML é geralmente o esquema para o modelo orientado a objetos.

Sistemas Objetos-Relacionais
A área de atuação dos sistemas Objeto-Relacional tenta suprir a dificuldade dos sistemas
relacionais convencionais, que é o de representar e manipular dados complexos. A solução
proposta é a adição de facilidades para manusear tais dados utilizando-se das facilidades SQL
existentes. Para isso foi necessário adicionar: extensões dos tipos básicos no contexto SQL;
representações para objetos complexos no contexto SQL ; herança no contexto SQL; sistema
para produção de regras.

5-Quais são os aspectos relevantes que devem ser considerados para atingir a eficiência e eficácia do sistema informatizado? (na visão do BD).

Atualmente, devem-se considerar alguns aspectos relevantes para atingir a eficiência e a eficácia dos sistemas informatizados desenvolvidos, a fim de atender seus usuários nos mais variados domínios de aplicação: automação de escritórios, sistemas de apoio a decisões, controle de reserva de recursos, controle e planejamento de produção, alocação e estoque de recursos, entre outros. Tais aspectos são:
a) Os projetos Lógicos e Funcionais do Banco de Dados devem ser capazes de prever o volume
de informações armazenadas a curto, médio e longo prazo. Os projetos devem ter uma grande capacidade de adaptação para os três casos mencionados;
b) Deve-se ter generalidade e alto grau de abstração de dados, possibilitando confiabilidade e
eficiência no armazenamento dos dados e permitindo a utilização de diferentes tipos de gerenciadores de dados através de linguagens de consultas padronizadas;
c) Projeto de uma interface ágil e com uma "rampa ascendente" para propiciar aprendizado suave ao usuário, no intuito de minimizar o esforço cognitivo;
d) Implementação de um projeto de interface compatível com múltiplas plataformas (UNIX, Windows NT, Windows Workgroup, etc);
e) Independência de Implementação da Interface em relação aos SGBDs que darão condições às operações de armazenamento de informações (ORACLE, SYSBASE, INFORMIX, PADRÃO XBASE, etc.)
f) Conversão e mapeamento da diferença semântica entre os paradigmas utilizados no desenvolvimento de interfaces (Imperativo (ou procedural), Orientado a Objeto, Orientado a
evento), servidores de dados (Relacional) e programação dos aplicativos (Imperativo, Orientado a Objetos).

6-Quais são as arquiteturas de SGBD’s? Explique-as.

Plataformas centralizadas: Na arquitetura centralizada, existe um computador com grande capacidade de processamento, o qual é o hospedeiro do SGBD e emuladores para os vários aplicativos. Esta arquitetura tem como principal vantagem a de permitir que muitos usuários manipulem grande volume de dados. Sua principal desvantagem está no seu alto custo, pois exige ambiente especial para mainframes e soluções centralizadas.

Sistemas de Computador Pessoal - PC: Os computadores pessoais trabalham em sistema stand-alone, ou seja, fazem seus processamentos sozinhos. No começo esse processamento era bastante limitado, porém, com a evolução do hardware, tem-se hoje PCs com grande capacidade de processamento. Eles utilizam o padrão Xbase e quando se trata de SGBDs, funcionam como hospedeiros e terminais. Desta maneira, possuem um único aplicativo a ser executado na máquina. A principal vantagem desta arquitetura é a simplicidade.

Banco de Dados Cliente-Servidor: Na arquitetura Cliente-Servidor, o cliente (front_end) executa as tarefas do aplicativo, ou seja, fornece a interface do usuário (tela, e processamento de entrada e saída). O servidor (back_end) executa as consultas no DBMS e retorna os resultados ao cliente. Apesar de ser uma arquitetura bastante popular, são necessárias soluções sofisticadas de software que possibilitem: o tratamento de transações, as confirmações de transações (commits), desfazer transações (rollbacks), linguagens de consultas (stored procedures) e gatilhos(triggers). A principal vantagem desta arquitetura é a divisão do processamento entre dois sistemas, o que reduz o tráfego de dados na rede.

Banco de Dados Distribuídos (N camadas): Nesta arquitetura, a informação está distribuída em diversos servidores. Como exemplo, observe a abaixo. Cada servidor atua como no sistema cliente-servidor, porém as consultas oriundas dos aplicativos são feitas para qualquer servidor indistintamente. Caso a informação solicitada seja mantida por outro servidor ou servidores, o sistema encarrega-se de obter a informação necessária, de maneira transparente para o aplicativo, que passa a atuar consultando a rede, independente de conhecer seus servidores. Exemplos típicos são as bases de dados corporativas, em que o volume de informação é muito grande e, por isso, deve ser distribuído em diversos servidores. Porém, não é dependente de aspectos lógicos de carga de acesso aos dados, ou base de dados fracamente acopladas, em que uma informação solicitada vai sendo coletada numa propagação da consulta numa cadeia de servidores. A característica básica é a existência de diversos programas aplicativos consultando a rede para acessar os dados necessários, porém, sem o conhecimento explícito de quais servidores dispõem desses dados.

Arquitetura Três Esquemas:A principal meta da arquitetura “três esquemas” é separar as aplicações do usuário do banco de dados físico. Os esquemas podem ser definidos como:· nível interno: ou esquema interno, o qual descreve a estrutura de armazenamento físico do banco de dados; utiliza um modelo de dados e descreve detalhadamente os dados armazenados e os caminhos de acesso ao banco de dados;· nível conceitual: ou esquema conceitual, o qual descreve a estrutura do banco de dados como um todo; é uma descrição global do banco de dados, que não fornece detalhes do modo como os dados estão fisicamente armazenados;· nível externo: ou esquema de visão, o qual descreve as visões do banco de dados para um grupo de usuários; cada visão descreve quais porções do banco de dados um grupo de usuários terá acesso.