segunda-feira, 21 de outubro de 2013

Banco de Dados I

Banco de Dados I

Introdução à Banco de Dados

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

No processamento de dados sem Banco de Dados, os registros permanentes são armazenados em arquivos convencionais e as aplicações acessam os arquivos. Acarretando problemas tais como: redundância controlada de dados, dificuldade de acesso; estrutura de dados projetada para atender aplicações específicas; acesso concorrente dificultado; mecanismo de recuperação de erros manuais, verificação á restrição de integridade é difícil.
Diferentemente no processamento de dados com Banco de Dados (BD) o armazenamento é de maneira estruturada e com a menor redundância possível. Permitindo a inserção de dados á disposição aos utilizadores, podendo também efetuar consultas, introduções ou atualizações. Gerando assim, um conjunto de dados á um propósito específico, e com alta redução dos problemas gerados quando armazenados em arquivos. 

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

O SBGD é um conjunto de serviços (aplicações) de finalidade genérica que facilita o processo de definição, construção e manipulação dos dados, sendo assim, são responsáveis pelo gerenciamento de uma base de dados, formado por uma coleção de dados e programas interligados, fornecendo o acesso simultâneo aos dados.
Alguns avanços já comentados, mas que podemos destacar de BD á SGBD são: permissão de acesso aos dados de maneira simples; autorizar acesso às informações á 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 SGDB 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 a interface com o utilizador.
           
3)      Quais são os tipos de conexão existentes com BD? Explique-as.

Time Sharing: Conexão é realizada em tempo real, as estações dos usuários não possuem inteligência e os terminais são alfanuméricos. Toda a aplicação é executada no servidor, inclusive o SGDB. E não é escalável.

Servidor de Arquivos: Conexão somente para armazenamento de dados, as estações de trabalho são inteligentes, toda a aplicação é executada na estação, inclusive o SGBD. O tráfego da rede é proporcional ao número de estações. É mais escalável do que a conexão anterior, porém pode apresentar problemas com o tamanho do BD devido ao tráfego de dados pela rede.

Cliente-Servidor: Servidor de dados e de manutenção de arquivos por usuários, a aplicação é dividida entre a estação (cliente) e o SGBD, ou seja, o SGBD é residente e executado no servidor. As estações são inteligentes, possuem alta capacidade de processamento. 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. O acesso remoto pode ser complexo e a integridade, segurança e backup da BD devem ter procedimentos semelhantes aos de mainframes.

Servidor de Aplicações: Servidor de aplicações em geral. Concentra a aplicação numa única máquina, o servidor de aplicações recebe os pedidos dos clientes e os dirige ao SGBD. Proporciona sigilo do código da aplicação, residente numa máquina fisicamente controlada. E 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.

Web: Exclusivo para 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 exigido ao cliente é um navegador padrão. Também pode apresentar problemas no que se refere á 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, desenvolvido á partir da consolidação dos discos de armazenamento endereçáveis. Os dados são estruturados em hierarquia ou em árvores, o registro em uma hierarquia precede de outros e designa-se do registro pai dos outros registros que são chamados de registros filhos. Os dados contidos nesse modelo podem ser acessados de maneira hierárquica, ou seja, do topo para as folhas, da esquerda para a direita.

Modelo em Rede: Elimina-se o conceito de hierarquia e permite que o mesmo registro esteja envolvido em varias associações, neste modelo os registros estão organizados em grafos. Ao contrário do modelo hierárquico em que qualquer acesso aos dados passa pela raiz, no modelo de Rede pode obter acesso á qualquer nó da rede.

Modelo Relacional: Surgiu com a necessidade de 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, recuperação de dados e permitir processamento ad hoc. Esse modelo demonstrou ser mais flexível e adequado ao solucionar os vários problemas que se colocam ao nível de concepção e implementação a base de dados, não possui caminhos pré-definidos para acessar dados.

Modelo Orientado Objetos: O seu desenvolvimento obteve-se em função dos limites de armazenamento e representações semânticas dos modelos relacionais, este por sua vez é usado para o documento padrão que contém a descrição geral das facilidades de um conjunto de linguagens de programação orientadas á objeto e a biblioteca de classes que pode formar a base de dados.

Sistemas Objetos-Relacionais: Esse modelo tenta suprir a dificuldade dos sistemas relacionais convencionais, que é de representar e manipular dados complexos, a solução é a utilização de facilidades do SQL, para isso é necessário adicionar extensões dos tipos básicos do SQL sendo essas: representações para objetos complexos, herança no contexto e sistemas 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).

Os aspectos que devem ser considerados para atingir eficiência e eficácia são: 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; 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; projeto de uma interface ágil de aprendizado suave para o usuário; projeto de interface compatível com múltiplas plataformas; independência da implementação da interface em relação aos servidores de dados que darão condições às operações de armazenamento de informações; conversão e mapeamento da diferença semântica entre os paradigmas utilizados no desenvolvimento de interfaces.

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

Plataformas Centralizadas: Na arquitetura centralizada, existe um computador com grande capacidade de processamento que é o hospedeiro do SGBD e emuladores para os vários aplicativos. Esta arquitetura tem como principal vantagem a segurança em poder manipular grande volume de dados com muitos usuários. Sua principal desvantagem é o fato de se ter alto custo, pois se deve ter ambiente especial para mainframes e soluções centralizadas.

Sistemas de Computador Pessoal: Os computadores pessoais trabalham em sistema stand-alone, ou seja, fazem seus processamentos sozinhos. Eles utilizam o padrão X-base e quando se trata de SGBD’s 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 fornece a interface com o usuário, apesar de ser uma arquitetura bastante popular para poder implementá-la são necessárias soluções de softwares sofisticados que possibilitem: tratamento de transações e confirmações de transações. A principal vantagem desta arquitetura é dividir o processamento entre dois sistemas reduzindo o tráfego de dados na rede.

Banco de Dados Distribuídos (N camadas): Nesta arquitetura a informação esta distribuída em diversos servidores. Cada servidor atua como no sistema cliente-servidor, a característica básica é a existência de diversos programas aplicativos consultando a rede para acessar os dados necessários, sem o conhecimento explícito de quais servidores dispõem desses dados.

MER - Modelo Entidade Relacionamento

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

O MER é um modelo de dados conceitual de alto-nível, baseado na percepção do mundo real, que consiste em um conjunto de objetos básicos chamados entidades e nos relacionamentos entre esses objetos. O objetivo é facilitar o projeto de banco de dados possibilitando a especificação da estrutura lógica geral do banco de dados, ser compreensível ao usuário. Atualmente, o MER é usado principalmente durante o processo de projeto da base de dados.

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

Uma entidade é uma representação abstrata de um objeto do mundo real, que possui uma existência independente (pessoa, carro ou empregado), ou pode ser um objeto com existência conceitual (companhia, um trabalho ou um curso universitário). Cada entidade tem propriedades particulares, chamadas atributos, elemento de dado que contém informação que descreve uma entidade.

3)      Explique e comente o conceito de relacionamento.

Relacionamento é a estrutura que indica a associação de elementos de duas ou mais entidades.

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

É um tipo de entidade que possui atributos cujos valores são distintos, para identificar cada entidade unicamente.


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

O DER busca minimizar dificuldades, reproduzindo ou simulando modelos da realidade de forma mais amigável através de ambientes gráficos e interfaces, simplificando a complexidade do ambiente computacional.


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




MRel - Modelo Relacional

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

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.

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

Instância: Toda a relação no momento.
Esquema: É a descrição de um banco de dados, poucas mudanças ocorrem no esquema do banco de dados.
Domínio: É um conjunto de valores atômicos, ou seja, cada valor do domínio é indivisível.

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

Chave candidata: é um identificador único que garante que nenhuma tupla será duplicada.
Super-Chave: conjunto de um ou mais atributos que, não podem existir duas ou mais linhas da tabela com o mesmo valore de uma Super-Chave.
Chave Primária: são chaves cujo os atributos são usados para identificar as tuplas em uma relação. Geralmente, é escolhida a chave candidata de menor tamanho.
Chave Estrangeira – São atributos de uma relação que fazem referência à chave primária de outra relação, ou até mesmo à própria.

4)      Explique o conceito de integridade no MRel.

Restrições de integridade são usadas para garantir a exatidão e a consistência dos dados em um Banco de dados relacional. Ou seja, garantir que dados representem assertivamente a realidade modelada. Podem ser: restrição de integridade de chave, restrição de integridade de entidade e restrição de integridade referencial.

5)      Explique o conceito de integridade referencial no MRel.

Integridade referencial é uma restrição que é especificada entre duas relações e é usada para manter a consistência entre tuplas de duas relações.

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

Intenção da Relação: Esquema da relação, conjunto dos nomes dos atributos.
Extensão da Relação: Conjunto dos valores dos atributos. Uma relação r (ou instância de relação) da relação esquema R (A1, A2, ..., An), também denotado por r(R), é um conjunto de tuplas r={ t1, t2, ..., tm}. Cada tupla é uma lista ordenada de n valores t=, onde cada valor vi, 1 £ i £ n, é um elemento do dom(Ai) ou um valor especial null. São utilizados, com freqüência, os termos intenção da relação para o esquema R e extensão da relação para a instância r(R).

Existem três tipos básicos de operação de atualização sobre relações: Inserção, Remoção e Modificação. A inserção é usada para inserir novas tuplas em uma relação, a remoção elimina tuplas e a modificação permite alterar os valores de alguns atributos. Quando são aplicadas operações de atualização, o projetista deve verificar que as restrições de integridade especificadas no esquema da base de dados relacional não sejam violadas. 

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

A Álgebra Relacional é um conjunto de operações sobre modelos relacionais de dados e podem ser divididas em dois grupos, que são eles:
Operadores Tradicionais: União, Intersecção, Diferença e Produto Cartesiano.
Operadores Relacionais: Seleção, Projeção, Junção e Divisão.

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

A operação SELECT é usada para selecionar um subconjunto de tuplas de uma relação, essas tuplas devem satisfazer uma condição de seleção. Pode ser utilizado quando for necessário selecionar um registro ou uma tabela, essa seleção é muito utilizada para formar uma condição de seleção composta, deve ser empregado da seguinte forma SELECT*FROM TABELA.
O PROJECT é utilizado quando for necessário selecionar e descartar colunas de uma tabela que serve para projeção de atributos, entende-se que pode ser utilizado PROJECT para listar atributos, como por exemplo, de um funcionário SNOME, PNOME, SALÁRIO (FUNCIONARIO).

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

UNION - operação binária que cria uma relação partindo de duas outras relações, estabelecendo assim, a união de todas as tuplas dessa nova relação.

INTERSECTION - operação binária que cria uma relação partindo de duas outras relações, estabelecendo assim a intersecção das duas, gerando uma nova relação às quais estarão presentes apenas os dados pertencentes às duas condições pré-estabelecidas.

DIFFERENCE - operação que cria uma relação partindo de duas outras relações, o qual resultará em uma nova relação que contenha todas as tuplas que pertençam à primeira relação e não pertença à segunda.

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

A operação CARTESIAN PRODUCT, denotada por c, é uma operação de conjunto binária, porém 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 resultado do produto cartesiano de duas tabelas é uma terceira tabela contendo todas as combinações possíveis entre os elementos das tabelas originais. Essa tabela resultante possuirá um número de colunas que é igual à soma das quantidades de colunas das duas tabelas iniciais, e um número de linhas igual ao produto do número de suas linhas.

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

A operação JOIN é utilizada para combinar tuplas de duas relações partindo dos atributos comuns a ambas. O resultado conterá as colunas das duas relações que estão participando da junção. Esta operação é de extrema importância em bancos de dados relacionais, pois é através dela que nos é permitido fazer relacionamento.

A operação DIVISION é uma operação adicional que produz como resultado a projeção de todos os elementos da primeira tabela que se relacionam com todos os elementos da segunda tabela.

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


Uma operação de agregação calcula um valor simples de uma coleção de valores, ou seja, reunir os registro de tabela, em grupos sobre os quais podem ser aplicadas funções agregadas, como Soma (SUM), Media (AVG), Maximo (MAX), Mínimo (MIN), Contar (COUNT). Exemplo usando SQL contar quantos registros existem na tabela Cliente: Select count(*) from Cliente.


Álgebra Relacional - Exercícios

ð  Seleção

1)      Mostre o conteúdo da relação departamento

∂ (DEPARTAMENTO)


2)      Mostre os empregados que trabalham no departamento 4.

∂ DNÚMERO = 4 (DEPARTAMENTO)


3)      Mostre a(s) localização(ões) do departamento de pesquisa (5).

∂ DNÚMERO = 5 (LOCAIS_ DEPTO)


4)      Mostre o(s) projetos(s) do departamento 4

∂ DNUM = 4 (PROJETO)


5)      Mostre as informações de relação trabalha_em cujo número do projeto igual a 3.

∂ PNRO = 3 (TRABALHA_EM)


ð  Projeção

1)      Mostre o número e o nome dos dependentes.

π NSSEMP, NOMEDEPENDENTE (DEPENDENTE)


2)      Mostre o nome e a localização dos projetos.

π PNOME, PLOCLIZAÇÃO (PROJETO)



3)      Mostre o nome do departamento e o código do gerente dos departamentos.

π PNOME, SNNGER (DEPARTAMENTO)


4)      Mostre o nome e a data de nascimento dos empregados.

π PNOME, DATANASC (EMPREGADO)


5)      Mostre o nome e o salário dos empregados.

π PNOME, SALÁRIO (EMPREGADO)


ð  Seleção+Projeção

1)      Mostre o código, nome e o salário dos empregados que ganham mais de 2500.

∂ SALÁRIO > 2500 (π NSS, PNOME, SALÁRIO (EMPREGADO))


2)      Mostre o nome e a localização dos projetos do departamento 5.

π PNOME, PLOCALIZAÇÃO (∂ DNUM = 5 ( PROJETO))


3)      Mostre o número do empregado e o número do projeto cujas horas são maiores que 10.

π NSSEMP, PNRO (∂ HORAS> 10 ( TRABALHA_EM))
4)      Mostre o nome e o sexo do dependente cujo número do empregado é igual a 123456789.

π NOMEDEPENDENTE, SEXO (∂ NSSEMP = 123456789(DEPENDENTE))

5)      Mostre o nome, relação e a data do aniversário dos dependentes cujo número do empregado é igual a 333445555.

π NOMEDEPENDENTE, RELAÇÃO, DATANIV (∂ NSSEMP = 333445555 (DEPENDENTE))


ð  Junção

1)      Mostre o nome e o salário do empregado e o nome e a relação dos seus dependentes.

π PNOME, SALÁRIO, NOMEDEPENDENTE, RELAÇÃO
(EMPREGADO χ DEPARTAMENTO)
            NSS = SNNGER


2)      Mostre o nome do departamento e o nome e o salário do empregado que é o seu gerente.

π DNOME, DLOALIZAÇÃO (DEPARTAMENTO χ LOCAIS_DEPTO)
                                                                      NSS = SNNGER


3)      Mostre o nome do departamento e a sua localização.

π DNOME, PLOCALIZAÇÃO (DEPARTAMENTO χ LOCAIS_DEPTO)
                                                           DMUERO = DMUMERO


4)      Mostre o nome do projeto, sua localização e o departamento ao qual pertence.

π PNOME, PLOCALIZAÇÃO, DNOME (PROJETO χ DEPARTAMENTO)
                                                                      DNUM=DNUMERO


5)      Mostre o nome do empregado e o nome do projeto nos quais eles trabalharam.

π E.PNOME, P.PNOME ((EMPREGADO χ TRABALHA_EM) χ PROJETO)
                                               NSSEMP = NSSEMP                       NRO=NPNUM


ð  Agregação

1)      Mostre a quantidade de empregados do sexo masculino e a quantidade de empregados do sexo feminino.

SEXO f COUNT (NSS) (EMPREGADO)


2)      Mostre a quantidade de dependentes do sexo masculino e a quantidade de dependentes do sexo feminino do empregado cujo número é 123456789.

SEXO f COUNT (NOMDEPENDENTE) (∂ NSSEMP = 123456789) (DEPENDENTE)


3)      Mostre o nome e o salário do empregado e a quantidade de dependentes que possui.

π PNOME, SALARIO, NSSEMP f COUNT (NOMEDEPENDENTE)
(EMPREGADO χ DEPENDENTE)
            NSS = NSSEMP


4)      Mostre a despesa total de cada departamento com os salários dos empregados.

DNUM f SUM (SALARIO) (EMPREGADO)


5)      Mostre a soma total das horas empregadas em cada projeto.

PNRO f SUM (HORAS) (TRABLAHA_EM)



NOMES: CHARLEANE M. DA SILVA
                EDUARDA MONICA L. BELESSA

MySQL



Trabalho - Banco de Dados MySQL



Nomes: Charleane M. da Silva
Eduarda M. L. Belessa 

História Evolutiva
O MySQL teve origem quando os desenvolvedores David Axmark, Allan Larsson e Michael Widenius, na década de 90, precisaram de uma interface SQL compatível com as rotinas ISAM que utilizavam em suas aplicações e tabelas. Em um primeiro momento, tentaram utilizar a API mSQL, contudo a API não era tão rápida quanto eles precisavam, pois utilizavam rotinas de baixo nível (mais rápidas que rotinas normais). Utilizando a API do mSQL, escreveram em C e C++ uma nova API que deu origem ao MySQL.
Após alguns anos, a MySQL AB (companhia dos fundadores e principais desenvolvedores) designou-se na necessidade de um banco de dados relacional que pudesse tratar grandes quantidades de dados em máquinas de custo relativamente barato. No dia 16 de Janeiro de 2008, a MySQL AB foi adquirida pela Sun Microsystems, por US$ 1 bilhão, um preço jamais visto no setor das licenças livres. No dia 20 de Abril de 2009, foi anunciado que a Oracle compraria a Sun Microsystems etodos o seus produtos, incluindo o MySQL. Após investigações da Comissão Europeia sobre a aquisição para evitar formação de monopólios no mercado, a compra foi autorizada e hoje a Sun faz parte da Oracle.
Atualmente o MySQL é um dos bancos de dados relacionais mais rápidos do mercado, que apresenta quase todas as funcionalidades dos grandes bancos de dados. É uma linguagem simples em que você facilmente pode gravar, alterar e recuperar informações num web site com segurança e rapidez. O sucesso deve-se em grande medida à fácil integração com o PHP incluído, quase que obrigatoriedade, nos pacotes de hospedagem de sites da Internet oferecidos atualmente.

Licença de Uso 
O MySQL é desenvolvido e distribuído por meio de duas licenças que irão depender do tipo de uso da ferramenta. Na maioria dos casos, seu uso é livre. Contudo, vale á pena conhecer as duas possíveis licenças do MySQL.
A primeira, software livre, é baseada nas cláusulas da GNU-GPL (General PublicLicence), a qual estabelece o que se pode ou não fazer com a ferramenta e demais recursos. Além do programa, o seu código-fonte também é disponibilizado para que qualquer pessoa possa adaptá-lo às suas necessidades; contudo, todas essas situações serão tratadas e detalhadas na licença GNU-GPL.
Basicamente, a licença do tipo GNU-GPL baseia-se nos seguintes princípios:
  •  Utilização: Permite utilizar o software para qualquer propósito.
  •   Distribuição: Permite a livre distribuição do software entre todas as pessoas.
  •   Didática: Permite que seu funcionamento seja estudado a partir de seu código-fonte.
  •   Colaboração: Permite que seu código-fonte seja alterado para evoluir a ferramenta, desde que seu novo código-fonte continue sendo livre seguindo essa licença.
A segunda licença é comercial. Para algumas situações sobre como embutir o MySQL dentro de suas aplicações comerciais (OEMs, ou seja, fora dos termos da GNU-GPL), obter suporte diferenciado, ou obter pacotes com mais ferramentas, essa licença pode ser mais apropriada.

Características 
Servidor Multithreads, cria múltiplos processos de execução em um único processo para atender vários pedidos de usuários ao mesmo tempo.

  •   Portabilidade eAPI’s para C, C++, Java, Perl, PHP, Phyton e TCL;
  •   Privilégio de password ser bastante flexíveis, permitindo inclusive a validação por “host”;
  •   Possui algoritmos de criptografia, fornecendo assim segurança aos dados gravados nas tabelas;
  •   Permite conexões via TCP/IP;
  •   Permite acesso via ODBC;
  •  Possui instruções para extração de informações relativas a tabelas, bancos, índices.

Capacidade 
Lida com bancos de dados enormes, existe usuários que utilizam o Servidor MySQL com bancos de dados que contém 50.000.000 registros e usuários que usam o Servidor MySQL com 60.000 tabelas e aproximadamente 5.000.000.000 de linhas.

São permitidos até 32 índices por tabela. Cada índice pode ser composto de 1 a 16 colunas ou partes de colunas. O tamanho máximo do índice é de 500 bytes (isto pode ser alterado na compilação do MySQL). Um índice pode usar o prefixo de campo com um tipo CHAR ou VARCHAR.

Versões de SQL
O MySQL tem como base o padrão de SQL-92 ODBC levels 0-3.51.
Um dos principais objetivos da ferramenta é evoluir para utilizar como base o padrão SQL-99. Contudo, nem todos os códigos para essa conversão poderiam ser implementados na versão atual, sem que se abrisse mão da velocidade e confiança do banco de dados. Isto se deve ao fato de alguns comandos do padrão SQL-99 demandarem maior processamento de dados, o que poderia comprometer algumas das principais características da ferramenta. Entre os próximos recursos do programa, faz parte atingir o objetivo de ter o padrão SQL-99 como base (o qual já é utilizado em grande parte), mantendo sua capacidade de processamento e segurança.

Novidades na Versão 5
A cada nova versão do MySQL, novas funcionalidades são implementadas, mas foi com a versão 5 que o programa alcançou definitivamente sua posição como concorrente de grandes bancos de dados existentes no mercado.
Os recursos que ainda faltavam no MySQL foram implementados e disponibilizados nesta versão. Dentre as principais demandas existentes e atendidas, podemos citar as stored procedures e triggers, que são blocos de código armazenados no banco de dados, geralmente de execuções de alta freqüência, ou acionadas por eventos. A seguir, um breve resumo das principais funcionalidades incorporadas no MySQL 5.

Stored Procedures 
Dentre as funcionalidades mais aguardadas para o MySQL, sem dúvida podemos citar as stored procedures, que são blocos de código SQL armazenados no servidor, os quais são chamados a partir das aplicações integradas ao banco de dados.
Seu conceito foi padronizado pela primeira vez na versão SQL-99. De lá para cá, os grandes bancos de dados têm disponibilizado este recurso, que além de centralizar códigos para não haver redundância deles em diversas partes do sistema, também aumenta a velocidade de processamento das consultas e torna os códigos das aplicações mais claros e simples, pois várias consistências sobre dados e relacionamentos podem ser feitas no lado do servidor de banco de dados. A versão implementada no MySQL baseia-se no modelo ANSI 2003.

Triggers
Assim como as stored procedures, os triggers são blocos de código SQL armazenados no servidor, mas não para serem invocados pela aplicação integrada ao banco de dados, e sim ser iniciados a partir de algum evento pré-cadastrado que ocorre no sistema (determinado horário do dia no caso dos eventschedulers, antes de uma inserção ou alteração, entre outras possibilidades).

Vantagens
  •  Possui código aberto e funciona em um grande número de sistemas operacionais: Windows, Linux, FreeBSD, BSDI, Solaris, Mac OS X, SunOS, SGI, etc;
  •   Compatibilidade (existem drivers ODBC, JDBC e .NET e módulos de interface para diversas linguagens de programação, como Delphi, Java, C/C++, Python, Perl, PHP e Ruby);
  •   Pouco exigente quanto á recursos de hardware;
  •   Seu desempenho é multi-tarefa e multi-usuário;
  •   Facilidade de instalação e administração do banco de dados;
  •  Menor TCO - Implante o MySQL para aplicações essenciais com economias significativas nos custos em relação ao Microsoft SQL Server;
  • Escalabilidade e desempenho - Atenda às necessidades de escalabilidade e desempenho dos web sites com mais tráfego e aplicações mais exigentes;
  •   Suporte à produção - Oracle Premier Support ajuda a reduzir o custo total e os riscos de propriedade de soluções MySQL.


Desvantagens
  •   Um problema que não sabemos discernir ao certo se pode ou não ser considerado desvantagem, é que, o MySQL está em constante desenvolvimento. Embora seja um dos bancos de dados mais utilizados no mundo, ainda encontra alguns bugs, que são resolvidos com atualizações frequentes;
  •   Não suporta transações (Commit, rollback, níveis de isolamento);
  •   Não executa backup consistente com a base de dados no ar e se atualizações estiverem sendo efetuadas;
  •   Não tem recurso contra falhas no desligamento do banco durante a atualização de dados;
  •   Possui menor comunidade de usuários, sendo assim, menor número de programas suportados;
  •   Não verifica as restrições de integridade referencial por default.
Alguns Clientes
Yahoo! Finance, NASA, Lucent Technologies, Motorola, Google, SiliconGrafics, XEROX, Sony Pictures, Friendster, Banco Bradesco, Dataprev, HP-Compaq, Nokia, Telemar,Suzuki, Hyperion, Dataprev, Lufthansa, U.S. Army, U.S. Federal Reserve Bank, Associated Press, Alcatel, Slashdot, Cisco Systems, MP3.com, Texas Instruments, Wikipédia, e pode encontrar muitas outras empresas.

Algumas Premiações
  •   Votado para o "Melhor Gerenciamento de Dados" no 2011ImpactAwards do php|architect;
  •   Votado com o "Melhor Banco de Dados" pelo ChoiceAwards 2011 do Linux Journal Reader;
  •   Nomeado um dos 10 Melhores Produtos de Código Aberto de 2011 pela CRN;
  •   Nomeado um dos 10 Melhores no Hall da Fama dos Códigos Abertos da InfoWorld;
  •   As principais propriedades da Web são escaláveis com êxito o MySQL;
  •   Mais de 2.000 ISVs e OEMs confiam o sucesso de seus produtos e negócios ao MySQL;
  •   Empresas modernas nos setores de Telecomunicações e Web implantam aplicativos altamente disponíveis no MySQL Cluster.
  •  Entre outras.

Referências:
www.novateceditora.com.br/livros/mysqlcompleto/capitulo8575221035.pdf