Sunday, 4 February 2018

Esquema do banco de dados forex


Esquema do banco de dados Forex
Obter através da App Store Leia esta publicação em nosso aplicativo!
Armazenando e gerenciando dados de marca de negociação Forex.
Estou construindo um sistema de visualização de dados para negociação de Forex e estou explorando maneiras de armazenar os dados históricos do tick de negociação Forex que eu tenho.
Os dados estão na forma de parses de moeda (por exemplo, USD / CAD) cronológicos dos preços Ask e Bid. No final do dia, eu preciso que meus dados sejam indexados na Elasticsearch e o que eu procuro é a melhor maneira de obtê-los lá.
Encontrei algumas abordagens on-line; Eles começam simples, mas depois ficam complicados. Eu me pergunto se a pena acrescentar que a complexidade extra vale a pena. Algumas das minhas opções são:
Armazenando os dados do tick no PostgreSQL e, em seguida, através de um plugin, sincronize-os para Elasticsearch (aqui) Armazenando dados do tick no PostgreSQL, empurre-os para o Logstash e, em seguida, para Elasticsearch Finalmente, armazenar dados do tick no PostgreSQL, empurrá-los para o Redis, depois para Logstash e, em seguida, para Elasticsearch.
Minha intuição diz que a solução n. ° 2 seria a ideal, mas o que é considerado melhor prática?
É uma boa idéia armazenar seus dados em um DB de armazenamento de longo prazo, como o PostgreSQL ou similar. Dessa forma, você pode decidir, em qualquer momento, se você precisa mudar seus mapeamentos, adicionar campos, remover campos, mudar seus tipos ou o que você tem, e então você pode reconstruir facilmente o índice / índices ES sem muitos problemas da sua fonte primária de verdade (ou seja, PostgreSQL) e você sempre possui dados limpos em ES.
Eu não conheço o ZomboDB (solução 1), então não posso falar por isso, tudo o que sei é que, geralmente, não gosto muito de amarrar duas tecnologias diferentes, torna difícil atualizar qualquer um deles no caso você precisa / deve / deseja aplicar parches ou se beneficiar de novos recursos em qualquer um deles.
A menos que você tenha grandes e dispendiosas transformações para fazer em seus dados de origem, sinto que a solução 3 não traz muito, ou seja, a etapa adicional de armazenar dados em um Redis intermediário, não traz muito na minha opinião (sua milhagem pode variar Aqui). É uma boa idéia usar uma loja temporária, como a Redis ou a Kafka, quando você pode perder dados ao longo do pipeline, mas neste caso, já que você tem seus dados no PostgreSQL, você realmente não corre o risco de perder nada. Em qualquer caso, você pode relançar seu pipeline e reconstruir alguns dias de dados.
Isso deixa a solução 2, o que seria bom dado as informações disponíveis. Usando a entrada LogDash JDBC, você pode recuperar facilmente as últimas mudanças e encaminhá-las para ES cada x minutos.
Eric de ZomboDB aqui. Eu queria tentar responder a sua pergunta no que diz respeito ao ZDB.
O ZomboDB é realmente projetado para pesquisa de texto completo no Postgres. É importante notar que não é uma ferramenta para sincronizar seus dados PG para o Elasticsearch. É um tipo de índice Postgres totalmente funcional (semelhante aos tipos incorporados, como btree, gin e gist), que é suportado pela Elasticsearch. O fato de o ZomboDB usar o Elasticsearch ser realmente um detalhe de implementação.
Embora o ZDB forneça uma série de UDFs que expõem o acesso às instalações agregadas do ES, novamente, ele é realmente projetado para pesquisa de texto.
Então, se seus dados são realmente apenas pares de números, provavelmente você estará melhor usando ES diretamente - especialmente se você estiver carregando em um lote por dia. Não há dúvida de que o ZDB poderia fornecer um desempenho agregado superior em comparação com as consultas padrão do "GROUP BY" do Postgres (porque ele passa para o Elasticsearch), mas você está pagando uma penalidade operacional pesada por um caso de uso limitado.
Se, por outro lado, os seus dados de solicitação / oferta vem com muitos metadados relacionados e:
Você precisa de PG para ser sua fonte de verdade. Você precisa pesquisar por texto em metadados (com ou sem suporte de agregação), e você não quer aprender ES e apresentar outro sistema de banco de dados para sua aplicação, então.
. ZomboDB pode ser ideal para você.
Eu suspeito que o Depósito de Pilha não é o lugar para entrar nisso, então fique à vontade para me contatar através das maneiras que a página github da ZDB recomenda.

QuantStart.
Junte-se ao portal de membros privados da Quantcademy que atende à comunidade de comerciantes de varejo de varejo em rápido crescimento. Você encontrará um grupo bem informado de mentalistas quant pronto para responder suas perguntas comerciais mais importantes.
Confira meu ebook sobre o comércio de quant, onde eu ensino você como criar estratégias de negociação sistemáticas lucrativas com ferramentas Python, desde o início.
Dê uma olhada no meu novo ebook sobre estratégias de negociação avançadas usando análise de séries temporais, aprendizado de máquina e estatísticas bayesianas, com Python e R.
Por Michael Halls-Moore em 17 de maio de 2018.
Na negociação algorítmica, o holofote geralmente brilha no componente do modelo alfa do sistema comercial completo. Esta é a parte do sistema que gera os sinais de negociação, antes da filtração por um sistema de gerenciamento de risco ou construção de carteira. Como tal, os comerciantes de algo geralmente gastam uma parcela significativa de seu tempo de pesquisa refinando o modelo alfa para gerar a maior relação Sharpe de backtested antes de colocar seu sistema em produção.
No entanto, um modelo alfa é tão bom quanto os dados que são alimentados a ele. Este conceito é bem resumido pelo antigo ditado da ciência da computação de "lixo, lixo fora". É crucial que dados precisos e oportunos sejam utilizados para alimentar o modelo alfa, caso contrário os resultados serão, na melhor das hipóteses, ruins ou, na pior das hipóteses, completamente incorretos, levando a grandes perdas se o sistema for posto em produção.
Neste artigo, quero discutir questões relacionadas com a aquisição e fornecimento de dados precisos atempados para um sistema de backtesting de estratégia algorítmica e, finalmente, um mecanismo de execução comercial. Em particular, estudaremos como obter dados financeiros, como armazená-lo, como limpá-lo e como exportá-lo. No setor financeiro, esse tipo de serviço de dados é conhecido como banco de dados mestre de valores mobiliários.
O que é um Mestre de Valores?
Um mestre de valores mobiliários é um banco de dados de toda a organização que armazena dados fundamentais, de preços e transacionais para uma variedade de instrumentos financeiros em classes de ativos. Ele fornece acesso a essas informações de forma consistente para ser usado por outros departamentos, como gerenciamento de riscos, compensação / liquidação e negociação comercial.
Em grandes organizações, uma série de instrumentos e dados serão armazenados. Aqui estão alguns dos instrumentos que podem ser de interesse para uma empresa:
Equities Equity Options Indices Taxas de juros cambiais Futures Commodities Bonds - Derivados governamentais e corporativos - Caps, Floors, Swaps.
Os bancos de dados mestre de valores mobiliários geralmente possuem equipes de desenvolvedores e especialistas em dados que garantem alta disponibilidade dentro de uma instituição financeira. Embora isso seja necessário em grandes empresas, no nível de varejo ou em um fundo pequeno, um mestre de valores mobiliários pode ser muito mais simples. Na verdade, embora os grandes mestres de valores mobiliários façam uso de banco de dados e sistemas de análise empresariais caros, é possivel usar software de código aberto para fornecer o mesmo nível de funcionalidade, assumindo um sistema bem otimizado.
Quais conjuntos de dados são usados?
Para o comerciante algorítmico de varejo ou o pequeno fundo quantitativo, os conjuntos de dados mais comuns são o preço histórico intradiário de dia-a-dia para ações, índices, futuros (principalmente commodities ou renda fixa) e câmbio (divisas). Para simplificar esta discussão, nos concentraremos apenas nos dados de fim de dia (EOD) para ações, ETFs e índices de ações. Artigos posteriores discutirão a adição de dados de freqüência mais altos, classes de ativos adicionais e dados de derivativos, que possuem requisitos mais avançados.
Os dados EOD para ações são fáceis de obter. Há uma série de serviços que fornecem acesso gratuitamente através de APIs disponíveis na web:
É direto baixar manualmente dados históricos para valores mobiliários individuais, mas torna-se demorado se muitas ações precisam ser baixadas diariamente. Assim, um componente importante do nosso mestre de valores mobiliários será atualizar automaticamente o conjunto de dados.
Outra questão é o período de observação. Quão longe no passado precisamos seguir os nossos dados? Isso será específico para os requisitos da sua estratégia de negociação, mas existem certos problemas que abrangem todas as estratégias. O mais comum é a mudança de regime, que muitas vezes é caracterizada por um novo ambiente regulatório, períodos de volatilidade maior / menor ou mercados de tendências a longo prazo. Por exemplo, uma estratégia de longo prazo curto-direcional de tendência / impulso provavelmente funcionará muito bem de 2000-2003 ou 2007-2009. No entanto, teria tido um período difícil entre 2003-2007 ou 2009 até o presente.
Minha regra geral é obter a maior quantidade possível de dados, especialmente para dados EOD, onde o armazenamento é barato. Só porque os dados existem no seu mestre de segurança, não significa que ele deve ser utilizado. Há ressalvas em torno do desempenho, uma vez que as tabelas de banco de dados maiores significam tempos de consulta maiores (veja abaixo), mas os benefícios de ter mais pontos de amostra geralmente superam quaisquer problemas de desempenho.
Tal como acontece com todos os dados financeiros, é imperativo estar ciente de erros, tais como preços elevados / baixos incorretos ou viés de sobrevivência, que discuti extensivamente no QuantStart (veja aqui).
O que é usado para armazenar dados?
Existem três formas principais de armazenar dados financeiros. Todos possuem vários graus de acesso, desempenho e capacidades estruturais. Consideraremos cada um deles.
Armazenamento de arquivos planos.
O armazenamento de dados mais simples para dados financeiros e a forma como você provavelmente receberá os dados de qualquer fornecedor de dados, é o formato de arquivo plano. Os arquivos planos geralmente fazem uso do formato Variável Comma (CSV), que armazena uma matriz de dados bidimensional como uma série de linhas, com dados de coluna separados por um delimitador (muitas vezes uma vírgula, mas pode ser espaço em branco, como como um espaço ou guia). Para os dados de preços do EOD, cada linha representa um dia de negociação através do paradigma do OHLC (ou seja, os preços no aberto, alto, baixo e próximo do período de negociação).
A vantagem dos arquivos planos é sua simplicidade e capacidade de ser fortemente compactada para arquivamento ou download. As principais desvantagens residem na falta de capacidade de consulta e mau desempenho para a iteração em grandes conjuntos de dados. SQLite e Excel atenuam alguns desses problemas, fornecendo certas capacidades de consulta.
Document Stores / NoSQL.
As lojas de documentos / bases de dados NoSQL, embora certamente não sejam um novo conceito, ganharam destaque nos últimos anos devido ao seu uso em empresas de "escala na web", como Google, Facebook e Twitter. Eles diferem substancialmente dos sistemas RDBMS, na medida em que não existe um conceito de esquemas de tabela. Em vez disso, existem coleções e documentos, que são as analogias mais próximas às tabelas e registros, respectivamente. Existe uma ampla taxonomia de lojas de documentos, cuja discussão está bem fora deste artigo! No entanto, algumas das lojas mais populares incluem MongoDB, Cassandra e CouchDB.
As lojas de documentos, em aplicações financeiras, são principalmente adequadas para dados fundamentais ou meta. Os dados fundamentais para os ativos financeiros são de várias formas, como ações corporativas, declarações de ganhos, registros da SEC, etc. Assim, a natureza sem esquemas dos DBs NoSQL é adequada. No entanto, os bancos de dados do NoSQL não são bem projetados para séries temporais, como dados de preços de alta resolução e, portanto, não os consideraremos mais neste artigo.
Sistemas de gerenciamento de banco de dados relacionais.
Um sistema de gerenciamento de banco de dados relacional (RDBMS) faz uso do modelo relacional para armazenar dados. Esses bancos de dados são particularmente adequados aos dados financeiros porque diferentes "objetos" (como trocas, fontes de dados, preços) podem ser separados em tabelas com relacionamentos definidos entre eles.
O RDBMS faz uso do Structured Query Language (SQL) para realizar consultas de dados complexas em dados financeiros. Exemplos de RDBMS incluem Oracle, MySQL, SQLServer e PostgreSQL.
As principais vantagens do RDBMS são a simplicidade de instalação, a independência da plataforma, a facilidade de consulta, a facilidade de integração com os principais softwares de back-up e as capacidades de alto desempenho em grande escala (embora alguns possam argumentar que o último não é o caso!). Suas desvantagens são muitas vezes devido à complexidade da personalização e às dificuldades de alcançar o referido desempenho sem o conhecimento subjacente de como os dados RDBMS são armazenados. Além disso, eles possuem esquemas semi-rígidos e, portanto, os dados geralmente precisam ser modificados para se adequarem a esses projetos. Isso é diferente dos armazenamentos de dados NoSQL, onde não há esquema.
Para todos os futuros artigos de implementação de preços históricos no QuantStart, usaremos o RDBMS do MySQL. É gratuito, de código aberto, de plataforma cruzada, altamente robusto e seu comportamento em escala está bem documentado, o que o torna uma escolha sensata para o trabalho de quant.
Como os dados históricos são estruturados?
Há um corpo significativo de teoria e pesquisa acadêmica realizada no domínio da informática para o design ideal para lojas de dados. No entanto, não vamos entrar em detalhes demais, pois é fácil perder-se em minúcias! Em vez disso, apresentarei um padrão comum para a construção de um mestre de segurança de ações, que você pode modificar, conforme você vê, para suas próprias aplicações.
A primeira tarefa é definir nossas entidades, que são elementos dos dados financeiros que eventualmente serão mapeados para tabelas no banco de dados. Para um banco de dados mestre de ações, prevejo as seguintes entidades:
Trocas - Qual é a fonte original final dos dados? Vendedor - De onde é obtido um determinado ponto de dados? Instrumento / Ticker - O ticker / símbolo do patrimônio ou índice, juntamente com informações corporativas da empresa ou fundo subjacente. Preço - O preço real de uma determinada segurança em um determinado dia. Ações Corporativas - A lista de todas as divisões de ações ou ajustes de dividendos (isso pode levar a uma ou mais tabelas), necessárias para ajustar os dados de preços. Feriados nacionais - Para evitar classificar mal os feriados comerciais como erros de dados ausentes, pode ser útil armazenar feriados nacionais e referências cruzadas.
Há problemas importantes em relação ao armazenamento de tickers canônicos. Eu posso atestar isso a partir de experiência de primeira mão em um fundo de hedge que lida com este problema exato! Diferentes vendedores usam métodos diferentes para resolver os tickers e, assim, combinando múltiplas fontes para obter precisão. Além disso, as empresas ficam em falência, estão expostas à atividade de M & A (ou seja, se tornam adquiridas e mudam nomes / símbolos) e podem ter várias classes de ações negociadas publicamente. Muitos de vocês não terão que se preocupar com isso porque seu universo de tickers será limitado aos constituintes do índice maior (como o S & P500 ou o FTSE350).
Como os dados são avaliados quanto à precisão?
Os dados de preços históricos dos fornecedores são propensos a muitas formas de erro:
Ações Corporativas - Manipulação incorreta de divisões de ações e ajustes de dividendos. É preciso ter certeza absoluta de que as fórmulas foram implementadas corretamente. Spikes - Pontos de preços que excedem em grande parte certos níveis históricos de volatilidade. É preciso ter cuidado aqui, pois esses pontos ocorrem - veja o May Flash Crash para um exemplo assustador. Spikes também podem ser causados ​​por não considerar as divisões de estoque quando ocorrem. Os scripts do filtro Spike são usados ​​para notificar os comerciantes de tais situações. Agregação OHLC - Os dados OHLC gratuitos, como o Yahoo / Google, são particularmente propensos a situações de "agregação de marca ruim", onde trocas menores transpõem pequenos negócios bem acima dos preços de câmbio "principais" do dia, levando a maxima / minima excessivamente inflados Uma vez agregado. Isto é menos um "erro" como tal, mas é mais um problema a ser cauteloso. Dados faltantes - Os dados em falta podem ser causados ​​pela falta de trocas em um período de tempo específico (comum em dados de resolução de segundo / minuto de pequenas capitalizações ilíquidas), por ferias comerciais ou simplesmente como um erro no sistema de intercâmbio. Os dados em falta podem ser preenchidos (isto é, preenchidos com o valor anterior), interpolados (linear ou de outra forma) ou ignorados, dependendo do sistema de negociação.
Muitos desses erros dependem do julgamento manual, a fim de decidir como proceder. É possível automatizar a notificação de tais erros, mas é muito mais difícil automatizar sua solução. Por exemplo, é preciso escolher o limite para ser informado sobre picos - quantos desvios padrão usar e em que período de look-back? Muito alto um stdev vai perder alguns picos, mas muito baixo e muitos anúncios de notícias incomuns levará a falsos positivos. Todas essas questões exigem um julgamento avançado do comerciante do quant.
Também é necessário decidir como corrigir erros. Os erros devem ser corrigidos logo que sejam conhecidos e, em caso afirmativo, deve ser realizada uma auditoria? Isso exigirá uma tabela extra no banco de dados. Isso nos leva ao tópico de recheio, o que é uma questão particularmente insidiosa para backtesting. Refere-se à correção automática de dados incorretos a montante. Se o seu fornecedor de dados corrigir um erro histórico, mas uma estratégia de negociação de backtested está em produção com base na pesquisa de seus dados incorretos anteriores, as decisões precisam ser feitas em relação à eficácia da estratégia. Isso pode ser um pouco atenuado ao estar plenamente consciente das suas métricas de desempenho da estratégia (em particular, a variação nas suas características de perda / perda para cada comércio). As estratégias devem ser escolhidas ou projetadas de tal forma que um único ponto de dados não possa distorcer o desempenho da estratégia em grande medida.
Como esses processos são automatizados?
O benefício de escrever scripts de software para realizar o download, armazenamento e limpeza dos dados é que os scripts podem ser automatizados através de ferramentas fornecidas pelo sistema operacional. Em sistemas baseados em UNIX (como Mac OSX ou Linux), pode-se usar o crontab, que é um processo em execução contínua que permite que scripts específicos sejam executados em horários específicos ou períodos regulares. Existe um processo equivalente no MS Windows conhecido como o Agendador de Tarefas.
Um processo de produção, por exemplo, pode automatizar o download de todos os preços de fim de dia S & P500 logo que sejam publicados através de um fornecedor de dados. Em seguida, executará automaticamente os dados faltantes acima mencionados e scripts de filtração de espiga, alertando o comerciante por e-mail, SMS ou alguma outra forma de notificação. Neste ponto, todas as ferramentas de backtesting terão automaticamente acesso a dados recentes, sem que o comerciante tenha que levantar um dedo! Dependendo de se o seu sistema comercial está localizado em uma área de trabalho ou em um servidor remoto, você pode escolher no entanto ter um processo semi-automatizado ou totalmente automatizado para essas tarefas.
Como os dados são fornecidos ao software externo?
Uma vez que os dados são atualizados automaticamente e residindo no RDBMS, é necessário levá-lo ao software backtesting. Esse processo será altamente dependente de como seu banco de dados está instalado e se seu sistema comercial é local (ou seja, em um computador desktop) ou remoto (como, por exemplo, com um servidor de troca co-localizado).
Uma das considerações mais importantes é minimizar a Entrada / Saída excessiva (E / S), pois isso pode ser extremamente caro tanto em termos de tempo e dinheiro, assumindo conexões remotas onde a largura de banda é dispendiosa. A melhor maneira de abordar esse problema é apenas mover dados em uma conexão de rede que você precisa (através de consulta seletiva) ou exportar e compactar os dados.
Muitos RDBMS suportam tecnologia de replicação, que permite que um banco de dados seja clonado em outro sistema remoto, geralmente com um grau de latência. Dependendo da sua configuração e quantidade de dados, isso pode ser apenas na ordem dos minutos ou segundos. Uma abordagem simples é replicar um banco de dados remoto em uma área de trabalho local. No entanto, lembre-se de que os problemas de sincronização são comuns e demorados para corrigir!
Vou tentar discutir algumas situações de exemplo abaixo, mas há muitas maneiras de abordar esse problema e eles serão altamente específicos para sua configuração individual:
Se você estiver usando o MySQL, você pode usar uma linguagem de script de código aberto, como o Python (através da biblioteca MySQLdb ou o ORM SQLAlchemy) para se conectar ao banco de dados e executar consultas contra ele.
Bibliotecas de análise de dados mais recentes, como os pandas, permitem acesso direto ao MySQL (veja este tópico para um exemplo).
Você também pode usar seu idioma / ambiente favorito (C ++, C #, Matlab) e um link ODBC para se conectar a uma instância do MySQL.
MS SQLServer.
O SQLServer foi projetado para ser facilmente conectado a linguagens MS, como C # e Visual Basic via LINQ ORM. Você também pode se conectar ao SQLServer com o Python, via pyODBC.
Há claramente muitas outras combinações de armazenamento de dados e ambiente de backtesting. No entanto, deixarei a discussão dessas configurações para artigos posteriores!
Próximos passos.
Em futuros artigos, vamos discutir os detalhes técnicos da implementação dos títulos de valores mobiliários. Em particular, vamos instalar o MySQL, configurá-lo para obter dados de preços e obter dados do EOD das finanças do Yahoo / Google e explorá-lo através da biblioteca de análise de dados de pandas.
Apenas iniciando o comércio quantitativo?
3 razões para se inscrever para a lista de e-mails QuantStart:
1. Quant Trading Lessons.
Você terá acesso instantâneo a um curso de e-mail gratuito de 10 partes, repleto de sugestões e dicas para ajudá-lo a começar a negociação quantitativa!
2. Todo o conteúdo mais recente.
Todas as semanas, vou enviar-lhe um envoltório de todas as atividades no QuantStart para que você nunca mais perca uma postagem novamente.
Real, dicas de negociação viáveis, sem tonturas.

Análise para o esquema de design do banco de dados forex Adicionar à lista de observação.
O melhor do esquema de design de banco de dados forex no KeyOptimize (fora de 32,9 Mil em resultado | Última verificação 24 de agosto de 2017)
Encontre os recursos mais recentes para desenvolvedores. No Microsoft Developer Network, você pode aprender a criar aplicativos para a Web, Windows Phone e Xbox.
O Forex Factory fornece informações para comerciantes de forex profissionais; notícias de forex rápidas; fórum de forex altamente ativo; calendário forex famoso-confiável; agrega dados de mercado forex.
SQL Server Central. Tutoriais do Microsoft SQL Server, treinamento & amp; fórum. Conhecimento diário do SQL Server direto para sua caixa de entrada. Inscreva-se & amp; nbsp; Faça o login & amp; nbsp; :: & amp; nbsp; Registrar & amp; nbsp; :: & amp; nbsp; Não iniciou sessão & amp; nbsp; & amp; nbsp; Home Tags Artigos Editoriais Escadas Foru.
O Stack Overflow é a comunidade online maior e mais confiável para que os desenvolvedores aprendam, compartilhem seus conhecimentos de programação e criem suas carreiras.
Aproveite os vídeos e a música que você ama, faça o upload de conteúdo original e compartilhe tudo com amigos, familiares e mundo no YouTube.
Estratégias de negociação algorítmica, backtesting e implementação com C ++, Python e pandas.
Construído para desenvolvedores. Uma maneira melhor de trabalhar em conjunto. Caixas? Verifique ... Desenvolva o GitHub. Bem-vindo a casa, desenvolvedores. Comece gratuitamente. Escreva um código melhor. Gerencie seu caos. Código de segurança. Acesso controlado. Hospedado onde você precisa. Mais de um milhão.
Conselhos e vendas de dispositivos médicos e laboratoriais. Oferecemos analisadores, condutividade, medidores de pH, reagentes e muito mais.
"Vá, pois, e faça discípulos de cada nação". PROJETOS. EU SOU UM MISSIONÁRIO. Você sempre pode entrar em contato comigo caso precise de algo extraordinário para o seu mundo missionário. Sobre mim. Minha visão. Ajude-me. JUCUM Kona, Ministério da Coroa. Haiti, Computer Tra.
O FX-MM fornece notícias e informações comerciais para as indústrias de tesouraria, comércio e tecnologia: revistas, boletim informativo, diretório e serviços on-line.
Artes marciais tradicionais para a família moderna.
O Google Groups permite que você crie e participe em fóruns online e grupos com base em email com uma experiência rica para conversas da comunidade.

Esquema do banco de dados Forex
CREATE TABLE [dbo]. [FX] (
[Uniid] [int] IDENTIDADE (1,1) NÃO NULL,
[Fx_Id] [nchar] (10) NULL,
[Fx_Year] [smallint] NULL,
[Fx_1] [smallmoney] NULL, - & gt; Jan Rate.
[Fx_2] [smallmoney] NULL, - & gt; Taxa de fevereiro.
[Fx_3] [smallmoney] NULL,
[Fx_4] [smallmoney] NULL,
[Fx_5] [smallmoney] NULL,
[Fx_6] [smallmoney] NULL,
[Fx_7] [smallmoney] NULL,
[Fx_8] [smallmoney] NULL,
[Fx_9] [smallmoney] NULL,
[Fx_10] [smallmoney] NULL,
[Fx_11] [smallmoney] NULL,
[Fx_12] [smallmoney] NULL, - & gt; Taxa Dec.
CREATE TABLE [dbo]. [FX] (
[Uniid] [int] NOT NULL,
[Fx_Id] [nchar] (10) NULL,
[Fx_Year] [smallint] NULL,
[Fx_Month] [tinyint] NULL,
[Fx_Rate] [smallmoney] NULL,
Porque, neste caso, seus meses, que é corrigido, você pode ir com a própria abordagem anterior. No entanto, se você planeja capturar forex em maior freqüência (digamos, semana de semana de sempre, etc.), a última abordagem seria aquela que lhe dará a flexibilidade para isso.
Em suma, se você quer mais flexibilidade para a última abordagem. Se você quiser apenas um modelo estático que atenda ao seu requisito de negócios atual, você pode ir para o primeiro.
Marque isso como resposta se solucionar seu problema.
Por favor, considere isso útil se isso ajuda a resolver seu problema.
Marcado como resposta por Lydia Zhang pessoal contingente da Microsoft, Moderador terça-feira, 03 de fevereiro de 2018 às 9h40.
Todas as respostas.
Porque, neste caso, seus meses, que é corrigido, você pode ir com a própria abordagem anterior. No entanto, se você planeja capturar forex em maior freqüência (digamos, semana de semana de sempre, etc.), a última abordagem seria aquela que lhe dará a flexibilidade para isso.
Em suma, se você quer mais flexibilidade para a última abordagem. Se você quiser apenas um modelo estático que atenda ao seu requisito de negócios atual, você pode ir para o primeiro.
Marque isso como resposta se solucionar seu problema.
Por favor, considere isso útil se isso ajuda a resolver seu problema.
Marcado como resposta por Lydia Zhang pessoal contingente da Microsoft, Moderador terça-feira, 03 de fevereiro de 2018 às 9h40.
A Microsoft está conduzindo uma pesquisa on-line para entender sua opinião sobre o site da Msdn. Se você optar por participar, a pesquisa on-line será apresentada quando você deixar o site Msdn.

Esquema de banco de dados Forex.
Categoria: sql server dbdesign.
AngaraKiran em Ter, 27 Jan 2018 08:08:49.
CREATE TABLE [dbo]. [FX] (
[Uniid] [int] IDENTIDADE (1,1) NÃO NULL,
[Fx_Id] [nchar] (10) NULL,
[Fx_Year] [smallint] NULL,
[Fx_1] [smallmoney] NULL, - & gt; Jan Rate.
[Fx_2] [smallmoney] NULL, - & gt; Taxa de fevereiro.
[Fx_3] [smallmoney] NULL,
[Fx_4] [smallmoney] NULL,
[Fx_5] [smallmoney] NULL,
[Fx_6] [smallmoney] NULL,
[Fx_7] [smallmoney] NULL,
[Fx_8] [smallmoney] NULL,
[Fx_9] [smallmoney] NULL,
[Fx_10] [smallmoney] NULL,
[Fx_11] [smallmoney] NULL,
[Fx_12] [smallmoney] NULL, - & gt; Taxa Dec.
CREATE TABLE [dbo]. [FX] (
[Uniid] [int] NOT NULL,
[Fx_Id] [nchar] (10) NULL,
[Fx_Year] [smallint] NULL,
[Fx_Month] [tinyint] NULL,
[Fx_Rate] [smallmoney] NULL,
Visakh16 em Ter, 27 Jan 2018 08:24:17.
Porque, neste caso, seus meses, que é corrigido, você pode ir com a própria abordagem anterior. No entanto, se você planeja capturar forex em maior freqüência (digamos, semana de semana de sempre, etc.), a última abordagem seria aquela que lhe dará a flexibilidade para isso.
Em suma, se você quer mais flexibilidade para a última abordagem. Se você quiser apenas um modelo estático que atenda ao seu requisito de negócios atual, você pode ir para o primeiro.
Kalman Toth em Ter, 27 de janeiro de 2018 08:26:29.
Eu voto para o esquema 2.
scott_morris-ga em Ter, 27 Jan 2018 14:04:54.
Recomeçar. Você não tem chaves estrangeiras para algo como "moeda", sua coluna de identidade não serve para nada, as tabelas que possuem todas as colunas anuláveis ​​não são realmente tabelas ou são indicativas de um programador que não pensa muito no esquema, o tipo de dados do dinheiro não é um tipo de dados apropriado para armazenar o que é efetivamente uma relação, uma coluna que contém o texto "Id." em seu nome, mas é definido como uma seqüência de caracteres é suspeito por muitos motivos, a coluna Fx_Id não tem nenhum propósito claro, e o mais importante de tudo - uma taxa de câmbio está relacionada a 2 moedas, um fato que parece faltar em sua tabela. E eu pessoalmente, pelo menos, iniciaria esse processo de design usando uma ou duas colunas de data para armazenar o final do mês e (potencialmente) as datas de início do mês. A divisão da data em colunas ano e mês permitirá que os valores sem sentido sejam armazenados; algo que o datatype da data irá prevenir automaticamente.

No comments:

Post a Comment