Server Side Modelo Relacional

De GEATI - Grupo de Estudos Avançados em TI
Ir para: navegação, pesquisa

O esquema de dados utilizado foi o do exemplo da sessão "Modelos de dados NoSQL" que mostrava um esquema de um BDR. As tabelas deste BD foram, cliente, produto, item da nota fiscal e nota fiscal. Utilizando as relações como mostradas no exemplo. O banco de dados utilizado na aplicação foi o MySQL, este tendo duas formas de ser programado no PHP. A forma procedural, que esta por entrar em desuso e PDO(PHP Data Object), a mais correta. Graças ao uso da tecnologia PDO, se fosse de interesse usar outro BDR como por exemplo PostgreSQL, a unica diferença seria no campo caminho do objeto da conexão criado. Vale ressaltar que sempre que a página PHP fosse executar qualquer tipo de query, seria necessario dar um include da pagina contendo a conexão mostrada a seguir.

ConexaoRel.png
Para usar outro BD, a unica diferença seria trocar mysql:host=localhost;dbname=relacional pelo caminho do BD usado e logicamente o login e senha.

Inicialmente, por falta de pratica em programação web, foi usada a forma procedural, além disso, não havia sido utilizada a tecnologia AJAX, o que viria a ser de extrema importancia para a aplicação já que quando fosse ser usado o MongoDB, não seria necessário fazer o site todo de novo, além da aplicação perder flexibilidade e organização.

A seguir, são apresentados detalhes do código da aplicação server side usando banco de dados relacional. A criação do BD se deu através de queries do tipo ‘CREATE TABLE’ com os respectivos Primary keys e Foreign Keys, representados na Figura 2. Os dados da tabela Produto, necessários antes de colocar o site em funcionamento, foram inseridos através de queries simples do tipo ‘INSERT’.

Código do Login

Com os dados enviados pelo cliente, foi feita a verificação da compatibilidade do login e senha através de uma query simples de SELECT da tabela Cliente. O id do cliente foi salvo na sessão no caso de alguma compra ser efetuada, saber qual foi o cliente que a fez. Segue parte mais crucial do código.

LoginRel.png

Percebe-se que o retorno do BD para a query SELECT será um vetor de registros, podendo este ser vazio.

Código de Cadastro

Com os dados enviados pelo cliente, foi feita uma simples query de INSERT na tabela Cliente.

CadastroRel.png

Percebe-se que o retorno do BD a query de INSERT sera um booleano, que nesta aplicação será utilizado para informar ao cliente sobre o sucesso ou falha da transação.

Código de Atualização de senha

Com os dados enviados pelo cliente, foi feita uma query um pouco mais complexa porém ainda simples de UPDATE da tabela cliente, alterando a senha do registro que tivesse login e senha compatíveis com os informados pelo usuário.

AtualizaçãoSenhaRel.png

O retorno do BD para a query UPDATE será um vetor dos registros atualizados, podendo este ser maior ou igual a 0

Código de Deleção de usuario cadastrado

Parecida com a query de atualização de senha, foi deletado o registro onde a senha e login fossem iguais aos enviados pelo cliente.

DeletarUsuarioRel.png

A query DELECT retornará um booleano informando o sucesso ou falha da transação.

Código de select dos Produtos

Nas paginas de exibição dos produtos disponiveis à venda e vizualização do carrinho de compras, a fim do site ficar mais interativo, eram mostrados os dados do produto, como imagem, fabricante, valor, nome. Então foi feita uma SELECT query de todos os dados da tabela produto.

SelectProduto.png

Código de Finalização da compra

Inserindo a compra no BD

Com os dados salvos em sessão, foi criado o registro da Nota Fiscal com id autoincrementado através de uma query de INSERT do id do cliente autenticado e a data do dia. Com o registro da NF já criado, a fim de relacionar a este os itens da compra, foi feito um SELECT do ID com maior valor entre todos os registros de NFs. Após ter-se conhecimento da NF sendo tratada nesta compra, foram criados vários registros de itens da NF através de INSERT queries, sendo o campo id_nf deste registro, o ID da NF retornado pela SELECT query anterior.

FinalizarCompraInsertRel.png


Exibindo Cabeçalho da nota

Após todos estes dados inseridos no BD, os principais dados teriam que ser mostrados ao usuário, montando uma pseudo nota fiscal. A fim de mostrar os dados do cabeçalho da pseudo nota, foi feita uma SELECT query de todos os campos da NF recém inseridos e salvos em um vetor cabeçalho['nf']. O mesmo foi feito com o cliente respectivo da compra e salvo no vetor cabeçalho['cliente'].

FinalizarCompraSelectCabecalhoRel.png

Exibindo Corpo da nota

No corpo da nota seria necessário exibir uma junção das tabelas produto e item_nf. Pois esta junção mostraria o produto com a respectiva quantidade e valor total. Então foi feita a SELECT query das duas tabelas mais complexa da aplicação, que retornaria todos os produtos com suas quantidades existentes na compra.

FinalizarCompraSelectCorpoRel.png