... | @@ -12,164 +12,189 @@ Aqui deve ser explicado com modelos e explicações como o Banco de Dados foi co |
... | @@ -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>
|
|
<h2>Modelagem Lógica: </h2>
|
|
<img src="tutorial-imagens/ModelagemLogicaCineClube.png" tittle="CineClube Modelagem Lógica">
|
|
<img src="tutorial-imagens/ModelagemLogicaCineClube.png" tittle="CineClube Modelagem Lógica">
|
|
<h2><b>Entidades: </b></h2>
|
|
<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>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>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>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>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>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>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>
|
|
<h2><b>Entidades de relacionamento: </b></h2>
|
|
<h3>Sobre filtros: </h3>
|
|
<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>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>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_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>
|
|
<p><b>Aleatoridade no filtro: </b> Deixamos a taxa de aleatoriedade dos filtros na propria entidade usuário.</p>
|
|
<h3>Sobre filmes: </h3>
|
|
<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>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>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_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>
|
|
<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>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>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>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>queroVer: </b> Entidade de relacionamento feita para armazenar os filmes que o usuário quer ver, linkando o idFilme com idUsuario.</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>
|
|
<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>achievement_movie: </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_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>
|
|
<h2>Script SQL gerado a partir do modelo lógico (astah): </h2>
|
|
CREATE TABLE conquista (
|
|
CREATE TABLE achivievement (
|
|
idConquista CHAR(10) NOT NULL,
|
|
idAchievement INT NOT NULL,
|
|
titulo VARCHAR(100) NOT NULL,
|
|
title VARCHAR(100) NOT NULL,
|
|
descricao VARCHAR(200) NOT NULL,
|
|
description VARCHAR(200) NOT NULL,
|
|
pathImagem VARCHAR(100) NOT NULL,
|
|
pathImage VARCHAR(100) NOT NULL,
|
|
metaPontuacao INT 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 (
|
|
CREATE TABLE plataform (
|
|
idPlataforma INT NOT NULL,
|
|
idPlataform INT NOT NULL,
|
|
nome VARCHAR(100) 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 (
|
|
CREATE TABLE tag (
|
|
idTag INT NOT NULL,
|
|
idTag INT NOT NULL,
|
|
nome VARCHAR(100) NOT NULL
|
|
name VARCHAR(100) NOT NULL
|
|
);
|
|
);
|
|
|
|
|
|
ALTER TABLE tag ADD CONSTRAINT PK_tag PRIMARY KEY (idTag);
|
|
ALTER TABLE tag ADD CONSTRAINT PK_tag PRIMARY KEY (idTag);
|
|
|
|
|
|
|
|
|
|
CREATE TABLE usuario (
|
|
CREATE TABLE user (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
aleatoriedade DOUBLE PRECISION 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 (
|
|
CREATE TABLE user_achiviement (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
idConquista CHAR(10) NOT NULL,
|
|
idAchievement INT NOT NULL,
|
|
atualPontuacao 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 (
|
|
CREATE TABLE achievement_tag (
|
|
idFilme INT NOT NULL,
|
|
idAchievement INT NOT NULL,
|
|
titulo VARCHAR(100) NOT NULL,
|
|
idTag INT NOT NULL
|
|
tituloOriginal VARCHAR(100) NOT NULL,
|
|
);
|
|
sinopse VARCHAR(500) NOT NULL,
|
|
|
|
critica VARCHAR(500) NOT NULL,
|
|
ALTER TABLE achievement_tag ADD CONSTRAINT PK_achievement_tag PRIMARY KEY (idAchievement,idTag);
|
|
curador VARCHAR(50) NOT NULL,
|
|
|
|
ano NCHAR(4) NOT NULL,
|
|
|
|
|
|
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
|
|
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 (
|
|
CREATE TABLE movie_plataform (
|
|
idPlataforma INT NOT NULL,
|
|
idPlataform INT NOT NULL,
|
|
idFilme 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,
|
|
idTag INT NOT NULL,
|
|
idFilme INT NOT NULL,
|
|
idMovie INT NOT NULL,
|
|
super BIT(1) 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 (
|
|
CREATE TABLE preference_plataform (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
idFilme INT NOT NULL,
|
|
idPlataform INT NOT NULL
|
|
gostei BIT(1) 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 (
|
|
CREATE TABLE preference_tag (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
idPlataforma INT 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 (
|
|
CREATE TABLE toWatch (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
idTag INT 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 (
|
|
CREATE TABLE watched (
|
|
email VARCHAR(100) NOT NULL,
|
|
idUser VARCHAR(100) NOT NULL,
|
|
idFilme INT 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);
|
|
|
|
|
|
|
|
|
|
|
|
|
... | | ... | |