Banco de Dados da AEITA - Modelo de Dados

De wikITA

As tabelas abaixo definem uma estrutura genérica e expansível, que pode ser implementada em etapas.

Tabela Descrição da Tabela
DBUSER Define os usuários do site. Inicialmente, será preenchida com os dados do banco atual da AEITA. Porém, a idéia é armazenar dados de Professores do ITA de todas as épocas mais todas as pessoas que de alguma forma se relacionem com a AEITA (ganhadores do Prêmio Excelência, por exemplo). Em tese, qualquer pessoa pode ser cadastrada desde que haja aprovação de um administrador do sistema. Cada usuário é identificado internamente por um número (user_seq) que é a chave primária desta tabela. A cada usuário são associados diversos atributos: nome, apelido(s), data de nascimento, foto, data da última atualização etc.
WORKGROUP Define os grupos de usuários. Exemplos: Turma 90, Professor, Cônjuge, Visitante etc. Cada grupo é identificado pela chave primária wrkg_seq.
USER_WRKG Associa as tabelas DBUSER e WORKGROUP atribuindo, a cada usuário, um ou mais grupos. Esta atribuição é feita armazenando pares user_seq e wrkg_seq. Relacionamentos semelhantes ocorrem nas demais tabelas abaixo descritas que, por concisão, não são descritos aqui.
USER_LOGIN Para cada usuário, define N logins de acesso ao site. Apenas um destes N logins é válido para acessar o site. Cada login define univocamente um usuário. A tabela permite que um mesmo usuário possa mudar seu login ao longo do tempo.
USER_LEVEL Para cada usuário, define um nível de acesso. Este nível define as áreas do site que o usuário está autorizado a visitar. Exemplo: um usuário recém cadastrado tem um nível de acesso menor do que um usuário que tenha confirmado seu email e sido aprovado pelo administrador. O usuário recém cadastrado não tem o direito de acessar as páginas que mostram os telefones dos nojentos. O menor nível é do usuário visitante e o maior nível é do administrador do site.
USER_STATUS Para cada usuário, Define um "estado": ativo, inativo, recém cadastrado, mocado, falecido etc.
USER_LOG Armazena o histórico de acessos para cada usuário. Grava o IP de onde o usuário acessou o site, a data do acesso etc. Estes dados são úteis para prevenir e identificar acessos indevidos ao sistema.
EMAIL_TYPE Define tipos de email. Exemplo: casa, trabalho, obsoleto etc.
USER_EMAIL Para cada usuário, permite definir N emails, cada email de um tipo. Assim o usuário pode ter, por exemplo, 5 emails pessoais, 2 emails do trabalho e 53 emails obsoletos. É importante guardar emails obsoletos pois quando alguém nos disser que o email do José da Silva é silva@empresa.com podemos afirmar que "Não senhor! Este email é obsoleto!".
PHONE_TYPE Define tipos de telefone. Exemplo: fixo, celular, trabalho, fax etc.
USER_PHONE Para cada usuário, permite definir N telefones, cada telefone de um tipo. Assim o usuário pode ter, por exemplo, 3 telefones fixos, 5 celulares, 2 faxes etc. De modo análogo ao que acontece com os emails (ver acima) os números antigos (obsoletos) continuam armazenados no banco.
LANGUAGE Define uma lista de línguas. Exemplo: pt=português de portugal, pt-br= português do Brasil etc. Estas linguagens definem como determinadas áreas do site aparecem para o usuário.
COUNTRY Define uma lista de países. Pode armazenar o nome do país em várias linguas. Exemplo: Brasil em português do Brasil e Brazil em inglês.
STATE Para cada país da tabela COUNTRY permite definir N estados ou províncias. A cada estado há um nome (e.g. Minas Gerais) e uma abreviatura (e.g. MG).
CITY Para cada estado da tabela STATE permite definir N cidades.
STREET Para cada cidade da tabela CITY, contém uma lista de logradouros (ruas, avenidas, praças) com respectivo CEP. No internet há sites que informam o logradouro a partir do CEP. Ex.: http://www.buscarcep.com.br
ADDRESS_TYPE Define tipos de endereço: pessoal, trabalho, casa dos pais, obsoleto etc.
USER_ADDRESS Para cada usuário, permite definir N endereços, cada endereço de um tipo. Cada endereço contém logradouro, cidade, estado e país padronizados pelas tabelas STREET, CITY, STATE e COUNTRY. Isso reduz a possibilidade que um mesmo endereço seja grafado de várias formas (exemplo: "R Ruy Silva, 123" e "Rua Rui Silva, 123".
COMPANY Semelhante à tabela DBUSER porém armazena empresas ao invés de usuários. Cada empresa tem nome, sigla e outros atributos.
COMPANY_ADDRESS Para cada empresa, define N endereços. Ésemelhante à USER_ADDRESS.
USER_COMPANY Cada usuário é relacionado com N empresas. Datas e cargos associados ao relacionamento permitem definir em quais empresas um usuário trabalha e/ou trabalhou.
CONTACT_TYPE Define outras formas de contato com o usuário: skype, MSN, website etc.
USER_CONTACT Para cada usuário e cada tipo de contato define N formas de contato. É possível que um usuário tenha, por exemplo, 3 logins no skype, 10 no MSN etc.
USER_USER Permite relacionar os usuários entre si. Exemplo: o usuário X é cônjuge do usuário Y e pai do usuário Z.
USER_UPDATE Define que usuário atualizou (ou criou) dados de outro usuário.
USER_QUERY Define que usuário consultou dados de outro usuário.
USER_MEDIA Para cada usuário, define arquivos multimídia (foto, som, vídeo etc).
BALANCE_TYPE Tipo de evento para o qual se deseja manter controle financeiro. Ex.: Anuidade 2008, Sábado das origens, Encontro 10 anos etc.
USER_BALANCE Permite controlar saques e pagamentos feitos pelos usuários. Pode ser usado tanto para controlar o pagamento das anuidades dos associados quanto para controlar os pagamentos efetuados pela diretoria. Para cada usuário e para cada registro de BALANCE_TYPE, define N lançamentos. Cada lançamento tem: valor (positivo ou negativo), moeda ($, US$ etc), data, número do documento etc.

Banco de Dados

Ferramentas pessoais