Escolar Documentos
Profissional Documentos
Cultura Documentos
São Carlos
Junho de 2015
Diretor (Nome)
Ator (Nome)
Linguagem (Idioma)
Gênero (Tipo)
1
Possui (Gênero, Filme)
Legenda (Idioma)
5
5
Conta (ID)
2
Avalia (Perfil, Filme, Nota*, DiaNota*, MêsNota*, AnoNota*, TextoOpinião, DiaOpinião,
MêsOpinião, AnoOpinião)
Filme --> Um filme pode ser de baixa renda e não ter uma sinopse, nem mesmo data definida
de lançamento. Classificação não pode ser nula, pois a faixa etária não pode ser nula, por lei.
Thumb é o campo de feedback dos usuários, e há a possibilidade do vídeo não possuir um
feedback de usuário algum. Todos os vídeos devem ter uma duração e um bit que define se o
vídeo é um filme, ou episódio de série.
Possui --> Todos os episódios de série devem fazer parte de uma série, com uma temporada.
Logo, os campos não podem ser nulos.
Plano --> Todo plano deve ter uma descrição e um valor de cobrança.
Usuário --> Todo usuário deve ter um nome, e-mail e uma data de nascimento. Plano e Forma
de Pagamento podem ser nulos, pois existe a possibilidade do usuário não possuir um plano
ativo de pagamento. O usuário existirá no banco de dados, mas, não poderá assistir aos vídeos.
Série --> Número de temporadas não pode ser nulo, pois toda série tem um número definido
de temporadas, mesmo que uma só. Ex: Cosmos; um documentário, em forma de série, que
possui uma temporada, apenas.
Cartão de crédito --> Para que haja uma renovação automática da mensalidade, todos os
campos não podem ser nulos.
Débito em conta --> Para que haja uma renovação automática da mensalidade, todos os
campos não podem ser nulos.
RelForma de Pagamento --> Todo pagamento deve ser feito de alguma forma.
Pagamento --> Todo pagamento gera um código de fatura e permite ao usuário utilizar o
serviço, por um dado intervalo de tempo.
Dispositivo --> Uma máquina pode ser criada sem nome, mas, não sem um SO.
Ponto de Acesso --> Todo ponto de acesso deve ter um IP para conexão.
Perfil Infantil --> Todo perfil infantil deve ter uma Faixa Etária para assistir aos vídeos com uma
dada classificação etária.
Perfil Adulto --> O perful adulto pode ter, ou não, uma lista de preferências.
Avalia --> O usuário, ao avaliar o vídeo, deve dar uma nota, mas um texto explicando o porquê
da nota não é necessário.
Amizade --> O início de uma amizade deve ser feito por uma solicitação, mas isso não implica a
contraparte aceitar a solicitação.
Exibição --> Toda pausa deve ser feita em um dado tempo no vídeo, e, uma data para essa
pausa.
Quem Pausa --> Uma pausa deve ser feita por um perfil, que pertence a um usuário.
Recomendação --> Uma recomendação não precisa ter um comentário, por definição.
Dependências Funcionais
Observação: Para toda relação com um único atributo chave ou conjunto de atributos
compondo uma chave, considera-se que existe dependência funcional trivial e, portanto, esta
não é explicitada abaixo.
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------
1 ) Utilizaram-se ilustrações como 1 para ligar atributos de chaves estrangeiras aos seus
respectivos atributos-chave, devido à distância (no papel) entre as relações.
1)
Obs2: Optou-se por criar uma nova relação (Possui) ao invés de acrescentar os campos
"TítuloSérie" e "TítuloTemporada" na relação "Filme" pois isto implicaria na ocorrência de
vários campos nulos para esses atributos nas instâncias (existem mais filmes que episódios de
séries).
2)
Diretor (Nome)
Ator (Nome)
Obs: Utilizamos a alternativa 3 pois esta garante especialização total (não garantida pelas
alternativas 1 e 2) e o conjunto de entidades genéricas possui poucos atributos.
3)
Obs: Perfil Infantil é entidade fraca de Perfil Adulto, porém, da forma como foi decidido o
mapeamento, isso é impossível de ser representado conjuntamente com a especialização.
Obs2: Utilizamos a alternativa 3 pois a entidade genérica possui poucos atributos e garantimos
a especialização total (o que não ocorre nas alternativas 1 e 2).
Poderíamos ter utilizado o procedimento padrão 7 ou 9, porém desta maneira não poderíamos
garantir exclusão mútua; portanto optou-se por utilizar o procedimento padrão 8.
4)
Obs: Utilizamos a alternativa 3 pois a entidade genérica possui poucos atributos e garantimos a
especialização total (o que não ocorre nas alternativas 1 e 2); não utilizamos a alternativa 2
pois os conjuntos de entidades específicas possuem muitos atributos, o que geraria um grande
número de campos nulos.
Poderíamos ter utilizado o procedimento padrão 7 ou 9, porém desta maneira não poderíamos
garantir exclusão mútua; portanto optou-se utilizar o procedimento padrão 8.
5)
Obs: "Série" possui participação total no relacionamento "possui" com "Temporada", deve ser
acionado quando uma "Temporada" for criada.
6)
Obs: Devido à dependência funcional (CPFTitular -> Nome), dividiu-se a relação "Débito em
Conta" em duas.
7)
Obs: Devido às dependências funcionais (Usuário -> Perfil e Dispositivo -> IP), dividiu-se a
relação "Acesso" em três.
8)
Pausa (Perfil, Filme)
Obs: Devido às dependências funcionais (Perfil -> Usuário), dividiu-se a relação "Pausa" em
duas.
Definição de Domínios
Nome Completo : conjunto de todos os nomes possíveis para uma pessoa – string de 50
caracteres
Nome Profissão : conjunto de todos os nomes possíveis para uma profissão – string de 30
caracteres
ISBN: conjunto de todos os códigos possíveis que definem uma película – inteiro de
0000000000000 até 9999999999999, todos com 13 dígitos
Classificação: conjunto de todos os números que definem uma classificação – inteiro 2 dígitos
de 0 a 18
Ano de Lançamento: conjunto de todos os números que definem um ano em que um filme
possa ser lançado – inteiro de 4 dígitos entre 1895 e 2016
Thumb: conjunto de todos os números que definem uma avaliação – inteiro de 2 dígitos, com
uma casa decimal, entre 0 e 10
Título Filme: conjunto de todos os nomes possíveis para um filme – string 30 caracteres
Nome Plano: conjunto de todos os nomes possíveis para um plano – string 30 caracteres
Descrição Plano: conjunto de todos os textos possíveis para descrever um plano – string 300
caracteres
Valor Plano: conjunto de todos os números possíveis que definem o preço de um plano –
inteiro de 4 dígitos com 2 casas decimais, entre 01.00 e 99.99
CPF Usuário: conjunto de todos os números possíveis que definem um CPF de uma pessoa –
inteiro 11 dígitos
Email Usuário: conjunto de todos os caracteres possíveis que definem um email – string de 15
caracteres
Título Série: conjunto de todos os nomes possíveis para uma série – string 30 caracteres
Forma Pagamento: indica qual o tipo de pagamento escolhido (débito em conta, cartão de
crédito ou conta no paypal)
Código de Segurança Cartão: conjunto de todos os números possíveis que definem um código
de segurança – inteiro de 3 dígitos
Data de Vencimento: conjunto de todos os números que definem uma data – inteiro de 4 a 6
dígitos entre a data atual e 2025
Bandeira: conjunto de todos os nomes possíveis para uma Bandeira de Cartão de Crédito –
string de 10 caracteres
Número da Conta: conjunto de todos os caracteres que definem uma conta bancária – string
de 6 a 16 caracteres
Número Agência: conjunto de todos os números que definem uma agência – inteiro de 6 a 10
dígitos
Senha Paypal: conjunto de todos os caracteres possíveis que definem uma senha – string de
20 caracteres
Período: conjunto de todos os números possíveis que definem, em dias, o período para o
pagamento – inteiro de 6 dígitos
Nome Dispositivo: conjunto de todos os nomes possíveis que definem um dispositivo – string
de 30 caracteres
Versão do SO: conjunto de todos os caracteres que definem uma versão de SO – string de 30
caracteres
Time Stamp de Acesso: conjunto de todos os números que definem a data e a hora de um
acesso – inteiro de 8 dígitos
ID Conta: conjunto de todos os números que definem o ID de uma conta – inteiro de 10 dígitos
Faixa Etária: conjunto de todos os números que definem uma faixa etária – inteiro de 2
dígitos, entre 1 e 18
Apelido Perfil: conjunto de nomes possíveis que definem um apelido de um perfil – string 20
caracteres
Tipo Perfil: conjunto de caracteres que definem o tipo de um perfil – string de 10 caracteres,
Infantil ou Adulto
Dia: conjunto de inteiros possíveis que definem um dia – inteiro de 2 dígitos, entre 01 e 31
Mês: conjunto de inteiros possíveis que definem um mês – inteiro de 2 dígitos, entre 01 e 12
Ano: conjunto de inteiros possíveis que definem um ano – inteiro de 4 dígitos entre 2015 e
2050
Último tempo Exibição: conjunto de valores para indicar hora, minuto e segundo em que um
filme se encontra ou foi pausado - inteiro de 6 dígitos
Texto Opinião: conjunto de todos os textos possíveis que definem uma opinião – string de
1000 caracteres
Solicitação Amizade: conjunto de todos os textos possíveis para uma solicitação de amizade –
string de 300 caracteres
Ator (Nome)
Linguagem (Idioma)
Gênero (Tipo)
Legenda (Idioma)
Dom (IP) = IP
Conta (ID)
Dom (ID) = ID Conta