Baixe o app para aproveitar ainda mais
Prévia do material em texto
09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 1/26 ARQUITETURA DEARQUITETURA DE DADOS DADOS UNIDADE 2 -UNIDADE 2 - IMPLEMENTAÇÃO DOIMPLEMENTAÇÃO DO MODELO DE ENTIDADES EMODELO DE ENTIDADES E RELACIONAMENTOS NORELACIONAMENTOS NO MODELO RELACIONAL E NOMODELO RELACIONAL E NO BANCO NOSQL BANCO NOSQL Autor: Juracy Araujo de Almeida Junior Autor: Juracy Araujo de Almeida Junior Revisor: Rodrigo Ramos Nogueira Revisor: Rodrigo Ramos Nogueira INICIAR Introdução Após um projeto de banco de dados ter sido iniciado pelo modelo conceitual, com elementos mais preocupados em representar o negócio, e chegado ao modelo lógico, em que alguns aspectos mais técnicos são inseridos, como atributos e relacionamentos, é chegado o momento de transformar para um modelo relacional, ou seja, fazer o desenho e a construção das tabelas, atributos e seus relacionamentos para um banco de dados. Nessa fase, ainda utilizaremos como base as diretrizes dos modelos de dados conceituais e lógicos construídos. Também devemos avaliar uma tecnologia de banco de dados para implementação do modelo em um repositório físico. Dessa forma, caro estudante, nesta unidade você irá aprender como realizar a 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 2/26 2.1 Implementação do modelo de entidades e relacionamentos no modelo relacional O projeto de um banco de dados é orientado pelos requisitos de negócios, que são “traduzidos” inicialmente na modelagem conceitual. Esta apresenta o modelo conceitual, refletindo os dados em um nível mais alto, de forma que os envolvidos no negócio também os compreendam. A partir disso, é desenvolvido o modelo lógico, descrevendo, com maiores detalhes, os objetos e associações ou relacionamentos. Ambos são representados graficamente como diagrama de entidade-relacionamento ou modelo entidade-relacionamento (MER). Com o MER construído, a transformação mais próxima do SGBD (Sistema de Gerenciamento de Banco de Dados) pode ser realizada implementando as entidades, os atributos e os relacionamentos para em um modelo relacional. Os principais conceitos da abordagem entidade-relacionamento (ER) e modelo relacional já foram vistos em unidades anteriores, porém é necessário complementar com outros conteúdos importantes ao estudo em questão. 2.1.1 Conceitos complementares de entidade-relacionamento(ER) Na abordagem entidade-relacionamento(ER) , serão apresentadas as definições sobre esquemas, estado do banco de dados e atributos no relacionamento. Esquema é a estrutura no banco de dados que representa todas unidades lógicas, ou seja, as entidades e atributos que estarão dentro de um esquema. A tendência é que ele não sofra alterações com frequência, por isso a importância de desenvolver um bom modelo de dados. Elmasri e Navathe explicam que “especificar um esquema correto para o sistema de gerenciamento de banco de dados (SGBD) é extremamente importante, e o implementação do modelo de entidades e relacionamentos no modelo relacional, bem como conhecer a principal linguagem de consulta a dados em um SGBD, a SQL. Ademais, conhecer o propósito e características de um banco de dados NoSQL e como podemos implementar um modelo de dados nesta arquitetura. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 3/26 esquema deve ser projetado com extremo cuidado” (ELMASRI; NAVATHE, 2016, p. 33). Na Figura 1, visualizamos um exemplo de esquema com as entidades aluno e professor e suas instâncias: Figura 1 – Exemplo de ESQUEMA e INSTÂNCIAS. Fonte: Elaborada pelo autor, 2020. Outro conceito relevante é o de estado do banco de dados , o qual podemos qualificar como momentos das instâncias e do banco de dados. Assim, quando é criado um esquema, o estado do banco é considerado vazio. Ao ocorrer alterações, o estado é modificado. Muitos estados de banco de dados podem ser construídos para corresponder a um esquema de banco de dados em particular. Toda vez que inserimos ou excluímos um registro ou alteramos o valor de um item de dados com um registro, mudamos de um estado do banco de dados para outro (ELMASRI; NAVATHE, 2016, p. 33). Continuando os conceitos, temos os atributos dos relacionamentos . Além dos atributos fazerem parte da composição das entidades, eles também podem fazer parte da composição de um relacionamento. Quando isso ocorre, o qualificamos como atributos dos relacionamentos . Esta representação é necessária devido a situações nas quais um dado caracteriza a relação e precisa ser adicionado ali. Um exemplo pode ser visto na relação entre as entidades consulta, médico e paciente, bem como na relação podemos adicionar o atributo data_consulta. Um exemplo do atributo no relacionamento pode ser visto no Diagrama 1. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 4/26 Diagrama 1 – Atributo no relacionamento Fonte: Elaborado pelo autor, 2020. 2.1.2 Conceitos complementares de modelagem relacional A respeito da modelagem relacional , temos as seguintes formalizações necessárias para sua implementação: esquema relacional R (A1, A2, ...., An), em que R é a relação e A1...An é a lista de atributos; cada atributo A é o nome desempenhado por um domínio D no esquema da relação R. Representamos dom(An) como domínio do atributo; a relação possui o grau, que determina o número de atributos. Complementando essa formalização: Uma relação (ou estado de relação) r do esquema de relação R(Ap A 2, ..., A n), também indicada por r(R ), é um conjunto de n tuplas r = {tp t 2, ..., í m}. Cada n tuplas t é uma lista ordenada de n valores t = <v1, v2, ..., v n > , em que cada valor v . , 1 < i < n , é um elemento de dom ( A i) ou é um valor especial NULL. O valor i -ésimo na tupla t , que corresponde ao atributo A i, é referenciado como t [ A i] ou t . A i (ou t [ i ] na notação posicional) (VICCI, 2015, p. 74). Essa formalização é materializada na Tabela 1, em que é demonstrada a relação fornecedor, formado pelo conjunto de três tuplas, sendo cada tupla uma lista de atributos e valores. Ainda na Tabela 1, é demonstrada a referência o valor da segunda tupla do atributo, endereço que possui o valor de “Rua São Pedro n. 10”. Tabela 1 – Relação fornecedor RELAÇÃO/TABELA: FORNECEDOR 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 5/26 NOMEFORN ENDERECO BOMPRECO RUA SÃO PEDRO N10 RUA CARLOS COSTA FERREIRASA BAIRRO ESTADO AV. BRASIL N22 BRASILCAFE SÃO GONCALO PITUBA RJ 3 tuplas BARRA BA RUA CARLOS COSTA t2[ENDERECO] = RUA SÃO PEDRO N10 Fonte: Elaborado pelo autor, 2020. Outro ponto essencial do modelo relacional diz respeito às restrições de integridade . Essas restrições são derivadas de regras estabelecidas nos requisitos de negócio ou existentes no mundo real e que devem ser atendidas no modelo e no SGBD. Elmasri e Navathe (2016) destacam a existência das seguintes restrições: restrições de domínio, chave, valores NULL, integridade de entidade e integridade referencial . As restrições de domínio tratam da atomicidade de valores em cada tupla, devendo estar dentro de um domínio dom(A) . Essa atomicidade visa evitar a repetição de valores. O domínio pode ser definido pelos tipos de dados, como texto, data, valores numéricos 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 6/26 ou por intervalode valores definidos para o atributo. Para as restrições de chave , temos que considerar que em uma relação não se deve ter duas ou mais tuplas com a mesma combinação de valores em todos seus atributos. Normalmente, deve existir um subconjunto de atributos que identifique unicamente cada tupla, denominado superchave na relação. Desse modo, o conjunto de todos os atributos deverão representar uma superchave na relação. Ainda dentro dessa definição, temos a chave . Uma chave é uma superchave, com a diferença que a remoção de qualquer atributo que forme a chave a deixa sem a propriedade de identificação exclusiva na relação. Por exemplo, na relação PRODUTO, com a superchave cod_produto, cod_categoria, nom_produto, podemos extrair a chave cod_produto, cod_categoria. Ou seja, essa combinação evita que mais de uma tupla tenha o mesmo conjunto de valores. Entretanto, se retirarmos da chave qualquer um dos atributos, ela perderá a propriedade da exclusividade e a restrição de chave não será mais alcançada.As restrições de valores NULL visa especificar se um atributo permite ou não valores nulos (NULL). Setzer (2005) escreve que integridade referencial é “a restrição que define que os valores dos campos que aparecem em uma chave estrangeira devem aparecer na chave primária da tabela referenciada.” A chave primária é o conjunto de atributos definidos como chave definida na relação e estabelecido no SGBD. A chave estrangeira é o conjunto de atributos de uma relação R2 que terão o mesmo domínio da chave primária estabelecida em outra relação R1. Como exemplo, a Tabela 2 representa as relações ALUNO e SITUACAO_MATRICULA. Na relação ALUNO, o atributo cod_sit_matricula é uma chave estrangeira que referencia a chave primária cod_sit_matricula em SITUACAO_MATRICULA. Assim, os valores desse atributo em ALUNO devem acompanhar o domínio do atributo na relação SITUACAO_MATRICULA. Tabela 2 – Representação da restrição integridade referencial Fonte: Elaborado pelo autor, 2020. Por fim, em relação à integridade de entidade, Elmasri e Navathe (2016) explicam que a restrição de integridade de entidade afirma que nenhum valor de chave primária pode 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 7/26 ser null. Isso porque o valor da chave primária é usado para identificar tuplas individuais com uma relação. 2.1.3 Etapas e implementação da entidade-relacionamento para modelo relacional Neste momento, estamos na fase em que o projeto/modelo lógico está desenvolvido no formato de modelo ER. Sendo assim, devemos iniciar o mapeamento para o modelo relacional. Essa fase pode ser visualizada no Diagrama 2, com destaque para área hachurada em amarelo. Diagrama 2 – Etapas do projeto de banco de dados Fonte: Elaborado pelo autor, 2020. Para a implementação, definimos que o mapeamento criará tabelas com atributos simples de valor único e que no resultado teremos as restrições do modelo relacional aplicadas, incluindo chaves primárias, únicas e de integridade referencial . Para a implementação do modelo relacional iremos seguir e explanar sobre as nove etapas definidas em Elmasri e Navathe (2016). A etapa 1 trata do mapeamento de tipos de entidade regular ou forte . Neste tipo, para cada tipo de entidade forte no ER, deve ser criada uma relação no modelo relacional. Além disso, serão incluídos os atributos simples e os atributos compostos serão extraídos como simples. Por fim, o atributo chave será definido como chave primária. Existindo mais de uma chave, elas poderão ser transformadas em únicas e até apoiar índices futuros no SGBD. A Figura 2 representa um exemplo no qual a entidade regular ALUNO é mapeada para o modelo relacional, trazendo seus atributos e a chave como chave primária. Apenas o atributo multivalorado telefone não foi criado, pois será tratado em uma etapa posterior. Figura 2 – Exemplo de implementação da relação ALUNO. Fonte: Elaborado pelo autor, 2020. Na etapa 2 , denominada mapeamento de tipos de entidade fraca , para cada tipo de entidade fraca f no esquema ER, crie uma relação R e inclua todos os atributos simples, 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 8/26 ou componentes simples extraídos dos atributos compostos, de f como atributos de R. Além disso, inclua como atributos de chave estrangeira em R os atributos de chave primária da entidade forte. A chave primária será a combinação da chave estrangeira com a chave (parcial ou atributo que não identifica sozinho a tupla) da relação R. Na Figura 3, a entidade fraca TRANSPORTE ESCOLAR é mapeada para o modelo relacional em uma nova relação UTILIZA_TRANSPORTE, trazendo seus atributos e a chave primária da entidade forte, além de uma chave parcial para formar a chave primária. Figura 3 – Exemplo da implementação de entidades fracas TRANSPORTE _ESCOLAR para UTILIZA_TRANSPORTE. Fonte: Elaborado pelo autor, 2020. A etapa 3 deve realizar o mapeamento dos tipos de relacionamento binários 1:1 . Existem três técnicas que podem ser utilizadas e que podem ser vistas no Card 1. Técnicas para mapeamento dos tipos de relacionamento binários 1:1 » Clique nas setas ou arraste para visualizar o conteúdo TÉCNICA DE CHAVE ESTRANGEIRA Consideramos duas relações, S e T, e escolhemos aquela que tem participação total, ou seja, aquela que necessariamente ocorre na relação. Digamos que seja selecionada a relação S. Sendo assim, colocamos todos os atributos simples (ou extraídos dos compostos) do relacionamento em S e adicionamos a chave primária de T como chave estrangeira em S. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwNd… 9/26 Na Figura 4, por meio da técnica de chave estrangeira, é possível ver o mapeamento na tabela CARTEIRA_ESTUDANTE, que recebeu a chave estrangeira oriunda da chave primária em ALUNO e o atributo data_inscricao do relacionamento. Figura 4 – Mapeamento para o tipo binário 1:1. Fonte: Elaborado pelo autor, 2020. A etapa 4 deve realizar o mapeamento dos tipos de relacionamento binários 1:N . Nesta etapa, é selecionada a relação S participante do lado N no relacionamento. Então, devemos alocar todos os atributos simples (ou extraídos dos compostos) do relacionamento em S e adicionar a chave primária de T como chave estrangeira em S. Observe que se o inverso for feito, a relação T terá seus valores repetidos, de acordo com as ocorrências de S. Outro detalhe é que essa estrutura também deve ser aplicada em caso de autorrelacionamento. A Figura 5 representa o mapeamento 1:N, em que a tabela ESCOLA exporta sua chave primária cod_escola como chave estrangeira para tabela ALUNO. Figura 5 – Representação da restrição integridade referencial. Fonte: Elaborado pelo autor, 2020. TÉCNICA DA RELAÇÃO COMBINADA Combina dois tipos de entidade e relacionamento em uma relação, isso quando ambas relações possuem participação total; TÉCNICA DA RELAÇÃO DE REFERÊNCIA CRUZADA OU RELACIONAMENTO Diz para construir uma terceira relação para ser o resultado da referência cruzada das chaves primárias das duas relações existentes. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 10/26 A etapa 5 deve realizar o mapeamento dos tipos de relacionamento binários N:N . Para relacionamentos N:N, deve-se criar uma relação S para representar o relacionamento R. Inclua todos os atributos simples (ou extraídos dos compostos) do relacionamento e adicione as chaves primária das relações como chave estrangeira na relação S, sendo que sua combinação formará a chave primária em S. Na Figura 6, verifica-se que a tabela ALUNO_DISCIPLINA foi criadaa partir da união das chaves primárias de ALUNO e DISCIPLINA mais o atributo do relacionamento, representando, assim, a implementação para relações dos tipos de relacionamento binários N:N. Figura 6 – Representação do mapeamento dos tipos de relacionamento binários N:N. Fonte: Elaborado pelo autor, 2020. Na etapa 6 , denominada mapeamento de atributos multivalorados , os atributos multivalorados serão tratados com a criação de uma nova relação para cada um desses 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 11/26 atributos. Para cada atributo multivalorado na relação F, crie uma relação R, que será formada pelo atributo correspondente ao atributo multivalorado mais o atributo chave primária da relação F. Este último será uma chave estrangeira em R. A chave primária da relação R será a combinação desses dois atributos. A Figura 7 representa um exemplo com a criação da tabela ALUNO_TELEFONE, tratando o atributo multivalorado telefone. Figura 7 – Representação do mapeamento de atributos multivalorados. Fonte: Elaborado pelo autor, 2020. A próxima é a etapa 7 , que define o mapeamento de tipos de relacionamento n-ário . Essa definição deve ser aplicada a relacionamentos envolvendo mais de duas relações. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 12/26 O primeiro passo é criar uma relação S contendo todos os atributos simples (ou extraídos dos compostos) do relacionamento e adicionar as chaves primárias das relações como chave estrangeira. Usualmente, a chave primária de S será a combinação das chaves estrangeiras, entretanto, se alguma das relações tiver cardinalidade 1, a chave estrangeira não participará como chave primária. Adicionalmente, temos a etapa 8 , chamada de opções para mapeamento da especialização ou generalização , e a etapa 9 , conhecida como mapeamento de categorias . Na etapa 8 , a proposta é converter cada especialização a subclasses {S,, S,, ..., SJ} e à superclasse (generalizada) C, em que os atributos (at, ...aj e ch) e a chave (primária) estão relacionados a partir das opções elencadas no Card 2. Técnicas para mapeamento dos tipos de relacionamento binários 1:1 » Clique nas setas ou arraste para visualizar o conteúdo MÚLTIPLAS RELAÇÕES – SUPERCLASSES E SUBCLASSES Criar uma relação L1 para a superclasse C com sua chave primária e uma relação Ln para cada subclasse. Os atributos da relação L1 serão os atributos da superclasse e das relações Ln serão os atributos de cada subclasse, unindo a chave primária de L1. Essa opção funciona em qualquer especialização. MÚLTIPLAS RELAÇÕES – APENAS SUBCLASSES Criar uma relação L para cada subclasse, com seus atributos unidos com os da superclasse. Essa opção funciona apenas em especializações com participação total, em que cada entidade na superclasse deve pertencer, pelo menos, a uma das subclasses. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 13/26 A etapa 9 , a última para a implementação para o modelo relacional, trata do mapeamento de categorias . Vicci (2015) define que uma categoria (tipo de união) é uma subclasse da união de duas ou mais superclasses, que são capazes de terem diferentes chaves. Assim, ao criar uma relação relativa a uma categoria, especificamos um novo atributo chave, chamado chave substituta . Essa será a chave primária na relação e estrangeira nas relações correspondentes à superclasse. 2.1.4 Ferramenta case e conversão para modelo físico Trata-se de uma opção recomendada caso a entidade esteja com restrição de disjunção, ou seja, a superclasse pode ser membro de somente uma das subclasses. RELAÇÃO ÚNICA COM UM ATRIBUTO DE TIPO Criar uma única relação L com os atributos da superclasse unidos aos atributos das subclasses mais um atributo t , chamado de tipo, para identificar a qual subclasse aquela tupla pertence. A chave primária será a mesma superclasse. Essa opção poderá gerar muitos atributos nulos. RELAÇÃO ÚNICA COM ATRIBUTOS DE MÚLTIPLOS TIPOS Criar uma única relação L com os atributos da superclasse unidos aos atributos das subclasses mais um conjunto de atributos t1..tn para identificar a subclasse preenchida naquela tupla. Esses atributos t1..tn serão do tipo booleanos. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 14/26 Após essas definições para implementação do modelo relacional, é possível, então, partir para construção dos objetos físicos no banco de dados. O desenho e implementação dos modelos no projeto de banco de dados, desde o conceitual até o projeto físico, podem ser facilitadas com o suporte de ferramentas denominadas como ferramentas CASE ( Computer Aided Software Engineering ). VOCÊ SABIA? As ferramentas CASE foram desenvolvidas, principalmente, para atividades de engenharia de software, apoiando a análise, modelagem, programação e os testes. Além disso, a abordagem entidade-relacionamento e a UML podem ser atendidas com a construção de modelos e diagramas pelas ferramentas CASE. Existem inúmeras ferramentas CASE, pagas e gratuitas. Nesta unidade, vamos citar alguns recursos de uma ferramenta que irá possibilitar a implementação do modelo relacional, geração do modelo físico e script SQL para o SGBD. A ferramenta em questão é chamada de DB-Main. DB-Main é uma ferramenta CASE para modelagem de dados e arquitetura de software. Neste software, é possível mapear os dados no modelo conceitual, lógico e físico. Após realizar o download e acessar, podemos visualizar um projeto de demonstração do modelo lógico-conceitual e convertê-lo para o relacional. Para isso, na janela de abertura do DB-Main, devemos clicar no botão Demo Project. Em seguida, é preciso clicar duas vezes em LIBRARY/Conceptual. Esses passos podem ser vistos na Figura 8. Figura 8 – Captura de tela da ferramenta CASE DB-Main com demonstração do modelo conceitual. Após seguir esse passo, aparecerá, conforme mostrado na Figura 9, uma demonstração das entidades e relacionamentos do modelo lógico-conceitual. É possível visualizar a entidade book (livro) relacionado a author (autor) por meio do relacionamento written (escrito) com tipo <0-N>:<1-N>, demonstrando que um livro pode ter sido escrito por um ou muitos autores, assim como um autor pode ter escrito de zero a muitos livros. Da mesma maneira, visualizamos o autorrelacionamento na entidade book com o relacionamento reference (referência). 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 15/26 Figura 9 – Captura de tela representando o modelo lógico-conceitual (A) e o modelo implementado para o relacional (B). Ainda na Figura 9, é possível verificar que podemos converter para o modelo relacional. Para isso, é necessário ir ao menu Transform e clicar em Relational Model . Para construção do modelo físico, clique novamente em Transform e, em seguida, Quick SQL . Dessa forma, o modelo será gerado, assim como o arquivo com o script SQL para execução no banco de dados. 2.2 Linguagem SQL Para o banco de dados relacional, a SQL (linguagem de consulta estruturada) deve ser utilizado para criação das tabelas, atributos, chaves primárias, estrangeiras e outras restrições no SGBD. A linguagem SQL ( Structured Query Language ), linguagem de consulta estruturada, fez parte da definição do modelo relacional lançado pelo pesquisador da IBM, Edgar F. Codd, em 1970. É a linguagem mais utilizada no mercado para consultas a banco de dados relacionais. Em 1986, a SQL foi padronizada pela ANSI ( American NationalStandards Institute ). Os grandes SGBDs do mercado, dentre eles Oracle Database, Microsoft SQL Server, PostgreSQL e MySQL, adotam a linguagem SQL padrão ANSI para consultas e manipulação dos dados e estruturas. A linguagem SQL se divide em dois grupos: linguagem de manipulação de dados ou DML (Data Manipulation Language) e linguagem de definição de dados ou DDL ( Data Definition Language ) . O conjunto de instruções DML possibilita a consulta, inserção, alteração e exclusão dos dados. Já no DDL, representam as instruções para definição das estruturas, tabelas e atributos. Também é possível criar ou excluir esses objetos. O SQL extraído da ferramenta CASE é formado por instruções SQL da categoria DDL. Já os dados são inseridos nesses objetos por instruções DML. Dentre as instruções DML, temos: SELECT para realizar a seleção de um conjunto de dados nas tabelas do SGBD; 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 16/26 INSERT para realizar a inserção de dados nas tabelas do SGBD; UPDATE para realizar a atualização de dados nas tabelas do SGBD; DELETE para realizar a exclusão de dados nas tabelas do SGBD. MEDEIROS (2007) explica que a sintaxe geral possui as palavras-chave, que são: SELECT para selecionar os campos; FROM, que se refere às tabelas envolvidas na consulta; e WHERE, que encerra a condição da consulta. A seguir, veja um exemplo de consulta para selecionar o nome do aluno e sua idade: SELECT nom_aluno, idade FROM ALUNO. Outro exemplo para selecionar funcionários que trabalham no departamento 10: SELECT nom_func, data_admissao FROM FUNCIONÁRIO WHERE cod_departamento=10. Na categoria DDL, temos as instruções SQL: CREATE para a criação de uma tabela, visão ou outros objetos no SGBD, incluindo os atributos chaves; ALTER para alterar uma tabela, visão ou modificar atributos; DROP para apagar um objeto no SGBD. A seguir, veja exemplos de instrução DDL para criação da tabela AUTHOR e WRITTEN, bem como seus atributos com a SQL gerada pela ferramenta DB-Main: create table AUTHOR ID_AUT -- Sequence attribute not implemented -- not null, Name char(30) not null, First_Name char(30), Origin char(30), constraint ID_ID primary key (ID_AUT)); create table written ( ID_AUT numeric(10) not null, Book_id numeric(6) not null, constraint ID_written_ID primary key (ID_AUT, Book_id)); 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 17/26 VOCÊ QUER LER? Para maiores detalhes dos principais recursos da linguagem SQL, faça a leitura do livro que trata do assunto de maneira prática, Introdução à linguagem SQL: abordagem prática para iniciantes, do autor Thomas Nield. 2.3 Implementação do modelo de entidades e relacionamentos em um banco de dados NoSQL Para demandas que envolvam dados estruturados, os bancos de dados relacionais ditos tradicionais atendem sem a necessidade de adaptações e maiores esforços pelas equipes de desenvolvimento. Entretanto, quando a questão demanda grandes volumes de dados, processamento distribuído para melhor desempenho e o armazenamento e manipulação de dados sem estrutura definida ou semiestruturados, o trabalho exige um conceito de banco de dados mais flexível quanto sua organização e propriedades. Esse banco é conhecido como NoSQL. NoSQL significa not only SQL (não apenas SQL) e o seu objetivo é entregar soluções de banco que tenham a capacidade de processar e manipular grandes volumes de dados, com alto desempenho e preparados para recepcionar diferentes estruturas, não se prendendo a um layout fixo de linha e coluna. Elmasri e Navathe colocam que o NoSQL “tem por finalidade transmitir a ideia de que muitas aplicações precisam de sistemas diferentes dos sistemas SQL relacionais tradicionais para ampliar suas necessidades de gerenciamento de dados” (ELMASRI; NAVATHE, 2016, p. 795). Ainda no mesmo texto, os autores complementam que: A maioria dos sistemas NoSQL são bancos de dados distribuídos ou sistemas de armazenamento distribuído, com foco no armazenamento de dados semiestruturados, alto desempenho, disponibilidade, replicação de dados e escalabilidade, ao contrário da ênfase em consistência imediata de dados, linguagens de 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 18/26 consulta poderosas e armazenamento de dados estruturados (ELMASRI; NAVATHE, 2016, p. 795). Dentre as características dos sistemas NoSQL, podemos destacar: Escalabilidade : normalmente, em sistemas NoSQL, a capacidade de incremento de equipamentos ou recursos é horizontal, considerando a inserção de mais nós para aumento do processamento e armazenamento distribuído. Disponibilidade : nos bancos de dados NoSQL, são encontrados sistemas de replicação para manter os dados disponíveis no caso de falha de um nó. Modelos de replicação : oferta nos bancos de dados NoSQL de modelo de replicação mestre-escravo, em que a cópia dos dados, gravada no principal, é replicada para nós escravos. Além deste, há também o modelo mestre-mestre, no qual leitura e escrita são realizadas em qualquer uma das cópias, podendo haver diferenças entre elas. Sharding de arquivos : particionamento horizontal para que os dados sejam fragmentados e acessados de forma simultânea em vários nós, distribuindo a carga do acesso. Acesso a dados de alto desempenho : utilização de técnicas de hashing ou particionamento por intervalo para possibilitar a eficiente busca aos milhões de registros. No banco de dados NoSQL, para o trabalho eficiente com grandes volumes de dados e desempenho, a garantia de consistência, disponibilidade e tolerância à partição são balanceadas e, com isso, em alguns momentos, são até abdicadas em prol do processamento. A respeito do modelo de dados, podemos citar a não exigência de um esquema. No modelo relacional, existe a necessidade de um esquema para que as estruturas e restrições dos dados sejam construídas. No NoSQL, devido à flexibilidade das estruturas, esquemas ainda que parciais podem existir ou não. Isso porque as restrições não serão especificadas no banco, e sim via aplicações que acessarão os dados. Os sistemas NoSQL podem ter o armazenamento dos dados orientados como baseados em documentos , armazenamento chave-valor , baseado em colunas e baseado em 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 19/26 grafos. Os baseados em documentos se caracterizam primariamente por armazenar dados na forma de documentos JSON (Javascript Object Notation) acessíveis por um _id. A Figura 10 representa um exemplo de documento JSON. Neste banco, teremos coleções no lugar de tabelas e documentos no lugar de tuplas. Nas tuplas, os dados estão em diversas estruturas. Figura 10 – Captura de tela com exemplo de documento JSON. Uma das soluções NoSQL orientadas a documentos existentes é o banco de dados MongoDB . Por trabalhar com documentos JSON, precisamos criar, no MongoDB, uma coleção contendo os documentos, que serão identificados unicamente por meio de um _id. VOCÊ SABIA? O JSON é uma notação de objetos bem simples e leve muito utilizada para troca de dados. Dessa forma, diversos sites e organizações disponibilizam seus dados para análises no formato JSON justamente pela facilidade com a qual diversas aplicações realizam a leitura desse formato. Para perceber como é simples o trabalho com documentos, no código-fonte a seguir, é possível visualizar a criação da coleção ALUNO, a inserção de dois documentos com estruturas diferentes e, por fim, uma consulta ao documento pelo campo “telefone”: //CRIANDO COLEÇÃO use local db.createCollection("ALUNO")//INSERINDO DOCUMENTO ALUNO_ID 1 e 2 db.ALUNO.insert{_id:"1", nome_aluno: "João Apolinário", idade: "12"}) db.ALUNO.insert{_id:"2", nome_aluno: "João Apolinário2", idade: "13", endereco: [{rua: 'Paulo IV',bairro:'Pituba'}], 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 20/26 telefone:['71-8373-833','74-7770-8778']}) //PESQUISANDO DOCUMENTOS NA COLECAO db.ALUNO.find() _id:"1", nome_aluno: "João Apolinário", idade: "12"} _id:"2", nome_aluno: "João Apolinário2", idade: "13", endereco: [{rua: 'Paulo IV',bairro:'Pituba'}], telefone:['71-8373-833','74- 7770-8778']} //FILTRANDO PELO CAMPO TELEFONE db.ALUNO.find({"telefone":"71-8373-833"}) _id:"2", nome_aluno: "João Apolinário2", idade: "13", endereco: [{rua: 'Paulo IV',bairro:'Pituba'}], telefone:['71-8373-833','74- 7770-8778']} A categoria NoSQL de armazenamento chave-valor armazena os dados constituídos por uma chave associada a um valor, podendo ser qualquer estrutura de dado, lista, documento, objeto etc. Um exemplo de solução de mercado dessa categoria é o Amazon DynamoDB. O armazenamento baseado em colunas se caracteriza por retorno rápido das colunas por meio do particionamento das tabelas e as chaves que apontam para colunas, montando, assim, as linhas . O Cassandra é um exemplo de banco NoSQL orientado a colunas. Por fim, o armazenamento baseado em grafos representa os dados em nós e grafos relacionados. Trata-se de uma base formada por grafo de informações e relacionamentos. Neste, temos o banco de dados Neo4j . Pelo que foi visto sobre NoSQL, suas características e categorias de banco de dados, deduzimos que a implementação do modelo nessa solução não segue as mesmas diretrizes já vistas no modelo relacional. O modelo de dados para o NoSQL apresenta novos desafios. Sendo assim, temos que 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 21/26 levar em conta a diversidade de soluções NoSQL, avaliar que os dados manipulados muitas vezes são semiestruturados e que os bancos NoSQL não defendem a normalização dos dados, pois a preocupação é armazenar sem um desenho tão rígido dos objetos. VOCÊ SABIA? A normalização de um banco de dados possibilita a definição de um conjunto de regras que, quando aplicados as tabelas e atributos, tem o propósito de evitar a redundância dos dados, garantindo sua integridade. Normalmente, no projeto de banco de dados relacional, a normalização é um item que deve ser definido para garantir essas propriedades. A variedade de dados exige flexibilidade nas soluções de banco de dados NoSQL desde sua modelagem. Bugiotti et al, em tradução livre, cita que a “heterogeneidade é altamente problemática para os desenvolvedores de aplicativos, mesmo dentro de cada categoria” (BUGIOTTI et al, 2014, p. 1, traduzido pelo autor). Em outras palavras, a organização dos dados fica a cargo da aplicação e, assim, a percepção de necessidade da definição e existência de um esquema com objetos pouco mutáveis, muito presente no modelo de dados, se perde. Em consideração a esses fatos, para nosso estudo de implementação do modelo, estudaremos um modelo de alto nível, denominado NoAM ( No SQL Abstract Model ), apresentado no artigo de Bugiotti et al (2014). Essa proposta continua contando com as primeiras etapas do projeto de banco de dados. Entretanto, a implementação para o NoSQL segue com algumas características específicas para sistemas baseado em documentos, armazenamento chave-valor, baseado em colunas e baseado em grafos. A proposta do NoAM é aproveitar as semelhanças entre as categorias NoSQL e introduzir elementos que permitam a generalização entre as categorias. Para esse estudo, vamos considerar a Diagrama 3, que representa o diagrama de objetos de um aplicativo de jogos on-line, no qual temos os jogadores ( players ), jogos ( games ) e rodadas ( rounds ). O diagrama de objetos representa os objetos que instanciaram ou estão “consumindo” as classes. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 22/26 Na primeira etapa do NoAM, temos a modelagem conceitual dos dados e a identificação de agregados . A modelagem conceitual visa encontrar as entidades, relacionamentos e atributos. Já a fase dos agregados objetiva representar agrupamento de dados com alguma relação. As entidades encontradas e os seus dados serão identificados como agregados. No Diagrama 3, os agregados estão em destaque por meio das linhas pontilhadas. Diagrama 3 – Objetos de um aplicativo de jogo on-line Fonte: BUGIOTTI et al, 2014, p. 5. No modelo de dados NoAM, temos um banco de dados formado por um conjunto de coleções (mesmo sentido do MongoDB) e constituído por um conjunto de blocos , que por sua vez possuem entradas . O bloco é formado pelo conceito de unidade de acesso a dados , significando que existem operações que acessam e manipulam uma unidade individual por vez. Ainda no conceito de bloco, por unidade de distribuição entende-se que as unidades são armazenadas completas em um cluster e diferentes unidades distribuídas estão em vários servidores. Além disso, um bloco é formado por um conjunto de entradas , ou seja, um componente da unidade de acesso. A segunda fase do NoAM é construída pela representação dos dados, em que cada agregado será uma coleção distinta e cada unidade será um bloco . O nome da classe é utilizado para nomear a coleção e o identificador do agregado para chave do bloco. O valor de cada agregado será o conjunto de entradas . Essa representação dos dados pode ser visualizada na Figura 11, juntamente com a coleção Player, o bloco mary e rick e as suas entradas. 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 23/26 Figura 11 – Representação dos dados no NoAM. Fonte: BUGIOTTI et al, 2014, p. 7. (Adaptado). Como última fase, após construída a representação dos dados, pode-se converter para a categoria NoSQL que se deseja implementar o modelo. Como exemplo, vamos ver o resultado da implementação no banco orientado a documento, MongoDB, e no chave- valor, Oracle NoSQL. Devido ao MongoDB ser orientado a documento e já ter o conceito natural de coleções, fica mais simples representar a implementação. Basicamente, cada bloco representa um documento , e as entradas podem ser mapeadas como campos . O Quadro 1 representa o resultado da implementação no MongoDB. Veja que o bloco mary se transformou no _id e no documento, suas entradas se transformaram nos campos e valores e a coleção Player foi implementada. Quadro 1 – Implementação no MONGODB collection Player 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 24/26 id mary document { _id:”mary”, username:”mary”, firstName:”Mary”, lastName:”Wilson”, games: [{ game:”Game:2345”, opponent:”Player:rick”}, { game:”Game:2611”, opponent:”Player:ann”} } Fonte: BUGIOTTI et al, 2014, p. 5. (Adaptado). No Oracle NoSQL, banco NoSQL baseado em chave-valor, a chave será o nome da coleção com o id da chave do bloco e o valor será representado pela entrada. A Tabela 2 representa essa implementação. Tabela 3 – Implementação no Oracle NoSQL key (/major/key/-) value /Player/mary/- /Player/rick/- /Game/2345/- {username: “mary”, firstName: “Mary”, … } {username: “rick”, firstName: “Rick”, …} {id: “2345”, firstPlayer: “Player:mary”, …} Fonte: BUGIOTTI et al, 2014, p. 4. (Adaptado). 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN…25/26 Síntese Caro estudante, Nesta unidade, vimos que um projeto de banco de dados tem diversas etapas compostas por atividades distintas, mas com um propósito final de representar o modelo de negócios e as estruturas físicas num banco de dados. Para isso, vimos que precisamos transformar o modelo entidade-relacionamento em modelo relacional , com destaque para o papel das entidades participantes, visto que podem ser regulares ou fracas . Além disso, vimos que é preciso atenção no tipo de relacionamento existente , se de 1:1 , 1:N ou N:N , se os atributos são multivalorados e se seguem um protocolo de, no mínimo, sete etapas para que possam ser implementados corretamente no SGBD. O modelo relacional pode ser desenhado utilizando algumas ferramentas CASE que dão suporte, dentre outras ações, a essa etapa do projeto de banco de dados, possibilitando a transformação em modelo físico. Os bancos de dados NoSQL se apresentam como alternativa para atender um cenário mais dinâmico de dados e estruturas. Além disso, implementações de modelo como o NoAM possibilitam a transformação do modelo lógico-conceitual para o NoSQL . Referências bibliográficas 09/11/2022 21:31 Unidade 2 - Arquitetura de dados https://student.ulife.com.br/ContentPlayer/Index?lc=lvxe2uFo%2bO4N7aXdGp7lyg%3d%3d&l=VAIsfsUdgZHkIo5illeV6A%3d%3d&cd=%2fhwN… 26/26 BUGIOTTI, F. et al. Database Design for NoSQL Systems. In: International Conference on Conceptual Modeling, 2014, Atlanta, United States. Anais … Atlanta: Springer International Publishing, 2014, pp. 223-231. ELMASRI, R.; NAVATHE, S. Sistemas de bancos de dados . 7. ed. São Paulo: Pearson, 2016. MEDEIROS, L. F. Banco de dados - princípios e prática. 1. ed. Curitiba: IBPEX, 2007. NIELD, T. Introdução à linguagem SQL : abordagem prática para iniciantes. São Paulo: Editora Novatec, 2016. SETZER, V. W.; SILVA, F. S. C. Bancos de dados . São Paulo: Ed. Edgard Blücher, 2005. VICCI, C. Banco de dados . São Paulo: Editora Pearson, 2015.BUGIOTTI, F. et al. Database Design for NoSQL Systems. In: International Conference on Conceptual Modeling, 2014, Atlanta, United States.
Compartilhar