Pergunta

Estou implementando um web - aplicação baseada usando o Silverlight com um servidor de DB SQL no back-end para todos os dados que a aplicação irá mostrar. Quero garantir que o aplicativo pode ser facilmente escalável e eu sinto a direção para ir com isso é fazer o banco de dados de baixo acoplamento e não para amarrar tudo com chaves estrangeiras. Eu tentei procurar alguns exemplos, mas sem sucesso.

Alguém tem alguma informação ou boa pontos de partida / samples / exemplos para me ajudar a sair do chão com isso?

Ajuda muito apreciada.

Atenciosamente,

Foi útil?

Solução

A menos que você está fazendo enormes quantidades de inserções de cada vez, como com um armazém de dados, usar chaves estrangeiras . Normalização escalas como um louco, e você deve aproveitar isso. As chaves estrangeiras são rápidos, ea restrição realmente só tem você de volta se você está inserindo milhões e milhões de registros de cada vez.

Certifique-se de que você está usando inteiro chaves que têm um índice agrupado sobre eles. Isto deve fazer a tabela juntar muito rápida. As questões que você pode obter-se envolvido em torno sem chaves estrangeiras são muitas e frustrante. Eu passei apenas o fim de semana fazendo isso, e fizemos uma escolha consciente de não ter chaves estrangeiras (temos terabytes de dados, embora).

Outras dicas

Eu acho que você está misturando-se a sua terminologia um pouco. "Livremente acoplado" refere-se ao desejo de se ter componentes de software que não são tão dependentes umas das outras que não pode funcionar ou mesmo compilar sem ser em conjunto no mesmo programa. Eu nunca vi o termo usado para descrever as relações entre tabelas no mesmo banco de dados.

Eu acho que se você pesquisar sobre os termos "normalização" e "desnormalização" você obterá melhores resultados.

Antes mesmo de pensar em tal coisa uma, você precisa pensar sobre a integridade dos dados. chaves estrangeiras existem para que você não pode colocar registros em tabelas se os dados primários que se baseiam não está lá. Se você não usar chaves estrangeiras, você vai, mais cedo ou mais tarde (provavelmente mais cedo) acabar com dados inúteis, porque você realmente não sabe quem é o cliente que a ordem é ligado a, por exemplo. As chaves estrangeiras são a protecção de dados, você nunca deve considerar não usá-los.

E mesmo que você acha que todos os seus dados virão de sua aplicação, na vida real, isso simplesmente não é verdade. Dados fica no a partir de múltiplas aplicações, desde a importação de grandes quantidades de dados, a partir da janela da consulta (pensar quando alguém decide atualizar todos os preços que eles não vão fazer isso um preço de cada vez a partir da interface do usuário). Os dados podem entrar em banco de dados de muitas fontes e devem ser protegidos no nível de banco de dados. Fazer menos é colocar toda a sua aplicação e os dados em risco.

Intersting comentário sobre a segurança do banco de dados quando os dados são introduzidos através de fontes externas, como scripts de banco de dados.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top