Depois de um longo e duradouro uintervalo de tempo, devido às provas e alguns trabalhos, estamos de volta à nossa discussão sobre a construção de um sistema especialista.
Neste "tutorial", vou mostrar como construir a base de dados, e como ela foi definida.
No caso, vamos primeiro, construir a base de regras;
A base de regras é a que vai receber as condições para que alguma informação seja validada, ou seja, ela vai receber as expressões condicionais "SE...E...ENTÃO". Esta base de regras esta considerando 3 condições de teste para cada regra.

Observe que no caso, o Nome da regra vai ser a chave primaria. Todos os campos tem o mesmo tamanho (100 caracteres), e nenhum deles é indexado. Isto é importante, porque o sistema especialista vai ser "genérico", e deverá permitir a entrada de qualquer regra, seja qual área for.
Depois disso, pressisamos criar os fatos.
Os fatos são os elementos que vão validar as regras, para que se construa o resultado. Neste caso, cada fato pode estar associado a um número X de regras. Para resolver esta situação, criei uma tabela denominada Tb_fato, conforme a figura a seguir:

Neste caso, o fato é nominado, também tendo sua chave primária no nome. Eu poderia construir uma tabela de fatos "independente", sem associar ela neste momento às regras. Mas não o fiz pelo fato de que o que quero validar são regras e fatos. Como posso ter uma regra sendo validada por apenas 1 fato, ou um conjunto de regras validando 1 fato, fiz a opção de criar uma tabela que faz o relacionamento, e permite apontar a saída desejada.

Neste caso, o que temos é a associação 1..n do nome de cada regra a cada fato. Assim, para cada regra e fato associado, eu tenho uma saída de resultado que vai validar aquela situação. Vamos ver este relacionamento:

Neste caso, o que fiz foi ampliar o conjunto "n" de resultados, e diminuir as associações de validação, e tentar conduzir, mediante agentes e boas doses de SQL, a possibilidade de gerar resultados que não sejam associativos.
O problema do meu sistema é que, embora seja feito para qualquer área de conhecimento, ele, para extender a capacidade de conhecimento, precisará de que os agentes construam suas validades em tabelas, sejam elas temporárias ou físicas. Eu resolvi este problema com a construção de 2 agentes, chamados validador e verificador.
O verificador fará a associação de N regras para N fatos, passando a criar uma tabela no BD, de acordo com a visão que ele quer ter. E o agente validador pesquisará, dentro do conjunto de regras e fatos, o resultado probabilístico daquela ocorrência, bem como o resultado que ele julgará ser o mais acertado, baseado na repetição dos dados gerados pelo validador.
E o que isto determinará? Isto determinará o grau de assertividade.
Na próxima matéria, mostrarei como construi o agente inteligente validador e o verificador.