Instituto Politécnico de Beja Escola Superior de Tecnologia e Gestão GesStock Aplicação para Gestão de Stocks Engenharia Informática Base de Dados II Docente: Artur Lança Isabel Sofia Brito Nuno Gonçalo Varela n.º 4383 2008/2009
Índice Introdução 3 Enunciado do Problema 4 Organização e armazenamento de 5 Normalização 6 Modelo Conceptual de Dados 7 Modelo Físico de Dados 8 Código SQL para criação de base de SQL Server 2005 14 Código para a criação da base de 14 Código para a criação das tabelas da base de 15 Conclusão 19 2
Introdução No âmbito da disciplina de Base de Dados II foi solicitada a elaboração de uma base de, a partir de um enunciado elaborado pelos alunos e previamente aprovado pelo docente da disciplina. Para a elaboração da base de vamos utilizar como métodos de estudo o modelo relacional e o de normalização. O objectivo é construir uma base de utilizando o Microsoft SQL Server 2005, com a ferramenta SQL Sever Management Studio, a partir do desenho dos modelos conceptual e físico de MCD e MFD. 3
Enunciado do Problema Uma empresa de criação de software pretende desenvolver uma aplicação para Gestão de Stocks, o GesStock, que será comercializada pela mesma, que tenha várias funcionalidades, que possa gerar vários tipos de documentos e que sirva também de análise de stocks e de gestão. O software a ser criado terá as seguintes funcionalidades permitindo gerir: - tabelas de fornecedores e clientes com as respectivas contas correntes; - condições de pagamentos; - modos de pagamento; - produtos; - famílias de produtos; - armazéns. Este software permite gerar vários tipos de documentos: - facturas; - vendas a dinheiro; - notas de débito e de crédito; - guias de transporte; - orçamentos; - facturas pró-forma. Também será uma ferramenta de análise, em que a qualquer momento se pode saber: - a localização dos produtos em armazém; - descontos nas compras e vendas; - mapas de IVA de compras e vendas; - inventário e análise de stock. Assim sendo, pretende-se criar de uma base de, que permita gerir o stock dos produtos a comercializar, as compras aos diversos fornecedores e as respectivas vendas a clientes, e também elaborar alguns relatórios que possam ajudar na respectiva gestão de produto. 4
Organização e armazenamento de O RAID 5 é frequentemente usado e funciona à semelhança do RAID 4, mas supera alguns dos problemas mais comuns sofridos por esse tipo. As informações sobre paridade para os do array são distribuídas ao longo de todos os discos do array, ao invés de serem armazenadas num disco dedicado, oferecendo assim mais desempenho que o RAID 4, e, simultaneamente, tolerância a falhas. Para aumentar o desempenho de leitura de um array RAID 5, o tamanho de cada segmento em que os são divididos pode ser optimizado para o array que estiver a ser utilizado. O desempenho geral de um array RAID 5 é equivalente ao de um RAID 4, excepto no caso de leituras sequenciais, que reduzem a eficiência dos algoritmos de leitura por causa da distribuição das informações sobre paridade. A informação sobre paridade é distribuída por todos os discos; perdendo-se um, reduz-se a disponibilidade de ambos os e a paridade, até à recuperação do disco que falhou. Isto causa degradação do desempenho de leitura e de escrita. Não é recomendado para bases de, devido à penalidade de desempenho em escritas pela necessidade de gravar a paridade e ao risco de perda do conjunto quando um segundo disco falhar durante a recuperação de uma falha qualquer; vide RAID 1+0, ou 10, abaixo. 5
Normalização Após a normalização do diagrama Entidade Relação, anteriormente desenvolvido, foram definidas as tabelas necessárias à implementação da BD, pedida no enunciado. Este processo teve como base reconhecer e eliminar a redundância dos. Desta forma evitamos quaisquer problemas que possam advir quando se actualizam, eliminam ou inserem. Assim sendo, e com o objectivo de suportar os relevantes ao universo do nosso enunciado, vamos desenhar um esquema de BD que sustente esses de uma forma adequada. Depois de efectuada a normalização, até à 3.ª forma normal, desenhámos o modelo conceptual representado na figura 1. 6
Modelo Conceptual de Dados Pagamentos Recibos 1 @N_Pagamento N_Factura Data Tipo_Pagamento Referencia Valor Produtos @N_Recibo N_Factura Data Tipo_Pagamento Referencia Valor 1 n n Facturas @N_Factura Data N_Encomenda Cod_IVA V_IVA V_Total 1 @Referencia Descricao1 Descricao2 Gr_Produto Localizacao Unid_Stock Quantidade Pr_Custo Pr_Venda Facturas @N_Factura Data N_Encomenda Cod_IVA V_IVA V_Total n n 1 n Encomendas_Fornecedor @N_Encomenda Data N_Fornecedor Referencia Quantidade V_Unitario Desconto V_Iliquido 1 n n Produtos_Encomendas @Referencia @N_Encomenda n Vendas_Dinheiro @N_Venda_Dinheiro Data N_Encomenda Cod_IVA V_IVA V_Total n 1 Fornecedores @N_Fornecedor Nome Morada Cod_Postal Localidade Telefone Telemovel Fax Contribuinte Nome_Contacto E_Mail Cond_Credito Lim_Crédito Clientes @N_Cliente Nome Morada Cod_Postal Localidade Telefone Telemovel Fax Contribuinte Nome_Contacto E_Mail Cond_Credito Lim_Credito 1 1 n Encomendas_Cliente @N_Encomenda Data N_Cliente Referencia Quantidade V_Unitario Desconto V_Iliquido 1 Legenda s Nome da Atributos da Ligação entre tabelas 7
Modelo Físico Produtos Produtos para gestão de stock dos produtos Referencia Varchar 15 NOT Chave primária identity Descricao1 Varchar 50 NOT Nome do produto Descricao2 Varchar 50 Nome do produto cont. Gr_Produto Smallint 10 NOT Divisão dos tipos de produtos Localizacao Varchar 10 NOT Localização em armazém Unid_Stock Varchar 5 NOT Diferencia a unidade do metro Quantidade Smallint 5 NOT Quantidade em stock Pr_Custo Money 10 NOT Preço de custo do produto Pr_Venda Money 10 NOT Preço de venda do produto Produtos/Encomendas Produtos_Encomendas de ligação entre as tabelas Produtos e Encomendas de Clientes e de Fornecedores Referencia Varchar NOT Chave primária estrangeira N_Encomenda Smallint NOT Chave primária estrangeira 8
Encomendas de Clientes Encomendas_Cliente de criação das encomendas dos clientes N_Encomenda Smallint NOT Chave primária identity Data Datetime 10 NOT Data de criação da encomenda N_Cliente Varchar 50 NOT Chave estrangeira Referencia Varchar 15 NOT Referência dos produtos Quantidade Smallint 5 NOT Quantidade de produtos V_Unitario Money 10 NOT Valor da unidade do produto Desconto Smallint 5 Valor do desconto V_Iliquido Money 10 NOT Valor final da encomenda Clientes Clientes de gestão dos dos clientes N_Cliente Varchar NOT Chave primária identity Nome Varchar 50 NOT Nome do cliente Morada Varchar 80 NOT Morada do cliente Cod_Postal Varchar 8 NOT Código Postal Localidade Varchar 30 NOT Localidade Telefone Smallint 15 NOT Número de telefone do cliente Telemovel Smallint 15 NOT Número de telemovel do cliente Fax Smallint 15 Número de fax do cliente Contribuinte Smallint 9 NOT Número de contribuinte do cliente Nome_Contacto Varchar 30 Pessoa com quem contactar E_Mail Varchar 20 E-mail do cliente ou do contacto Cond_Credito Smallint 2 NOT Condições de pagamento dos clientes 9
Lim_Credito Money 10 Limite de crédito do cliente Facturas Facturas de gestão de facturação crédito dos clientes N_Factura Smallint NOT Chave primária identity Data Datetime 10 NOT Data da emissão do documento N_Encomenda Smallint NOT Chave estrangeira Cod_IVA Smallint 5 NOT Percentagem de IVA s/produtos V_IVA Money 10 NOT Valor de IVA V_Total Money 10 NOT Valor total do documento Vendas a Dinheiro Vendas_Dinheiro de gestão de facturação dinheiro dos clientes N_Venda_Dinheiro Smallint NOT Chave primária identity Data Datetime 10 NOT Data da emissão do documento N_Encomenda Smallint NOT Chave estrangeira Cod_IVA Smallint 5 NOT Percentagem de IVA s/produtos V_IVA Money 10 NOT Valor de IVA V_Total Money 10 NOT Valor total do documento 10
Recibos Recibos de gestão de pagamentos dos clientes N_Recibo Smallint NOT Chave Primária identity N_Factura Varchar NOT Chave estrangeira Data Datetime 10 NOT Data de emissão do recibo Tipo_Pagamento Varchar 15 NOT pagamento do cliente Referencia Varchar 15 NOT Referência do cliente Valor Money 10 NOT Valor total de recibo Encomendas a Fornecedores Encomendas_Fornecedor de criação das encomendas dos fornecedores N_Encomenda Smallint NOT Chave primária identity Data Datetime 10 NOT Data de criação da encomenda N_Fornecedor Varchar 50 NOT Chave estrangeira Referencia Varchar NOT Referência dos produtos Quantidade Smallint 5 NOT Quantidade de produtos V_Unitario Money 10 NOT Valor da unidade do produto Desconto Smallint 5 Valor do desconto V_Iliquido Money 10 NOT Valor final da encomenda 11
Fornecedores Fornecedores de gestão dos dos fornecedores N_Fornecedor Varchar NOT Chave Primária identity Nome Varchar 50 NOT Nome do fornecedor Morada Varchar 80 NOT Morada do fornecedor Cod_Postal Varchar 8 NOT Código Postal Localidade Varchar 30 NOT Localidade Telefone Smallint 15 NOT Número de telefone do fornecedor Telemovel Smallint 15 NOT Número de telemovel do fornecedor Fax Smallint 15 Número de fax do fornecedor Contribuinte Smallint 9 NOT Número de contribuinte do fornecedor Nome_Contacto Varchar 30 NOT Pessoa com quem contactar E_Mail Varchar 20 E-mail do fornecedor ou do contacto Cond_Credito Smallint 2 NOT Condições de pagamento aos fornecedores Lim_Credito Money 10 Limite de crédito do fornecedor Facturas Facturas de gestão de facturação dos fornecedores N_Factura Smallint NOT Chave primária identity Data Datetime 10 NOT Data da emissão da factura N_Encomenda Smallint NOT Chave estrangeira Cod_IVA Smallint 5 NOT Percentagem de IVA s/produtos V_IVA Money 10 NOT Valor de IVA V_Total Money 10 NOT Valor total do documento 12
Pagamentos Pagamentos de gestão de pagamentos das crianças N_Recibo Smallint NOT Chave primária identity N_Factura Varchar NOT Chave estrangeira Data Datetime 10 NOT Data do pagamento Tipo_Pagamento Varchar 15 NOT pagamento ao fornecedor Referencia Varchar 15 NOT Referência do pagamento Valor Money 10 NOT Valor total de recibo 13
Código SQL para criação de base de SQL Server 2005 Código para a criação da base de CREATE DATABASE GesStock ON PRIMARY NAME = GesStockPrimario, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockPrimario.mdf', SIZE = 200MB, MAXSIZE = 1500MB, FILEGROWTH = 100MB, FILEGROUP GesStockDados NAME = GesStockDados1, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockDados1.ndf', SIZE = 200MB, MAXSIZE = 1500MB, FILEGROWTH = 100MB, NAME = GesStockDados2, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockDados2.ndf', SIZE = 200MB, MAXSIZE = 1500MB, FILEGROWTH = 100MB, FILEGROUP GesStockHistorico NAME = GesStockHistorico1, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockHistorico1.ndf', SIZE = 200MB, MAXSIZE = 1000MB, FILEGROWTH = 100MB, NAME = GesStockHistorico2, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockHistorico2.ndf', SIZE = 200MB, MAXSIZE = 1000MB, FILEGROWTH = 100MB LOG ON NAME = GesStockLog, FILENAME = 'E:\Eng. Informática\2008_09\3_BD2\GesStock\GesStockLog.ldf', SIZE = 100MB, MAXSIZE = 500MB, FILEGROWTH = 50MB 14
Código para a criação das tabelas da base de CREATE TABLE Produtos Rererencia VARCHAR 15 PRIMARY KEY, Descricao1 VARCHAR 50 NOT NULL, Descricao2 VARCHAR 50, Gr_Produto SMALLINT 10 NOT NULL, Localizacao VARCHAR 10 NOT NULL, N_Fornecedor VARCHAR 6 NOT NULL, Unid_Stock VARCHAR 5 NOT NULL, Quantidade SMALLINT 5 NOT NULL, Pr_Custo MONEY 10 NOT NULL, Pr_Venda MONEY 10 NOT NULL CREATE TABLE Produtos_Encomendas Referencia VARCHAR, N_Encomenda SMALLINT, PRIMARY KEY Referencia, N_Encomenda, FOREIGN KEY Referencia REFERENCES Produtos Referencia FOREIGN KEY N_Encomenda REFERENCES Encomendas_Cliente N_Encomenda REFERENCES Encomendas_Fornecedor N_Encomenda CREATE TABLE Encomendas_Clientes N_Encomenda SMALLINT PRIMARY KEY, Data DATETIME 10 NOT NULL, N_Cliente VARCHAR NOT NULL, Referencia VARCHAR 15 NOT NULL, Quantidade SMALLINT 5 NOT NULL, V_Unitario MONEY 10 NOT NULL, Desconto SMALLINT 5, V_Unitario MONEY 10 NOT NULL, FOREIGN KEY N_Cliente REFERENCES Clientes N_Cliente 15
CREATE TABLE Clientes N_Cliente VARCHAR PRIMARY KEY, Nome VARCHAR 50 NOT NULL, Morada VARCHAR 80 NOT NULL, Cod_Postal VARCHAR 8 NOT NULL, Localidade VARCHAR 30 NOT NULL, Telefone SMALLINT 15 NOT NULL, Telemovel SMALLINT 15 NOT NULL, Fax SMALLINT 15, Contribuinte SMALLINT 9 NOT NULL, Nome_Contacto VARCHAR 30, E_Mail VARCHAR 20, Cond_Credito SMALLINT 2 NOT NULL, Lim_Credito MONEY 10, CREATE TABLE Facturas N_Factura SMALLINT PRIMARY KEY, Data DATETIME 10 NOT NULL, N_Encomenda SMALLINT NOT NULL, Cod_IVA SMALLINT 5 NOT NULL, V_IVA MONEY 10 NOT NULL, V_Total MONEY 10 NOT NULL, FOREIGN KEY N_Encomenda REFERENCES Encomendas_Clientes N_Encomenda CREATE TABLE Vendas_Dinheiro N_Documento SMALLINT PRIMARY KEY, Data DATETIME 10 NOT NULL, N_Encomenda SMALLINT NOT NULL, Cod_IVA SMALLINT 5 NOT NULL, V_IVA MONEY 10 NOT NULL, V_Total MONEY 10 NOT NULL, FOREIGN KEY N_Encomenda REFERENCES Encomendas_Clientes N_Encomenda 16
CREATE TABLE Recibos N_Recibo SMALLINT PRIMARY KEY, N_Factura SMALLINT NOT NULL, Data DATETIME NOT NULL, Tipo_Pagamento VARCHAR 15 NOT NULL, Referencia VARCHAR 15 NOT NULL, Valor MONEY 10 NOT NULL, FOREIGN KEY N_ Factura REFERENCES Facturas N_ Factura CREATE TABLE Encomendas_Fornecedores N_Encomenda SMALLINT PRIMARY KEY, Data DATETIME 10 NOT NULL, N_Fornecedor VARCHAR NOT NULL, Referencia VARCHAR 15 NOT NULL, Quantidade SMALLINT 5 NOT NULL, V_Unitario MONEY 10 NOT NULL, Desconto SMALLINT 5, V_Unitario MONEY 10 NOT NULL, FOREIGN KEY N_Fornecedor REFERENCES Fornecedores N_Fornecedor CREATE TABLE Fornecedores N_Fornecedor VARCHAR PRIMARY KEY, Nome VARCHAR 50 NOT NULL, Morada VARCHAR 80 NOT NULL, Cod_Postal VARCHAR 8 NOT NULL, Localidade VARCHAR 30 NOT NULL, Telefone SMALLINT 15 NOT NULL, Telemovel SMALLINT 15 NOT NULL, Fax SMALLINT 15, Contribuinte SMALLINT 9 NOT NULL, Nome_Contacto VARCHAR 30, E_Mail VARCHAR 20, Cond_Credito SMALLINT 2 NOT NULL, Lim_Credito MONEY 10, 17
CREATE TABLE Facturas N_Factura SMALLINT PRIMARY KEY, Data DATETIME 10 NOT NULL, N_Encomenda SMALLINT NOT NULL, Cod_IVA SMALLINT 5 NOT NULL, V_IVA MONEY 10 NOT NULL, V_Total MONEY 10 NOT NULL, FOREIGN KEY N_Encomenda REFERENCES Encomendas_Fornecedores N_Encomenda CREATE TABLE Pagamentos N_Pagamento SMALLINT PRIMARY KEY, N_Factura SMALLINT NOT NULL, Data DATETIME NOT NULL, Tipo_Pagamento VARCHAR 15 NOT NULL, Referencia VARCHAR 15 NOT NULL, Valor MONEY 10 NOT NULL, FOREIGN KEY N_Factura REFERENCES Facturas N_Factura 18
Conclusão Podemos concluir que as Bases de Dados hoje em dia facilitam imenso a criação, a organização e a pesquisa de informação nos mais diversos meios. No caso apresentado desenvolvi a base do GesStock, que será num futuro próximo uma aplicação de gestão de stocks, tendo como suporte uma base de que permite uma maior facilidade de movimento e acesso de de um qualquer tipo de comércio. Posso referenciar que em termos de trabalho futuro deverei desenvolver melhor a estrutura da base de, aperfeiçoando o já realizado, com a criação de outro tipo de tabelas, criação de novas consultas, de modo que a informação que possamos extrair, seja o mais detalhada possível na análise da informação contida na base de, conforme a necessidade de futuros utilizadores. 19