Exemplo "N:N usando Checkbox List"

Estive estudando o Exemplo “N:N usando Checkbox List”, disponível no endereço http://www.scriptcase.com.br/exemplos/formulario-php/atualizando-relacao-n-para-n/, que mostra como é possível usar checkboxes para atualizar uma tabela de associação (ou tabela de ligação) entre as entidades “employees” e “projetc” (razão de cardinalidade N:N).

O tutorial que detalha como o exemplo foi implementado, disponível em http://www.scriptcase.com.br/tutoriais/atualizando-relacoes-muitos-para-muitos-atraves-de-checkbox-list/, é interessante, até mesmo porque mostra um exemplo não muito usual de uma tela contendo uma consulta e um formulário lado-a-lado, ambos baseados na tabela “employees”.

O tutorial começa trabalhando o formulário de Employees. Uma coisa, entretanto, me chamou a atenção em particular: a tabela de associação (“employeeprojects”) possui, além das chaves estrangeiras “employeeid” e “projectid”, um outro atributo chamado “pvalue”, um integer NULL, que não identifiquei muito bem a que se prestava. Neste formulário, durante a etapa de criação do relacionamento N:N entre as tabelas, orienta-se a definir o campo “pvalue” como Auto Increment sob o pretexto “para que não seja passado nenhum valor para este campo na tabela employeeprojects”.

Com base no exposto, lanço as seguintes perguntas:

  1. Não lhes parece semanticamente estranho atribuir um auto incremento para representar a ausência de passagem de valor?

  2. Que estratégia vocês utilizariam caso a tabela de ligação tivesse 3 chaves estrangeiras (relacionamento ternário) ao invés das 2 exploradas no tutorial? Faria sentido criar mais que um relacionamento N:N entre as tabelas?
    Obs - Eu pessoalmente resolvi um problema que estava enfrentando criando um formulário detalhes baseado na tabela de ligação, ou seja, ignorei o recurso de relacionamento N:N entre as tabelas devido a presença da terceira entidade na relação. Contudo, diante de minha pouca experiência com o SC, fiquei com a impressão que esta pode não ter sido uma solução das mais elegantes :wink:

  3. Que estratégia vocês utilizariam neste tutorial caso desejassem preencher o valor do atributo “pvalue” da tabela de ligação com um valor a ser informado pelo usuário?

Um abraço