A Plataforma Moodle é um sistema modular, ou seja, é um ambiente de gerenciamento de vários módulos voltado para gerenciamento de cursos. A estrutura da base de dados reflete muito bem isso.
Padrão de Nome das Tabelas
As tabelas no banco de dados são compostas pelo prefixo e nome do módulo. mdl_ é o prefixo padrão. Isso pode ser alterado no momento de instalação. Por exemplo, a tabela do módulo fórum é mdl_forum. Sendo mdl_ é o prefixo e forum é o nome do módulo. Todos os módulos seguem esse padrão.
Módulos que não são do Núcleo do Sistema
Os módulos que não compões o núcleo do sistema ficam registradas na tabela mdl_modules. Para visualizar esses módulos, basta fazer uma consulta na tabela mdl_modules, usando o seguinte comando SQL:
SELECT id,name FROM mdl_modules
Resultado da pesquisa:
Id name
1 assignment
2 chat
3 choice
4 data
5 forum
6 glossary
7 hotpot
8 journal
9 label
10 lams
11 lesson
12 quiz
13 resource
14 scorm
15 survey
16 wiki
17 workshop
Essa consulta foi feita nas versões 1.9.3 e 1.9.7 do Moodle. Isso já é padrão da versão 1.9+ A consulta lista os módulos que vêm na distribuição padrão do Moodle. A consulta traz os campos id (chave de identificação) e name (nome do módulo).
Tabela Principal e Secundária do Módulo
A tabela principal de cada modulo é prefixo + nome do módulo. Em cada módulo há outras tabelas, ou seja, tabelas secundárias. Por exemplo, a tabela principal do fórum é mdl_forum (prefixo + nome do módulo). O fórum é composta por tópicos de discussões de comentários. Pois, as tabelas secundárias são:
Padrão de Nome das Tabelas
As tabelas no banco de dados são compostas pelo prefixo e nome do módulo. mdl_ é o prefixo padrão. Isso pode ser alterado no momento de instalação. Por exemplo, a tabela do módulo fórum é mdl_forum. Sendo mdl_ é o prefixo e forum é o nome do módulo. Todos os módulos seguem esse padrão.
Módulos que não são do Núcleo do Sistema
Os módulos que não compões o núcleo do sistema ficam registradas na tabela mdl_modules. Para visualizar esses módulos, basta fazer uma consulta na tabela mdl_modules, usando o seguinte comando SQL:
SELECT id,name FROM mdl_modules
Resultado da pesquisa:
Id name
1 assignment
2 chat
3 choice
4 data
5 forum
6 glossary
7 hotpot
8 journal
9 label
10 lams
11 lesson
12 quiz
13 resource
14 scorm
15 survey
16 wiki
17 workshop
Essa consulta foi feita nas versões 1.9.3 e 1.9.7 do Moodle. Isso já é padrão da versão 1.9+ A consulta lista os módulos que vêm na distribuição padrão do Moodle. A consulta traz os campos id (chave de identificação) e name (nome do módulo).
Tabela Principal e Secundária do Módulo
A tabela principal de cada modulo é prefixo + nome do módulo. Em cada módulo há outras tabelas, ou seja, tabelas secundárias. Por exemplo, a tabela principal do fórum é mdl_forum (prefixo + nome do módulo). O fórum é composta por tópicos de discussões de comentários. Pois, as tabelas secundárias são:
- mdl_forum_discussions – Tabela dos tópicos de discussão do fórum
- mdl_forum_posts - Tabela de comentários do fórum
- mdl_forum_ratings - Tabela de nota do fórum
Nas tabelas secundárias dá para notar que o padrão do nome é prefixo + nome do módulo + funcionalidade do módulo.
Embora tomamos como exemplo a tabela do fórum, esse padrão se aplica a todos os módulos.
Colunas Padrão nas Principais Tabelas que não são do Núcleo do Sistema
Até agora deu para entender a estrutura das tabelas dos módulos. Em cada tabela do módulo que não seja do núcleo do sistema, por padrão, deve as seguintes colunas:
Embora tomamos como exemplo a tabela do fórum, esse padrão se aplica a todos os módulos.
Colunas Padrão nas Principais Tabelas que não são do Núcleo do Sistema
Até agora deu para entender a estrutura das tabelas dos módulos. Em cada tabela do módulo que não seja do núcleo do sistema, por padrão, deve as seguintes colunas:
- id – Chave de identificação de cada registro da instância do módulo.
- name – Nome do registro da instância do módulo.
- course – Id do curso em que o módulo está vinculado. É a chave estrangeira da tabela mdl_course. Isso significa que cada registro da instancia de um módulo deve estar obrigatoriamente vinculado a um determinado curso.
Com esse padrão, torna possível montar uma rotina que faz leitura automática de todos os módulos. Para tornar isso mais claro, vamos ver um exemplo.
O comando SQL abaixo faz uma consulta dos campos padrões do módulo fórum.
SELECT id, name, course FROM mdl_forumResultado da pesquisa:
id name course
1 Fórum Teste I 2
2 Fórum Teste II 2
3 Dúvidas Gerais 3
A consulta retorna três registros de fórum. A coluna course indica que os fóruns registrados pertencem aos cursos cujo id são 2 e 3. A mesma pesquisa pode ser aplicada a qualquer módulo, basta substituir a parte do nome da tabela após o prefixo pelo nome do outro módulo. Para pesquisar no módulo do questionário, o comando SQL seria:
SELECT id, name, course FROM mdl_quiz
Isso não se aplica aos módulos que compões ao núcleo do sistema tais como usuário, curso, log etc.
Tabelas dos módulos do sistema
mdl_user – Tabela principal do módulo do usuário
mdl_course - Tabela principal do módulo do curso
mdl_log - Tabela principal do módulo de log
etc.
O comando SQL abaixo faz uma consulta dos campos padrões do módulo fórum.
SELECT id, name, course FROM mdl_forumResultado da pesquisa:
id name course
1 Fórum Teste I 2
2 Fórum Teste II 2
3 Dúvidas Gerais 3
A consulta retorna três registros de fórum. A coluna course indica que os fóruns registrados pertencem aos cursos cujo id são 2 e 3. A mesma pesquisa pode ser aplicada a qualquer módulo, basta substituir a parte do nome da tabela após o prefixo pelo nome do outro módulo. Para pesquisar no módulo do questionário, o comando SQL seria:
SELECT id, name, course FROM mdl_quiz
Isso não se aplica aos módulos que compões ao núcleo do sistema tais como usuário, curso, log etc.
Tabelas dos módulos do sistema
mdl_user – Tabela principal do módulo do usuário
mdl_course - Tabela principal do módulo do curso
mdl_log - Tabela principal do módulo de log
etc.
Bem, você já deve ter sacado como é o padrão e a estrutura das tabelas do Moodle. Caso queira explorar mais afundo isso, clique aqui, e acesse um arquivo com dump, ou seja, um backup da estrutura de todas as tabelas do Moodle 1.9.3 e com dados reais sobre curso. Estudar banco de dados não é uma tarefa muito mole, por isso lhe desejo boa sorte e muita paciência.
muinto legal mesmo eu consegui fazer isso tudo ai
ResponderExcluirValeu pelo feedback
ExcluirGostei da explicação, bem clara e objetiva. Gostaria de saber se há como fazer um select da quantidade de vezes que determinado aluno entrou num questionário ou forum ?
ResponderExcluirMichael,
ResponderExcluirVeja como consultar o tatal de acesso numa atividade no fórum da comunidade Badiu: http://comunidade.badiu.com.br/mod/forum/discuss.php?d=136
Muito legal Badiu!
ResponderExcluirQueria aproveitar e perguntar sobre uma dúvida que tenho...no cadastro do perfil do usuário tem o campo cidade. Alguém já pensou em utilizar uma base pronta com a relação de cidades brasileiras, por exemplo, para que o usuário faça uma seleção dentre as opções que já existem? Pergunto pois quando da necessidade de emissão de relatórios cada usuário cadastra a cidade de uma forma. Pensei que pudesse ser um meio de padronizar e facilitar a vida. rsrs obrigada! Abraços
Aqui no meu trabalho é feito assim.... é ruim pro programador interpretar as vezes mas é bom nesse sentido sim
ExcluirEstou encontrando um erro quando um professor, nem todos, tenta lançar notas dos alunos exibe o erro: subquery retornou mais de uma linha.
ResponderExcluirAlguém pode me ajudar?
return query
Excluir