Você conhece uma boa fonte para aprender como projetar soluções SQL?
Além da sintaxe básica da linguagem, estou procurando algo para me ajudar a entender:
- Quais tabelas criar e como vinculá-las
- Como projetar para diferentes escalas (APP de cliente pequeno em um site distribuído enorme)
- Como escrever consultas SQL eficazes / eficientes / elegantes
sql
database
database-design
scalability
ripper234
fonte
fonte
Respostas:
Comecei com este livro: Design de banco de dados relacional claramente explicado (série Morgan Kaufmann em sistemas de gerenciamento de dados) (brochura) de Jan L. Harrington e achei muito claro e útil
e, à medida que você avança, este também foi bom. Sistemas de banco de dados: uma abordagem prática ao projeto, implementação e gerenciamento (International Computer Science Series) (Brochura)
Eu acho que SQL e design de banco de dados são habilidades diferentes (mas complementares).
fonte
Comecei com este artigo
http://en.tekstenuitleg.net/articles/software/database-design-tutorial/intro.html
É bastante conciso comparado à leitura de um livro inteiro e explica muito bem os conceitos básicos de design de banco de dados (normalização, tipos de relacionamentos).
fonte
A experiência conta muito, mas em termos de design de tabelas, você pode aprender muito sobre como os ORMs como o Hibernate e o Grails operam para ver por que eles fazem as coisas. Além do que, além do mais:
Mantenha diferentes tipos de dados separados - não armazene endereços na sua tabela de pedidos, vincule-os a um endereço em uma tabela de endereços separados, por exemplo.
Pessoalmente, gosto de ter uma chave substituta inteira ou longa em cada tabela (que contém dados, e não aquelas que vinculam tabelas diferentes, por exemplo, relacionamentos m: n) que é a chave principal.
Também gosto de ter uma coluna de carimbo de data e hora criada e modificada.
Verifique se todas as colunas que você faz "where column = val" em qualquer consulta têm um índice. Talvez não seja o índice mais perfeito do mundo para o tipo de dados, mas pelo menos um índice.
Configure suas chaves estrangeiras. Configure também as regras ON DELETE e ON MODIFY, quando relevantes, para cascatear ou definir nulo, dependendo da estrutura do seu objeto (portanto, você só precisa excluir uma vez na "cabeça" da árvore de objetos e todos os subobjetos desse objeto serão removido automaticamente).
Se você deseja modularizar seu código, modularize seu esquema de banco de dados - por exemplo, esta é a área "customers", esta é a área "orders" e esta é a área "products" e usa tabelas de junção / link entre eles, mesmo que sejam relações 1: n, e talvez duplique as informações importantes (por exemplo, duplique o nome do produto, código e preço na tabela order_details). Leia sobre normalização.
Outra pessoa recomendará exatamente o oposto para alguns ou todos os itens acima: p - nunca uma maneira verdadeira de fazer algumas coisas, eh!
fonte
explain analyze
se um índice é um benefício.Gostei muito deste artigo. Http://www.codeproject.com/Articles/359654/important-database-designing-rules-which-I-fo
fonte
O Head First SQL é uma ótima introdução.
fonte
Essas são perguntas que, na minha opinião, exigem conhecimentos diferentes de diferentes domínios.
Dito isto, talvez você queira ler alguns livros, pessoalmente eu usei este livro em meu curso universitário datbase (e encontrou um decente, mas eu não ler outros livros neste campo, por isso o meu conselho é para verificar para fora para alguns bons livros sobre design de banco de dados).
fonte
Já faz um tempo desde que o li (então, não tenho certeza de quanto ainda é relevante), mas lembro que o livro SQL for Smarties de Joe Celko fornece muitas informações sobre como escrever consultas elegantes, eficazes e eficientes .
fonte