Bem vindo ao meu projeto One for All

Neste Projeto eu irei:

  • Modelar um banco de dados

  • Identificar entidades , atributos e relacionamentos

  • Aplicar a 1ª, 2ª e 3ª Forma Normal

  • Criar tabelas

  • Lidar com VIEWs

  • Alterar tabelas existentes

  • Criar reações dinâmicas com TRIGGERS


Normalizarei uma tabela na terceira forma normal e acessarei as informações desta tabela através de queries utilizando SQL.

Você pode ter acesso a este Projeto do seguinte modo:

  • Clone o repositório

Entre na pasta do repositório que você acabou de clonar

Instale as dependências:

  • npm install Pronto Você já pode ver as minhas Querys!
  1. Leia a pergunta e crie um arquivo na pasta raiz do projeto chamado desafioN.sql, em que N é o número do desafio (exemplo: desafio3.sql). Para o primeiro desafio, é preciso criar também o arquivo de configurações desafio1.json também na pasta raiz do projeto.

Normalize as tabelas para a 3ª Forma Normal

Abaixo você pode visualizar e baixar uma planilha com as tabelas que deverão ser normalizadas:

Tabela não normalizada "Spotify Clone" Faça o download dela aqui

Antes de tudo, você deverá modelar e normalizar essas tabelas para a 3° Forma Normal. Monte quantas planilhas e tabelas forem necessárias para criar essa versão normalizada, desde que você siga as regras de negócio. Não é necessário criar o código SQL neste momento.

Embora não seja necessário, é recomendado que você crie suas planilhas na sequência 1ª -> 2ª -> 3ª Forma Normal.

Caso haja dúvidas, consulte o material já passado até hoje para te auxiliar.

Seu banco de dados deve seguir as regras de negócio e ser capaz de recuperar:

  • Informações sobre quais planos estão disponíveis e seus detalhes;

    • Cada pessoa usuária pode possuir apenas um plano.
  • Informações sobre todas as pessoas artistas;

    • Uma pessoa artista pode ter vários álbuns;
    • Uma pessoa artista pode ser seguida por várias pessoas usuárias.
  • Informações sobre todos os álbuns de cada artista;

    • Para fins deste projeto, considere que cada álbum possui apenas uma pessoa artista como principal;
    • Cada álbum possui várias canções.
  • Informações sobre todas as canções de cada álbum;

    • Para fins deste projeto, considere que cada canção está contida em apenas um álbum.
  • Informações sobre todas as pessoas usuárias, seus planos, seu histórico de reprodução e pessoas artistas seguidas.

    • Uma pessoa usuária pode possuir apenas um plano;
    • Cada música do histórico de reprodução pode aparecer uma única vez por pessoa (para simplificar, considere que o objetivo do histórico é saber quais canções já foram reproduzidas e não quantas vezes foram reproduzidas);
    • Uma pessoa usuária pode seguir várias pessoas artistas, mas cada pessoa artista pode ser seguida apenas uma vez por pessoa usuária.

Testes:

  1. Para executar localmente os testes, é preciso escrever o seguinte no seu terminal:
    MYSQL_USER=<SEU_NOME_DE_PESSOA_USUARIA> MYSQL_PASSWORD=<SUA SENHA> HOSTNAME=<NOME_DO_HOST> npm test
  • Ou seja, suponha que para poder acessar a base de dados feita neste projeto você tenha root como seu nome de pessoa usuária, password como senha e localhost como host. Logo, você executaria:

    MYSQL_USER=root MYSQL_PASSWORD=password HOSTNAME=localhost npm test
  • Usando o exemplo anterior de base, suponha que você não tenha setado uma senha para root. Neste caso, você executaria:

    MYSQL_USER=root MYSQL_PASSWORD= HOSTNAME=localhost npm test