Skip to content

Instantly share code, notes, and snippets.

@pedrokoblitz
Last active December 22, 2015 21:48
Show Gist options
  • Save pedrokoblitz/6535394 to your computer and use it in GitHub Desktop.
Save pedrokoblitz/6535394 to your computer and use it in GitHub Desktop.
/*
administracao geral e configuracao de todas as utilidades da ferramentas
utilizado primariamente para definir as instruçoes de coleta de dados e separar os documentos coletados em conjuntos e subconjuntos para funcionar como base para definir um ponto de partida para cada tipo de processamento
*/
# projeto é a maior unidade possivel e indica o objetivo da coleta e processamento de documentos
CREATE TABLE projects (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
description TEXT,
active TINYINT(2),
createdAt VARCHAR(50),
lastModified VARCHAR(50)
) ENGINE=innodb;
# alvos sao ngramas ou tokens que formarao um conjunto para extrair contextos e palavras com distribuicao similar
CREATE TABLE targets (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
active TINYINT(2),
createdAt VARCHAR(50),
lastModified VARCHAR(50)
) ENGINE=innodb;
# buscas sao ngramas ou tokens que servirao de base para a coleta de informacoes
CREATE TABLE searches (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name TEXT,
active TINYINT(2),
createdAt VARCHAR(50),
lastModified VARCHAR(50)
) ENGINE=innodb;
# associa alvos a projetos
CREATE TABLE projects_targets (
projetct_id INT NOT NULL,
target_id INT NOT NULL
) ENGINE=innodb;
# associa buscas a projetos
CREATE TABLE projects_searches (
projetct_id INT NOT NULL,
search_id INT NOT NULL
) ENGINE=innodb;
# robo é um algoritmo de varredura da web que se utilizara das buscas para coletar informacoes em suas respectivas fontes
CREATE TABLE bots (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
bot_type INT NOT NULL,
name VARCHAR(255),
cli_args VARCHAR(255)
) ENGINE=innodb;
# categorizacao de robos
CREATE TABLE bot_types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
cli_trigger VARCHAR(255) # ????
) ENGINE=innodb;
# log de execucao dos robos
CREATE TABLE runs (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
bot_id INT NOT NULL,
project_id INT NOT NULL,
start_time DATETIME,
end_time DATETIME
) ENGINE=innodb;
# informacoes sobre a execucao de cada robo, meta_tabela pois cada robo tem propriedades diferentes
CREATE TABLE run_meta (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
run_id INT NOT NULL,
run_meta_key VARCHAR(255),
run_meta_value VARCHAR(255)
) ENGINE=innodb;
# operacoes sao sub projetos
CREATE TABLE operations (
) ENGINE=innodb;
# operacoes rastreiam entidades nomeadas
CREATE TABLE operations_named_entity_targets (
) ENGINE=innodb;
# notas podem ser feitas tanto em projetos quanto em operacoes
CREATE TABLE notes (
) ENGINE=innodb;
#
CREATE TABLE operations_notes (
) ENGINE=innodb;
#
CREATE TABLE projects_notes (
) ENGINE=innodb;
/*
gerenciamento de notificacoes
provavelmente sera complicado implementar gatilhos de condicoes em uma GUI web. classes extendendo uma classe trigger deverao ser criadas para conter logica condicional que criarao os alertas, dispararao notificacoes e avalirao a performance de cada classificador ou coletor de dados
*/
# alerta é uma notificacao de que algo interessante foi encontrado
CREATE TABLE alerts (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
trigger_id INT NOT NULL,
alert VARCHAR(255)
) ENGINE=innodb;
# gatilho é uma receita para encontrar algo interessante, com uma diretriz de como agir quando isso acontecer
CREATE TABLE triggers (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
action VARCHAR(255),
description VARCHAR(255)
) ENGINE=innodb;
# status rastreia se o alerta foi recebido e uma decisao tomada ou nao
CREATE TABLE status (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
alert_id INT NOT NULL,
status VARCHAR(255)
) ENGINE=innodb;
# notas sobre a eficiencia dos gatilhos
CREATE TABLE performance_evaluations (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
alert_id INT NOT NULL,
performance VARCHAR(255)
) ENGINE=innodb;
/*
esses campos podem servir de auxilio a tarefas comuns na geracao de crud para a grande maioria das tabelas descritas aqui.
podem ser inseridos indiscriminadamente no inicio do desenvolvimento e apos a maturidade da aplicacao, terem sua utilidade comprovada ou serem descartados.
*/
active TINYINT(2) NOT NULL,
status VARCHAR(255),
createdAt DATETIME,
lastModified DATETIME,
docRef VARCHAR(255)
/*
contatos
emails, telefones, links de perfis de redes sociais e/ou qq outras paginas de perfis que o usuario possa ter criado
uma estrategia para descobrir novos perfis é identificar um username criado pelo usuario e utilizar o google para descobrir este username em URLs inurl:'username'
*/
#
CREATE TABLE phones (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
number VARCHAR(255),
phone_type VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE emails (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255),
email_type VARCHAR(255)
) ENGINE=innodb;
# perfis, em geral de redes sociais
CREATE TABLE web_accounts (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
web_account VARCHAR(255),
web_account_type_id INT NOT NULL
) ENGINE=innodb;
# tipos de perfis
CREATE TABLE web_account_types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
web_account VARCHAR(255),
web_account_prefix VARCHAR(255),
web_account_suffix VARCHAR(255)
) ENGINE=innodb;
# conta as ocorrencias de cada contato e referencia o documento onde ele aparece
CREATE TABLE contact_occurence (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
contact_id INT NOT NULL,
document_ref VARCHAR(255),
table_source VARCHAR(255),
created DATETIME
) ENGINE=innodb;
/*
contextos (ver exemplo de contextos de palavras no nltk)
assim como as palavras de distribuicao similar, contextos dependem de um alvo e um conjunto 'busca' onde esse alvo sera procurado
*/
#
CREATE TABLE contexts (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=innodb;
#
CREATE TABLE searches_targets_contexts (
search_id INT NOT NULL,
target_id INT NOT NULL,
context_id INT NOT NULL
) ENGINE=innodb;
/*
entidades nomeadas podem ser pessoas, instituiçoes, nomes proprios de maneira geral.
*/
# indice geral das entidades
CREATE TABLE named_entities (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
) ENGINE=innodb;
# informacoes sobre entidades do tipo pessoa
CREATE TABLE entity_person_meta (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
entity_id INT NOT NULL,
name VARCHAR(255) NOT NULL,
full_name VARCHAR(255) DEFAULT NULL,
position_title VARCHAR(255) DEFAULT NULL,
description TEXT DEFAULT NULL,
birth_date DATE DEFAULT NULL,
father_id INT DEFAULT NULL,
mother_id INT DEFAULT NULL
) ENGINE=innodb;
# informacoes sobre entidades do tipo instituicao
CREATE TABLE entity_institution_meta (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
entity_id INT NOT NULL,
full_name VARCHAR(255),
description TEXT
) ENGINE=innodb;
-- entity occurrence
#
CREATE TABLE entity_occurrence (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
entity_id INT NOT NULL,
created DATETIME,
document_ref VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE entity_self_occurrence (
entity_id INT NOT NULL,
entity_self_id INT NOT NULL,
created DATETIME,
document_ref VARCHAR(255)
) ENGINE=innodb;
/*
catalogo destinado a categorizar as entidades, permitir indexacao e cadastro fora da tokenstore para abstrair o processo de cadastro e busca
devera no entanto referenciar a tokenstore e/ou o indice de ngramas de alguma forma
*/
# pessoas
CREATE TABLE people (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
) ENGINE=innodb;
# empresas (instituicao)
CREATE TABLE companies (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
) ENGINE=innodb;
# orgaos do governo (instituicao)
CREATE TABLE gov_institutions (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255),
) ENGINE=innodb;
# associa indice geral a pessoas
CREATE TABLE named_entities_people (
named_entity_id INT NOT NULL,
person_id INT NOT NULL
) ENGINE=innodb;
# associa indice geral a empresas
CREATE TABLE named_entities_companies (
named_entity_id INT NOT NULL,
company_id INT NOT NULL
) ENGINE=innodb;
# associa indice geral a orgaos do governo
CREATE TABLE named_entities_gov_institutions (
named_entity_id INT NOT NULL,
gov_institution_id INT NOT NULL
) ENGINE=innodb;
# relaciona pessoas e empresas
CREATE TABLE people_companies (
person_id INT NOT NULL,
company_id INT NOT NULL
) ENGINE=innodb;
# relaciona pessoas e entidades do governo
CREATE TABLE person_gov_institutions (
person_id INT NOT NULL,
gov_institution_id INT NOT NULL
) ENGINE=innodb;
# relaciona pessoas entre si
CREATE TABLE people_self (
person1_id INT NOT NULL,
person2_id INT NOT NULL
) ENGINE=innodb;
# relaciona empresas entre si
CREATE TABLE companies_self (
company1_id INT NOT NULL,
company2_id INT NOT NULL
) ENGINE=innodb;
# relaciona entidades do governo entre si
CREATE TABLE gov_institutions_self (
gov_institution1_id INT NOT NULL,
gov_institution2_id INT NOT NULL
) ENGINE=innodb;
/*
arquivo de documentos (como documento de papel, certidao de nascimento, projeto de lei, memorando, livro, etc)
devera conter alguma referencia ao caminho do arquivo no servidor, opcional
*/
# guarda conteudo e categoria desses documentos*
CREATE TABLE file_documents (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_document_type_id INT NOT NULL,
file_document_text TEXT
) ENGINE=innodb;
# categorias de documentos*
CREATE TABLE file_document_types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_document_type VARCHAR(255)
) ENGINE=innodb;
# relaciona documentos* entre si
CREATE TABLE file_document_self (
file_document_id1 INT NOT NULL,
file_document_id2 INT NOT NULL
) ENGINE=innodb;
# relaciona documentos e entidades *
CREATE TABLE file_documents_named_entities (
file_document_id INT NOT NULL,
named_entity_id INT NOT NULL
) ENGINE=innodb;
# relaciona tags e documentos
CREATE TABLE file_documents_tags (
file_document_id INT NOT NULL,
tag_id INT NOT NULL
) ENGINE=innodb;
# informacoes sobre caminho dos documentos* no sistema
CREATE TABLE file_documents_system (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_document_id INT NOT NULL,
system_path VARCHAR(255),
size INT,
file_name VARCHAR(255),
file_extension VARCHAR(255),
downloadedAt DATETIME
) ENGINE=innodb;
/*
dicionario de localidades com organizacao hierarquica. permitira que - por exemplo - uma busca por pais inclua resultados de cidades mesmo que os documentos contendo os nomes das cidades nao contenham referencia ao nome do pais.
*/
#
CREATE TABLE paises (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
coordenada_id INT NOT NULL,
nome VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE estados (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
pais_id INT NOT NULL,
coordenada_id INT NOT NULL,
nome VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE cidades (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
nome VARCHAR(255),
coordenada_id INT NOT NULL,
estado_id INT NOT NULL,
pais_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE bairros (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
coordenada_id INT NOT NULL,
nome VARCHAR(255),
cidade_id INT NOT NULL,
estado_id INT NOT NULL,
pais_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE enderecos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
coordenada_id INT NOT NULL,
logradouro TEXT,
numero INT NOT NULL,
complemento VARCHAR(255),
bairro_id INT NOT NULL,
cidade_id INT NOT NULL,
estado_id INT NOT NULL,
pais_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE enderecos_meta (
id INT NOT NULL,
endereco_id INT NOT NULL,
meta_key VARCHAR(50),
meta_value VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE coordenadas_paises (
coordenada_id INT NOT NULL,
pais_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE coordenadas_estados (
coordenada_id INT NOT NULL,
estado_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE coordenadas_cidades (
coordenada_id INT NOT NULL,
cidade_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE coordenadas_bairros (
coordenada_id INT NOT NULL,
bairro_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE coordenadas_enderecos (
coordenada_id INT NOT NULL,
endereco_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE coordenadas (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
lat FLOAT NOT NULL,
lon FLOAT NOT NULL
) ENGINE=innodb;
/*
identificações id, cpf, passaporte, cnh, etc..
*/
#
CREATE TABLE identification (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
identification_ref VARCHAR(255),
identification_type_id INT NOT NULL,
observations TEXT
) ENGINE=innodb;
#
CREATE TABLE identification_types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
identification_type_name VARCHAR(255)
) ENGINE=innodb;
-- documents
#
CREATE TABLE document_ids (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_document_ref VARCHAR(255),
file_document_type_id INT NOT NULL,
observations TEXT,
body TEXT
) ENGINE=innodb;
#
CREATE TABLE document_id_types (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
file_document_type_name VARCHAR(255)
) ENGINE=innodb;
-- doc self relation
#
CREATE TABLE document_id_self (
document_id_id INT NOT NULL,
document_id_self_id INT NOT NULL
) ENGINE=innodb;
# aqui sao listadas as queries para inserir e modificar o banco
/*
contagem/ocorrencia de palavras, frases, termos
no momento esta modelado para guardar os termos como string/texto mas deve ser remodelada para referenciar a tokenstore
*/
-- ngrams
#
CREATE TABLE ngrams (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ngram VARCHAR(255),
ngram_size INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE ngram_occurrence (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ngram_id INT NOT NULL,
document_ref VARCHAR(255),
created DATETIME
) ENGINE=innodb;
/*
*/
-- relations
#
CREATE TABLE tags (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
tag VARCHAR(255),
) ENGINE=innodb;
#
CREATE TABLE tags_named_entities (
tag_id INT NOT NULL,
named_entity_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE tags_documents (
tag_id INT NOT NULL,
document_id INT NOT NULL
) ENGINE=innodb;
-- ja existe em outro lugar
#
CREATE TABLE tags_named_entities (
tag_id INT NOT NULL,
named_entity_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE named_entities_phones (
entity_id INT NOT NULL,
phone_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE named_entities_emails (
entity_id INT NOT NULL,
email_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE named_entities_web_accounts (
entity_id INT NOT NULL,
web_account_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE named_entities_identification (
entity_id INT NOT NULL,
identification_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE named_entities_file_documents (
entity_id INT NOT NULL,
document_id INT NOT NULL
) ENGINE=innodb;
# aqui sao listadas as queries para selecionar conjuntos do banco
/*
indice de palavras com distribuicao estatistica similar a seus respectivos alvos levando em consideracao um conjunto de documentos composto por uma busca especifica
*/
#
CREATE TABLE similars (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
) ENGINE=innodb;
#
CREATE TABLE searches_targets_similars (
search_id INT NOT NULL,
target_id INT NOT NULL,
similar_id INT NOT NULL
) ENGINE=innodb;
/*
sumarios gerados pelo processador de linguagem serao indexados aqui e guardados de volta na tokenstore como documentos. depois as frases/documentos dos sumarios poderao ser comparadas para semelhanca com frases/documentos (escritas por humanos) similares para tentar melhorar sua qualidade.
*/
#
CREATE TABLE summaries (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
docRef VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE summaries_documentIndex (
summary_id INT NOT NULL,
ducument_index_id INT NOT NULL
) ENGINE=innodb;
/*
fornece uma indexacao de palavras. ao inves de lidar diretamente com palavras, serao utilizadas tuplas de inteiros para
representar frases e documentos. isso permitira uma performance otimizada na hora de realizar operacoes complexas de contagem de
palavras como por ex frequencia de distribuicao e rastrear a ocorrencia e contagem de cada palavra ou frase, sendo estas indexadas apenas uma vez por ocorrencia (UNIQUE KEY) ao inves de armazenar registros repetidos e impedir que o banco infle de uma hora para outra.
*/
# indice de tokens, guarda o texto original da palavra ou pontuação
CREATE TABLE tokensIndex (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
token VARCHAR(255),
length INT
) ENGINE=innodb;
# relaciona cada token indexado com uma frase, guarda a ordem, classe, se é maiuscula se esta guardada em algum dicionario de referencia, se é pontuação
CREATE TABLE tokens (
index_id INT NOT NULL,
sentence_index_id INT NOT NULL,
pos_tag VARCHAR(255),
caps TINYINT(2),
isInDictionary TINYINT(2),
isPunctuation TINYINT(2),
sort_order INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE sentencesIndex (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
index_id INT NOT NULL,
document_index_id INT NOT NULL,
sort_order INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE sentences (
) ENGINE=innodb;
#
CREATE TABLE documentsIndex (
index_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
title TEXT,
document_ref VARCHAR(255),
text_string TEXT
) ENGINE=innodb;
#
CREATE TABLE metaData (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
meta_key VARCHAR(255),
meta_value VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE metaRelations (
meta_id INT NOT NULL,
entity_id INT NOT NULL,
entity_type ENUM('token', 'sentence', 'document') NOT NULL DEFAULT 'token'
) ENGINE=innodb;
/*
extraido de 140dev.com
fornece uma estrutura simples e interessante para agregar tweets e medir a influencia de cada usuario
*/
#
CREATE TABLE IF NOT EXISTS `json_cache` (
`tweet_id` bigint(20) unsigned NOT NULL,
`cache_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`cache_date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
`raw_tweet` text CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
`parsed` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`cache_id`),
KEY `tweet_id` (`tweet_id`),
KEY `cache_date` (`cache_date`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#
CREATE TABLE IF NOT EXISTS `tweets` (
`tweet_id` bigint(20) unsigned NOT NULL,
`tweet_text` varchar(160) NOT NULL,
`entities` text NOT NULL,
`created_at` datetime NOT NULL,
`geo_lat` decimal(10,5) DEFAULT NULL,
`geo_long` decimal(10,5) DEFAULT NULL,
`user_id` int(10) unsigned NOT NULL,
`screen_name` char(20) NOT NULL,
`name` varchar(40) DEFAULT NULL,
`profile_image_url` varchar(200) DEFAULT NULL,
PRIMARY KEY (`tweet_id`),
KEY `created_at` (`created_at`),
KEY `user_id` (`user_id`),
KEY `screen_name` (`screen_name`),
KEY `name` (`name`),
FULLTEXT KEY `tweet_text` (`tweet_text`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#
CREATE TABLE IF NOT EXISTS `tweet_mentions` (
`tweet_id` bigint(20) NOT NULL,
`source_user_id` bigint(20) NOT NULL,
`target_user_id` bigint(20) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `source` (`source_user_id`),
KEY `target` (`target_user_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
#
CREATE TABLE IF NOT EXISTS `tweet_tags` (
`tweet_id` bigint(20) NOT NULL,
`tag` varchar(100) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `tag` (`tag`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#
CREATE TABLE IF NOT EXISTS `tweet_urls` (
`tweet_id` bigint(20) NOT NULL,
`url` varchar(140) NOT NULL,
KEY `tweet_id` (`tweet_id`),
KEY `url` (`url`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
#
CREATE TABLE IF NOT EXISTS `users` (
`user_id` bigint(20) unsigned NOT NULL,
`screen_name` varchar(20) NOT NULL,
`name` varchar(40) DEFAULT NULL,
`profile_image_url` varchar(200) DEFAULT NULL,
`location` varchar(30) DEFAULT NULL,
`url` varchar(200) DEFAULT NULL,
`description` varchar(200) DEFAULT NULL,
`created_at` datetime NOT NULL,
`followers_count` int(10) unsigned DEFAULT NULL,
`friends_count` int(10) unsigned DEFAULT NULL,
`statuses_count` int(10) unsigned DEFAULT NULL,
`time_zone` varchar(40) DEFAULT NULL,
`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, PRIMARY KEY (`user_id`),
KEY `user_name` (`name`),
KEY `last_update` (`last_update`),
KEY `screen_name` (`screen_name`),
FULLTEXT KEY `description` (`description`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
/*
dicionario de verbos e suas conjugacoes para processamento de linguagem
esta é uma estrutura auxiliar necessaria pelo fato do portugues diferenciar a conjugacao de seus verbos numa base por pessoa
*/
#
CREATE TABLE verbos (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
infinitivo VARCHAR(255)
) ENGINE=innodb;
#
CREATE TABLE verbos_conjugacoes (
verb_id INT NOT NULL,
conjugation_id INT NOT NULL
) ENGINE=innodb;
#
CREATE TABLE conjugacoes (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
modo ENUM('ind', 'sub', 'inf','imp') NOT NULL DEFAULT 'ind',
tempo ENUM('p', 'pr-p', 'pr-i', 'pr-m-q-p', 'pr', 'f', 'f-pr') NOT NULL DEFAULT 'p',
pessoa ENUM('eu', 'tu', 'eles', 'nos', 'vos', 'eles') NOT NULL DEFAULT 'eu',
conjugacao VARCHAR(100)
) ENGINE=innodb;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment