Baixe o app para aproveitar ainda mais
Prévia do material em texto
ARQUITETURA DEARQUITETURA DE DADOSDADOS 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 NOSQLBANCO NOSQL Autor: Juracy Araujo de Almeida JuniorAutor: Juracy Araujo de Almeida Junior Revisor: Rodrigo Ramos NogueiraRevisor: 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. Autor: Juracy Araujo de Almeida Junior Revisor: Rodrigo Ramos Nogueira ARQUITETURA DE DADOS UNIDADE 2. IMPLEMENTAÇÃO DO MODELO DE ENTIDADES E RELACIONAMENTOS NO MODELO RELACIONAL E NO BANCO NOSQL INTRODUÇÃO 01 2.1 IMPLEMENTAÇÃO DO MODELO DE ENTIDADES E RELACIONAMENTOS NO MODELO RELACIONAL 02 2.2 LINGUAGEM SQL 17 2.3 IMPLEMENTAÇÃO DO MODELO DE ENTIDADES E RELACIONAMENTOS EM UM BANCO DE DADOS NOSQL 19 SÍNTESE 28 REFERÊNCIAS BIBLIOGRÁFICAS 29 UNIDADE 2. ARQUITETURA DE DADOS 1 Dessa forma, caro estudante, nesta unidade você irá aprender como realizar a 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. 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 UNIDADE 2. ARQUITETURA DE DADOS 2 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 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). UNIDADE 2. ARQUITETURA DE DADOS 3 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. 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 A2, ..., An), também indicada por r(R), é um conjunto de n tuplas r = {tp t2, ..., ím}. Cada n tuplas t é uma lista ordenada de n valores t = UNIDADE 2. ARQUITETURA DE DADOS 4 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 <v1, v2, ..., vn>, em que cada valor v., 1 <i < n, é um elemento de dom (Ai) ou é um valor especial NULL. O valor i-ésimo na tupla t, que corresponde ao atributo Ai, é referenciado como t[Ai] ou t.Ai (ou t[i] na notação posicional) (VICCI, 2015, p. 74). RELAÇÃO/TABELA: FORNECEDOR 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 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 <v1, v2, ..., vn>, em que cada valor v., 1 <i < n, é um elemento de dom (Ai) ou é um valor especial NULL. O valor i-ésimo na tupla t, que corresponde ao atributo Ai, é referenciado como t[Ai] ou t.Ai (ou t[i] na notação posicional) (VICCI, 2015, p. 74). RELAÇÃO/TABELA: FORNECEDOR 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 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 <v1, v2, ..., vn>, em que cada valor v., 1 <i < n, é um elemento de dom (Ai)ou é um valor especial NULL. O valor i-ésimo na tupla t, que corresponde ao atributo Ai, é referenciado como t[Ai] ou t.Ai (ou t[i] na notação posicional) (VICCI, 2015, p. 74). RELAÇÃO/TABELA: FORNECEDOR 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 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 <v1, v2, ..., vn>, em que cada valor v., 1 <i < n, é um elemento de dom (Ai) ou é um valor especial NULL. O valor i-ésimo na tupla t, que corresponde ao atributo Ai, é referenciado como t[Ai] ou t.Ai (ou t[i] na notação posicional) (VICCI, 2015, p. 74). RELAÇÃO/TABELA: FORNECEDOR 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 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 <v1, v2, ..., vn>, em que cada valor v., 1 <i < n, é um elemento de dom (Ai) ou é um valor especial NULL. O valor i-ésimo na tupla t, que corresponde ao atributo Ai, é referenciado como t[Ai] ou t.Ai (ou t[i] na notação posicional) (VICCI, 2015, p. 74). RELAÇÃO/TABELA: FORNECEDOR 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 ou por intervalo de 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 UNIDADE 2. ARQUITETURA DE DADOS 5 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 ou por intervalo de 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 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 UNIDADE 2. ARQUITETURA DE DADOS 6 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 referenciaa 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 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 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 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 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 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. UNIDADE 2. ARQUITETURA DE DADOS 7 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, 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. UNIDADE 2. ARQUITETURA DE DADOS 8 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, 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 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. TÉCNICA DE CHAVE ESTRANGEIRA Consideramos duas relações, S e T, e escolhemosaquela 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. 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 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. 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. UNIDADE 2. ARQUITETURA DE DADOS 9 Técnica 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. 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. Técnica de relação combinada Combina dois tipos de entidade e relacionamento em uma relação, isso quando ambas relações possuem participação total. 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 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. 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. 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. UNIDADE 2. ARQUITETURA DE DADOS 10 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. 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 criada a 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. UNIDADE 2. ARQUITETURA DE DADOS 11 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 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. UNIDADE 2. ARQUITETURA DE DADOS 12 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. 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, UNIDADE 2. ARQUITETURA DE DADOS 13 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 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 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 MÚLTIPLAS RELAÇÕES – SUPERCLASSES E SUBCLASSES Criar uma relação L1 para a superclasse C com sua chave primária e uma relaçãoLn 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. 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 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 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 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. UNIDADE 2. ARQUITETURA DE DADOS 14 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 – superclasses e subclasses 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 um atributos de tipos 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. 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. Múltiplas relações – Apenas subclasses 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. Relação única com atributos de múltiplos tipos 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. 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 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 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 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. UNIDADE 2. ARQUITETURA DE DADOS 15 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). 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 UNIDADE 2. ARQUITETURA DE DADOS 16 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 National Standards 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 SQLse 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; 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. UNIDADE 2. ARQUITETURA DE DADOS 17 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)); VOCÊ QUER LER? UNIDADE 2. ARQUITETURA DE DADOS 18 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 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)); 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 deUNIDADE 2. ARQUITETURA DE DADOS 19 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 eficientecom 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. consulta poderosas e armazenamento de dados estruturados (ELMASRI; NAVATHE, 2016, p. 795). UNIDADE 2. ARQUITETURA DE DADOS 20 Os sistemas NoSQL podem ter o armazenamento dos dados orientados como baseados em documentos, armazenamento chave-valor, baseado em colunas e baseado em 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 Os sistemas NoSQL podem ter o armazenamento dos dados orientados como baseados em documentos, armazenamento chave-valor, baseado em colunas e baseado em 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'}], 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']} UNIDADE 2. ARQUITETURA DE DADOS 21 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'}], 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']} 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'}], 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 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? UNIDADE 2. ARQUITETURA DE DADOS 22 //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. OCassandra é 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 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. 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 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'}], 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']} UNIDADE 2. ARQUITETURA DE DADOS 23 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. 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. UNIDADE 2. ARQUITETURA DE DADOS 24 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, significandoque 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. UNIDADE 2. ARQUITETURA DE DADOS 25 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 UNIDADE 2. ARQUITETURA DE DADOS 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). 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). 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 UNIDADE 2. ARQUITETURA DE DADOS 27 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). 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). 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 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). 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). 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). 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). 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 UNIDADE 2. ARQUITETURA DE DADOS 28 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. 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 UNIDADE 2. ARQUITETURA DE DADOS 29
Compartilhar