Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • C cineclube-wiki
  • Project information
    • Project information
    • Activity
    • Labels
    • Planning hierarchy
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 0
    • Issues 0
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 0
    • Merge requests 0
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Cine Clube
  • cineclube-wiki
  • Wiki
  • banco_dados

banco_dados · Changes

Page history
banco traduzido para inglês authored Apr 01, 2021 by Augusto César Bottega Agostini's avatar Augusto César Bottega Agostini
Show whitespace changes
Inline Side-by-side
banco_dados.md
View page @ 3f1c4adb
......@@ -12,164 +12,189 @@ Aqui deve ser explicado com modelos e explicações como o Banco de Dados foi co
<h2>Modelagem Lógica: </h2>
<img src="tutorial-imagens/ModelagemLogicaCineClube.png" tittle="CineClube Modelagem Lógica">
<h2><b>Entidades: </b></h2>
<p><b>usuario: </b>Como o sistema de login será utilizando login com o Google, armazenaremos somente o email do usuario (PK, para poder relaciona-lo com outras entidades), nome e foto de perfil.</p>
<p><b>filme: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre filmes é necessário armazenar: título, título original, sinopse, crítica, curador que botou o filme no sistema, ano de lançamento, e o path para o banner do filme. Além disso também estamos utilizando um idFilme como PK.</p>
<p><b>conquista: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre conquistas é necessário armazenar: titulo, descricao, e imagem da conqusita. Além disso também estamos usando um id como PK e armazenando a meta que o usuário precisa alcançar para obter a conquista.</p>
<p><b>user: </b>Como o sistema de login será utilizando login com o Google, armazenaremos somente o email do usuario (PK, para poder relaciona-lo com outras entidades), nome e foto de perfil.</p>
<p><b>movie: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre filmes é necessário armazenar: título, título original, sinopse, crítica, curador que botou o filme no sistema, ano de lançamento, e o path para o banner do filme. Além disso também estamos utilizando um idFilme como PK.</p>
<p><b>achievement: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre conquistas é necessário armazenar: titulo, descricao, e imagem da conqusita. Além disso também estamos usando um id como PK e armazenando a meta que o usuário precisa alcançar para obter a conquista.</p>
<p><b>tag: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre tags é necessário armazenar: somente o seu nome, mas também utilizamos um ID como PK.</p>
<p><b>plataforma: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre plataforma é necessário armazenar: somente o seu nome, mas também utilizamos um ID como PK.</p>
<p><b>plataform: </b>De acordo com as definicões retiradas das reuniões com os stakeholders, sobre plataforma é necessário armazenar: somente o seu nome, mas também utilizamos um ID como PK.</p>
<h2><b>Entidades de relacionamento: </b></h2>
<h3>Sobre filtros: </h3>
<p><b>preferencia_plataforma: </b>Linka o email do usuario com o id da plataforma (as 2 PK), para fazer a relacao de N x N sobre filtrar os filmes por plataforma para um usuário especifico.</p>
<p><b>preferencia_tag: </b>linka o email do usuario com o id da tag (as 2 PK), para fazer a relacao de N x N sobre filtrar os filmes por tag para um usuário específico.</p>
<p><b>preference_plataform: </b>Linka o email do usuario com o id da plataforma (as 2 PK), para fazer a relacao de N x N sobre filtrar os filmes por plataforma para um usuário especifico.</p>
<p><b>preference_tag: </b>linka o email do usuario com o id da tag (as 2 PK), para fazer a relacao de N x N sobre filtrar os filmes por tag para um usuário específico.</p>
<p><b>Aleatoridade no filtro: </b> Deixamos a taxa de aleatoriedade dos filtros na propria entidade usuário.</p>
<h3>Sobre filmes: </h3>
<p><b>filme_plataforma: </b> Entidade de relacionamento que linka o idFilme com idPlataforma, para fazer a relação de N x N entre plataformas nas quais o filme específico está disponível.</p>
<p><b>filme_tag: </b> Entidade de relacionamento que linka o idFilme com idTag, para fazer a relação de N x N entre tags que um filme específico possui.</p>
<p><b>movie_plataform: </b> Entidade de relacionamento que linka o idFilme com idPlataforma, para fazer a relação de N x N entre plataformas nas quais o filme específico está disponível.</p>
<p><b>movie_tag: </b> Entidade de relacionamento que linka o idFilme com idTag, para fazer a relação de N x N entre tags que um filme específico possui.</p>
<h3><b>Sobre usuarios: </b></h3>
<p><b>usuario_conquista: </b> Entidade de relacionamento que linka o id usuario a id conquista, serve tanto para armazenar as conquistas adquiridas quanto o progresso de conquistas nao adquiridas, utilizando metaPontuacao<=atualPontuacao.</p>
<p><b>jaVi: </b> Entidade de relacionamento feita para armazenar os filmes ja vistos do usuário, linkando o idFilme com idUsuario e ainda armazenando em um booleano se o usuário gostou do filme ou não.</p>
<p><b>queroVer: </b> Entidade de relacionamento feita para armazenar os filmes que o usuário quer ver, linkando o idFilme com idUsuario.</p>
<p><b>user_achievement: </b> Entidade de relacionamento que linka o id usuario a id conquista, serve tanto para armazenar as conquistas adquiridas quanto o progresso de conquistas nao adquiridas, utilizando metaPontuacao<=atualPontuacao.</p>
<p><b>watched: </b> Entidade de relacionamento feita para armazenar os filmes ja vistos do usuário, linkando o idFilme com idUsuario e ainda armazenando em um booleano se o usuário gostou do filme ou não.</p>
<p><b>toWatch: </b> Entidade de relacionamento feita para armazenar os filmes que o usuário quer ver, linkando o idFilme com idUsuario.</p>
<h3><b>Sobre conquistas: </b></h3>
<p><b>conquista_filme: </b> Entidade de relacionamento feita para armazenar os filmes relacionadios à uma conquista específica.</p>
<p><b>conquista_tag: </b> Entidade de relacionamento feita para armazenar as tags relacionadas à uma conquista específica.</p>
<p><b>achievement_movie: </b> Entidade de relacionamento feita para armazenar os filmes relacionadios à uma conquista específica.</p>
<p><b>achievement_tag: </b> Entidade de relacionamento feita para armazenar as tags relacionadas à uma conquista específica.</p>
<h2>Script SQL gerado a partir do modelo lógico (astah): </h2>
CREATE TABLE conquista (
idConquista CHAR(10) NOT NULL,
titulo VARCHAR(100) NOT NULL,
descricao VARCHAR(200) NOT NULL,
pathImagem VARCHAR(100) NOT NULL,
metaPontuacao INT NOT NULL
CREATE TABLE achivievement (
idAchievement INT NOT NULL,
title VARCHAR(100) NOT NULL,
description VARCHAR(200) NOT NULL,
pathImage VARCHAR(100) NOT NULL,
targetScore INT NOT NULL
);
ALTER TABLE conquista ADD CONSTRAINT PK_conquista PRIMARY KEY (idConquista);
ALTER TABLE achivievement ADD CONSTRAINT PK_achivievement PRIMARY KEY (idAchievement);
CREATE TABLE plataforma (
idPlataforma INT NOT NULL,
nome VARCHAR(100) NOT NULL
CREATE TABLE plataform (
idPlataform INT NOT NULL,
name VARCHAR(100) NOT NULL
);
ALTER TABLE plataforma ADD CONSTRAINT PK_plataforma PRIMARY KEY (idPlataforma);
ALTER TABLE plataform ADD CONSTRAINT PK_plataform PRIMARY KEY (idPlataform);
CREATE TABLE tag (
idTag INT NOT NULL,
nome VARCHAR(100) NOT NULL
name VARCHAR(100) NOT NULL
);
ALTER TABLE tag ADD CONSTRAINT PK_tag PRIMARY KEY (idTag);
CREATE TABLE usuario (
email VARCHAR(100) NOT NULL,
aleatoriedade DOUBLE PRECISION NOT NULL
CREATE TABLE user (
idUser VARCHAR(100) NOT NULL,
name VARCHAR(100) NOT NULL,
photoPath VARCHAR(10) NOT NULL,
randomness NUMERIC(3)
);
ALTER TABLE usuario ADD CONSTRAINT PK_usuario PRIMARY KEY (email);
ALTER TABLE user ADD CONSTRAINT PK_user PRIMARY KEY (idUser);
CREATE TABLE usuario_conquista (
email VARCHAR(100) NOT NULL,
idConquista CHAR(10) NOT NULL,
atualPontuacao INT NOT NULL
CREATE TABLE user_achiviement (
idUser VARCHAR(100) NOT NULL,
idAchievement INT NOT NULL,
currentScore INT NOT NULL
);
ALTER TABLE usuario_conquista ADD CONSTRAINT PK_usuario_conquista PRIMARY KEY (email,idConquista);
ALTER TABLE user_achiviement ADD CONSTRAINT PK_user_achiviement PRIMARY KEY (idUser,idAchievement);
CREATE TABLE filme (
idFilme INT NOT NULL,
titulo VARCHAR(100) NOT NULL,
tituloOriginal VARCHAR(100) NOT NULL,
sinopse VARCHAR(500) NOT NULL,
critica VARCHAR(500) NOT NULL,
curador VARCHAR(50) NOT NULL,
ano NCHAR(4) NOT NULL,
CREATE TABLE achievement_tag (
idAchievement INT NOT NULL,
idTag INT NOT NULL
);
ALTER TABLE achievement_tag ADD CONSTRAINT PK_achievement_tag PRIMARY KEY (idAchievement,idTag);
CREATE TABLE movie (
idMovie INT NOT NULL,
title VARCHAR(100) NOT NULL,
originalTitle VARCHAR(100) NOT NULL,
synopsis VARCHAR(500) NOT NULL,
critic VARCHAR(500) NOT NULL,
curator VARCHAR(50) NOT NULL,
year NCHAR(4) NOT NULL,
pathBanner VARCHAR(100) NOT NULL
);
ALTER TABLE filme ADD CONSTRAINT PK_filme PRIMARY KEY (idFilme);
ALTER TABLE movie ADD CONSTRAINT PK_movie PRIMARY KEY (idMovie);
CREATE TABLE filme_plataforma (
idPlataforma INT NOT NULL,
idFilme INT NOT NULL
CREATE TABLE movie_plataform (
idPlataform INT NOT NULL,
idMovie INT NOT NULL
);
ALTER TABLE filme_plataforma ADD CONSTRAINT PK_filme_plataforma PRIMARY KEY (idPlataforma,idFilme);
ALTER TABLE movie_plataform ADD CONSTRAINT PK_movie_plataform PRIMARY KEY (idPlataform,idMovie);
CREATE TABLE filme_tag (
CREATE TABLE movie_tag (
idTag INT NOT NULL,
idFilme INT NOT NULL,
idMovie INT NOT NULL,
super BIT(1) NOT NULL,
peso INT NOT NULL
weight INT NOT NULL
);
ALTER TABLE filme_tag ADD CONSTRAINT PK_filme_tag PRIMARY KEY (idTag,idFilme);
ALTER TABLE movie_tag ADD CONSTRAINT PK_movie_tag PRIMARY KEY (idTag,idMovie);
CREATE TABLE jaVi (
email VARCHAR(100) NOT NULL,
idFilme INT NOT NULL,
gostei BIT(1) NOT NULL
CREATE TABLE preference_plataform (
idUser VARCHAR(100) NOT NULL,
idPlataform INT NOT NULL
);
ALTER TABLE jaVi ADD CONSTRAINT PK_jaVi PRIMARY KEY (email,idFilme);
ALTER TABLE preference_plataform ADD CONSTRAINT PK_preference_plataform PRIMARY KEY (idUser,idPlataform);
CREATE TABLE preferencia_plataforma (
email VARCHAR(100) NOT NULL,
idPlataforma INT NOT NULL
CREATE TABLE preference_tag (
idUser VARCHAR(100) NOT NULL,
idTag INT NOT NULL
);
ALTER TABLE preferencia_plataforma ADD CONSTRAINT PK_preferencia_plataforma PRIMARY KEY (email,idPlataforma);
ALTER TABLE preference_tag ADD CONSTRAINT PK_preference_tag PRIMARY KEY (idUser,idTag);
CREATE TABLE preferencia_tag (
email VARCHAR(100) NOT NULL,
idTag INT NOT NULL
CREATE TABLE toWatch (
idUser VARCHAR(100) NOT NULL,
idMovie INT NOT NULL
);
ALTER TABLE preferencia_tag ADD CONSTRAINT PK_preferencia_tag PRIMARY KEY (email,idTag);
ALTER TABLE toWatch ADD CONSTRAINT PK_toWatch PRIMARY KEY (idUser,idMovie);
CREATE TABLE queroVer (
email VARCHAR(100) NOT NULL,
idFilme INT NOT NULL
CREATE TABLE watched (
idUser VARCHAR(100) NOT NULL,
idMovie INT NOT NULL,
liked BIT(1) NOT NULL
);
ALTER TABLE queroVer ADD CONSTRAINT PK_queroVer PRIMARY KEY (email,idFilme);
ALTER TABLE watched ADD CONSTRAINT PK_watched PRIMARY KEY (idUser,idMovie);
CREATE TABLE achievement_movie (
idMovie INT NOT NULL,
idAchievement INT NOT NULL
);
ALTER TABLE achievement_movie ADD CONSTRAINT PK_achievement_movie PRIMARY KEY (idMovie,idAchievement);
ALTER TABLE user_achiviement ADD CONSTRAINT FK_user_achiviement_0 FOREIGN KEY (idUser) REFERENCES user (idUser);
ALTER TABLE user_achiviement ADD CONSTRAINT FK_user_achiviement_1 FOREIGN KEY (idAchievement) REFERENCES achivievement (idAchievement);
ALTER TABLE achievement_tag ADD CONSTRAINT FK_achievement_tag_0 FOREIGN KEY (idAchievement) REFERENCES achivievement (idAchievement);
ALTER TABLE achievement_tag ADD CONSTRAINT FK_achievement_tag_1 FOREIGN KEY (idTag) REFERENCES tag (idTag);
ALTER TABLE usuario_conquista ADD CONSTRAINT FK_usuario_conquista_0 FOREIGN KEY (email) REFERENCES usuario (email);
ALTER TABLE usuario_conquista ADD CONSTRAINT FK_usuario_conquista_1 FOREIGN KEY (idConquista) REFERENCES conquista (idConquista);
ALTER TABLE movie_plataform ADD CONSTRAINT FK_movie_plataform_0 FOREIGN KEY (idPlataform) REFERENCES plataform (idPlataform);
ALTER TABLE movie_plataform ADD CONSTRAINT FK_movie_plataform_1 FOREIGN KEY (idMovie) REFERENCES movie (idMovie);
ALTER TABLE filme_plataforma ADD CONSTRAINT FK_filme_plataforma_0 FOREIGN KEY (idPlataforma) REFERENCES plataforma (idPlataforma);
ALTER TABLE filme_plataforma ADD CONSTRAINT FK_filme_plataforma_1 FOREIGN KEY (idFilme) REFERENCES filme (idFilme);
ALTER TABLE movie_tag ADD CONSTRAINT FK_movie_tag_0 FOREIGN KEY (idTag) REFERENCES tag (idTag);
ALTER TABLE movie_tag ADD CONSTRAINT FK_movie_tag_1 FOREIGN KEY (idMovie) REFERENCES movie (idMovie);
ALTER TABLE filme_tag ADD CONSTRAINT FK_filme_tag_0 FOREIGN KEY (idTag) REFERENCES tag (idTag);
ALTER TABLE filme_tag ADD CONSTRAINT FK_filme_tag_1 FOREIGN KEY (idFilme) REFERENCES filme (idFilme);
ALTER TABLE preference_plataform ADD CONSTRAINT FK_preference_plataform_0 FOREIGN KEY (idUser) REFERENCES user (idUser);
ALTER TABLE preference_plataform ADD CONSTRAINT FK_preference_plataform_1 FOREIGN KEY (idPlataform) REFERENCES plataform (idPlataform);
ALTER TABLE jaVi ADD CONSTRAINT FK_jaVi_0 FOREIGN KEY (email) REFERENCES usuario (email);
ALTER TABLE jaVi ADD CONSTRAINT FK_jaVi_1 FOREIGN KEY (idFilme) REFERENCES filme (idFilme);
ALTER TABLE preference_tag ADD CONSTRAINT FK_preference_tag_0 FOREIGN KEY (idUser) REFERENCES user (idUser);
ALTER TABLE preference_tag ADD CONSTRAINT FK_preference_tag_1 FOREIGN KEY (idTag) REFERENCES tag (idTag);
ALTER TABLE preferencia_plataforma ADD CONSTRAINT FK_preferencia_plataforma_0 FOREIGN KEY (email) REFERENCES usuario (email);
ALTER TABLE preferencia_plataforma ADD CONSTRAINT FK_preferencia_plataforma_1 FOREIGN KEY (idPlataforma) REFERENCES plataforma (idPlataforma);
ALTER TABLE toWatch ADD CONSTRAINT FK_toWatch_0 FOREIGN KEY (idUser) REFERENCES user (idUser);
ALTER TABLE toWatch ADD CONSTRAINT FK_toWatch_1 FOREIGN KEY (idMovie) REFERENCES movie (idMovie);
ALTER TABLE preferencia_tag ADD CONSTRAINT FK_preferencia_tag_0 FOREIGN KEY (email) REFERENCES usuario (email);
ALTER TABLE preferencia_tag ADD CONSTRAINT FK_preferencia_tag_1 FOREIGN KEY (idTag) REFERENCES tag (idTag);
ALTER TABLE watched ADD CONSTRAINT FK_watched_0 FOREIGN KEY (idUser) REFERENCES user (idUser);
ALTER TABLE watched ADD CONSTRAINT FK_watched_1 FOREIGN KEY (idMovie) REFERENCES movie (idMovie);
ALTER TABLE queroVer ADD CONSTRAINT FK_queroVer_0 FOREIGN KEY (email) REFERENCES usuario (email);
ALTER TABLE queroVer ADD CONSTRAINT FK_queroVer_1 FOREIGN KEY (idFilme) REFERENCES filme (idFilme);
ALTER TABLE achievement_movie ADD CONSTRAINT FK_achievement_movie_0 FOREIGN KEY (idMovie) REFERENCES movie (idMovie);
ALTER TABLE achievement_movie ADD CONSTRAINT FK_achievement_movie_1 FOREIGN KEY (idAchievement) REFERENCES achivievement (idAchievement);
......
Clone repository
  • Imagens
    • cineclube cronograma.pdf
  • Utilizando a wiki
    • adicionando imagens
    • escrevendo em markdown
    • wiki no editor de texto
  • arquitetura
  • banco_dados
  • configuracao
  • gp
  • Home
  • horarios
  • instalacao
  • mockups
  • processo
  • requisitos
  • sprints