Modelagem de BI , carteira de beneficiários - Banco de Dados - Fórum iMasters
By Motta, December 6, 2018 in Banco de Dados
Segue uma dúvida quase exotérica que tenho :
Qual seria a melhor forma de Modelar um BI para refletir a evolução temporal de uma carteira de beneficiários (um Plano de saúde) por exemplo.
Para um ERP é simples mas BIs tendem a complicar este tipo de coisa pois beneficiários entrem e saem ao longo do tempo.
Que resolveu ?
By djwagnersp, 8 hours ago in PHP
By fernandoxx, 1 hour ago in PHP
By Patricia_W
Estou precisando armazenar endereços (completos.. cep, logradouro, numero, cidade, estado..) do Brasil mas também do exterior.
Como a estrutura de endereçamento é diferente de um país para o outro, como poderia ser feita uma modelagem que armazenasse estes dados sem que fosse necessário criar um conjunto para dados nacionais e outro para dados internacionais?
By DoVaK
Estamos desenvolvendo um software wms (controle de estoque) que inicialmente funcionará na nuvem.
Por ser um sistema complexo e com enorme quantidade de dados, estamos pensando em criar um banco de dados separado para cada empresa (cliente).
Teriamos um banco de dados nosso onde estariam centralizadas algumas informações importantes, tais como as informações de cada empresa, dados para pagamento e os códigos que referenciariam o banco de dados especifico de cada cliente nosso (para fazer o redirecionamento correto no login).
- Esta seria uma boa forma de modelagem?
- Seria interessante ter o cadastro de todos os usuários no nosso banco de dados central ou deixar a tabela de usuários no banco de cada empresa?
OBS: o SGBD é o MySQL.
By diegoamferreira
Por entender um pouco e gostar muito de programação estou ajudando um amigo a programar algumas consultas sql para retornar KPI's de sua empresa no RM da TOTVS.
Estou travado em uma questão que é adicionar uma coluna de soma acumulativa dos valores totais.
hoje ja tenho a consulta funcionando retornando os valores de venda de cada vendedor:
A3_NOME TOTAL
DIEGO AUGUSTO 158641,36
LUCAS VERGANI 153615,69
RODRIGO GUEDES 103330,38
FERNANDA SILVESTRE 71695,48
ADRIANO PAIVA 916,5
Para trazer esse resultado minha consulta agrupa todos os pedidos de venda, encontra os vendedores e soma o valor total.
SELECT A3_NOME ,SUM(C6_VALOR) TOTAL FROM SC6010 INNER JOIN SC5010 WITH(NOLOCK) ON C5_FILIAL= C6_FILIAL AND C5_NUM = C6_NUM INNER JOIN SE4010 WITH(NOLOCK) ON C5_CONDPAG = E4_CODIGO AND SE4010.D_E_L_E_T_ = ' ' INNER JOIN SA1010 WITH(NOLOCK) ON C5_CLIENTE = A1_COD AND C5_LOJACLI = A1_LOJA INNER JOIN SA3010 WITH(NOLOCK) ON A3_COD = C5_VEND1 INNER JOIN SB1010 WITH(NOLOCK) ON C6_PRODUTO = B1_COD LEFT JOIN SBM010 WITH(NOLOCK) ON B1_GRUPO = BM_GRUPO AND SBM010.D_E_L_E_T_ = ' ' LEFT JOIN SF4010 WITH(NOLOCK) ON C6_TES = F4_CODIGO AND SF4010.D_E_L_E_T_ = ' ' AND C6_FILIAL = F4_FILIAL JOIN AOV010 AOV WITH(NOLOCK) ON AOV.AOV_CODSEG = A1_CODSEG and AOV.D_E_L_E_T_ = ' ' WHERE SC6010.D_E_L_E_T_ = ' ' AND SC5010.D_E_L_E_T_ = ' ' AND SA1010.D_E_L_E_T_ = ' ' AND SB1010.D_E_L_E_T_ = ' ' and SA3010.D_E_L_E_T_ = ' ' AND E4_DESCRI NOT IN ('BONIFICACAO', 'TROCA', 'BONIFICAÇÃO', 'OUTROS') and F4_TEXTO LIKE '%VENDA%' AND C5_LIBEROK = 'S' AND MONTH(SC5010.C5_EMISSAO) = MONTH(DATEADD(MONTH,-1,GETDATE())) AND YEAR(SC5010.C5_EMISSAO) = YEAR(DATEADD(MONTH,-1,GETDATE())) GROUP BY A3_NOME ORDER BY SUM(C6_VALOR) DESC
Porém o que preciso seria um resultado assim:
A3_NOME TOTAL ACUMULADO
MARCIO AUGUSTO 158641,36 158641,36
JOAO PEREIRA 153615,69 312257,05
RODRIGO SANTOS 103330,38 415587,43
FERNANDA CARDOSO 71695,48 487282,91
CLEBER PAIVA 916,5 488199,41
Não domino muito, o que sei aprendi pesquisando, encontrei formas de fazer isso em outros tópicos, porém nenhum deles tinha outro agrupamento na consulta.
By eduardoPires
Tenho que entregar um trabalho com alguns requisitos de modelagem de dados e passando os requisitos da modelagem para o modelo relacional.
a) Para a instituição financeira é muito importante manter um cadastro de todas as contas que foram criadas na instituição.
b) Para cada conta criada é importante saber se a conta está ativa ou já foi desativada (ou seja, o cliente encerrou a conta). Isso ajudará a filtrar as pesquisas.
c) As contas da instituição podem pertencer às seguintes categorias: corrente, poupança, salário. Há contas que podem ser corrente e poupança ao mesmo tempo. d) Para as contas da categoria corrente, as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, limite do cheque especial e valor da taxa administrativa.
e) Para as contas da categoria poupança as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, rendimento do mês atual.
f) Para as contas da categoria salário as seguintes informações devem ser armazenadas: nro da conta, saldo atual, data de abertura, data da última movimentação, limite para saque e limite para transferência.
g) No momento de criação da conta é importante associar uma senha a ela. Essa senha será solicitada antes da execução de qualquer transação. h) Os clientes da instituição devem ser registrados com as seguintes informações: CPF, nome, endereço completo, estado civil, escolaridade, data de nascimento.
i) É importante também saber em qual agência o cliente foi cadastrado.
j) As agências bancárias devem ser previamente cadastras, sendo que cada agência possui um número, um nome fictício e um endereço, sendo que os campos cidade, estado e bairro são campos frequentemente usados para se realizar buscas por agências.
k) Cada agência possui um gerente, que é um funcionário nomeado para tal tarefa. Cada gerente pode gerenciar apenas uma agência. Entretanto, o gerente de uma agência pode mudar e é muito importante armazenar quais foram os gerentes de uma dada agência com informações da sua data de entrada e saída da gerência.
l) Os gerentes são funcionários da empresa que precisam ter armazenados alguns atributos específicos: data de ingresso na carreira de gerente, agência que ele gerencia e se possui curso de formação
m) Para os funcionários da agência é preciso armazenar as seguintes informações: CPF, nome completo, nro da carteira de trabalho, RG, data de nascimento, endereço, sexo, estado civil, cargo na empresa (existem diferentes cargos além do gerente) e salário.
n) Toda conta bancária deve ter no mínimo um cliente associado. No entanto, uma conta pode ser conjunta. Nesse caso, é possível ter dois clientes associados à mesma conta. Um mesmo cliente pode ter diferentes contas bancárias.
o) Cada conta bancária tem um gerente responsável. O gerente da conta bancária é um funcionário, mas não necessariamente é o mesmo gerente da agência na qual a conta foi criada. Um gerente de conta pode gerenciar várias contas ao mesmo tempo.
p) Toda conta bancária está ligada a uma agência bancária, ou seja, a agência na qual ela foi criada, sendo que o número da conta bancária é único por agência.
q) É importante destacar que o gerente de conta e o gerente de agência são papéis distintos, embora um gerente de agência possa ser também um gerente de conta. Para os gerentes de conta é importante saber quais contas ele gerencia.
r) Uma vez que um cliente tenha uma conta bancária ele pode efetuar diferentes movimentações financeiras, conhecidas como transações bancárias. Cada transação bancária está relacionada a uma conta bancária. Além disso, é importante armazenar a data em que a transação foi realizada, o valor da transação e o canal onde foi feito a transação (internet banking, caixa eletrônico ou caixa físico). Toda vez que uma transação é realizada o saldo do cliente deve ser atualizado.
s) Cada transação possui um tipo. Os tipos de transação atualmente disponíveis são: saque, transferência, depósito e pagamento. Em cada uma dessas transações é importante armazenar apenas o valor da transação. Com o objetivo de simplificar o trabalho não vamos armazenar os atributos específicos de cada tipo de transação, embora esse seja um requisito interessante em problemas reais.
t) É importante observar que os funcionários da instituição também podem ter contas bancárias na instituição.
u) Ainda que um cliente encerre uma conta no banco, é importante manter o registro da conta na base de dados, mas com um indicativo de que ela não está ativa.
v) Cada conta bancária está associada um ou mais cartões de crédito. No entanto o cartão de crédito só pertence a uma conta
w) Um cartão de crédito possui um número identificador, uma bandeira (visa, mastercard, etc.), um código de segurança e uma data de vencimento.
x) Toda vez que um cartão de crédito é criado ele encontra-se bloqueado, sendo necessário que o cliente o desbloqueie antes de usá-lo.
y) A qualquer momento um cartão pode ser desabilitado z) Toda vez que uma transação bancária é realizada, é importante saber qual o cartão usado para executar a transação
A modelagem disso tudo esta em anexo.
Os codigos para criação do banco ficou da seguinte forma:
create table pessoa(cpf varchar(14), nome varchar(50), DataNascimento date, Rua varchar(30), numero int, cep varchar(10), bairro varchar(30), cidade varchar(30), UF char(2), EstadoCivil varchar(15), primary key (cpf));
create table Cliente(cpf varchar(14), escolaridade varchar(20), primary key (cpf), foreign key (cpf) references pessoa(cpf));
create table Funcionario(cpf varchar(14), RG varchar(13), CarteiraDeTrabalho varchar(14), Sexo char(1), cargo varchar(20), primary key (cpf), foreign key (cpf) references pessoa(cpf));
create table GerenteAgencia(cpf varchar(14), cursoFormacaoEmGerencia char(1), dataIngresso date, primary key (cpf), foreign key (cpf) references funcionario(cpf));
create table GerenteConta(cpf varchar(14), primary key (cpf), foreign key (cpf) references Funcionario(cpf));
create table Gerencia(cpf varchar(14), dataInicio date, dataFim date, primary key (cpf), foreign key (cpf) references GerenteAgencia(cpf));
create table Agencia(numAgencia int, nome varchar(25), Rua varchar(30), numero int, cep varchar(10), bairro varchar(30), cidade varchar(30), UF char(2), GerenteAgencia varchar(14), primary key (numAgencia), foreign key(GerenteAgencia) references gerencia(cpf));
create table Trabalha(cpf varchar(14), numAgencia int, dataInicio date, dataFim date, primary key(cpf,numAgencia), foreign key (cpf) references funcionario(cpf), foreign key (numAgencia) references agencia(numAgencia));
create table conta(numConta int, Cliente varchar(14), numAgencia int, GerenteConta varchar(14), Status varchar(12), senha int[5] not null, dataUltimaMovi date, dataAbertura date, saldoAtual real, primary key (numConta, numAgencia), foreign key (cliente) references cliente(cpf), foreign key (GerenteConta) references gerenteconta(cpf), foreign key (numAgencia) references agencia(numAgencia));
create table CartaoConta(numCartao int[16], numConta int, numAgencia int, status varchar(12), bandeira varchar(14), dataVenc date, codSeguranca int[3], primary key (numCartao), foreign key (numConta, numAgencia) references conta(numConta, numAgencia));
create table transacoes(idTrans int, numCartao int[16], horaTrans time, MeioDaTransacao varchar(10), tipo varchar(14), valor decimal(15,2), dataTrans date, primary key (idTrans), foreign key (numCartao) references cartaoconta(numCartao));
create table contapoupanca(numConta int, numAgencia int, RendimentoMesAtual decimal(15,2), primary key (numConta,numAgencia), foreign key (numConta,numAgencia) references conta(numConta,numAgencia));
create table contacorrente(numConta int, numAgencia int, limiteCredEspec decimal(15,2), taxaAdm decimal(15,2), primary key (numConta,numAgencia), foreign key (numConta,numAgencia) references conta(numConta,numAgencia));
create table contaSalario(numConta int, numAgencia int, limiteTransf decimal(15,2), limSaque decimal(15,2), primary key (numConta,numAgencia), foreign key (numConta,numAgencia) references conta(numConta,numAgencia));
Há alguma coisa errada ou que pode ser melhorada pessoal?
Estou desesperado com isso...
By joaowall
Estou desenvolvendo um sistema e estou com uma dúvida na modelagem.
Tenho uma tabela chamada "Empresa" e preciso armazenar X parâmetros diferentes para cada empresa. Futuramente pode ser que mais parâmetros sejam adicionados.
Se criar uma tabela somente com os parametros, ela vai ficar com vários campos. Já se criar uma tabela associativa, terei perda de performance.