Explorando dicas de design de banco de dados
Um dos aspectos mais importantes de qualquer projeto de desenvolvimento de aplicativo é o design de banco de dados. E assim, sem mais delongas, aqui estão algumas dicas para desenhar boas bases de dados.
Conteúdo
- Use o número certo de mesas
- Evitar a repetição de dados
- Evitar dados redundantes
- Video: access, banco de dados, sistemas, dicas em access
- Use uma convenção de nomenclatura
- Video: um papo sobre bancos de imagens
- Evite nulos
- Evite códigos secretos
- Use restrições sabiamente
- Use dispara quando apropriado
- Use procedimentos armazenados
Use o número certo de mesas
Dentro Amadeus, Imperador da Alemanha critica uma das obras de Mozart como tendo “muitas notas.” Mozart responde indignado que ele usa nem demasiados nem muito poucas notas, mas o número exato de notas que a composição exige.
Assim deve ser com design de banco de dados. Seu banco de dados deve ter como muitas mesas como a aplicação requer - não mais, não menos. Não existe um número único “direito” de tabelas para todos os bancos de dados.
designers de banco de dados inexperientes têm uma tendência a usar também algumas mesas - às vezes tentando empinar todo um banco de dados no valor de informações em uma única tabela. No outro extremo, são bancos de dados com dezenas de mesas, cada uma composta de apenas alguns campos.
Evitar a repetição de dados
Um dos princípios fundamentais do design de banco de dados relacional é lidar com dados repetidos por dividi-lo para fora em uma tabela separada. Por exemplo, nos velhos tempos de processamento de arquivo simples, era comum para criar registros de faturas que tinha espaço para um certo número de itens de linha. Assim, o registro da fatura teria campos com nomes como Item1, Item2, Item3, e assim por diante.
Mau!
Sempre que você encontrar-se numeração nomes de campos como essa, você deve criar uma tabela separada. No caso do registro da fatura, você deve criar uma tabela separada para armazenar os dados de itens de linha.
Evitar dados redundantes
Ao projetar as tabelas que compõem seu banco de dados, para tentar evitar a criação de dados redundantes. Sempre que dados redundantes se arrasta em um banco de dados, introduz a possibilidade de que os dados se tornará corrupto. Por exemplo, suponha que você armazenar o nome de um cliente em duas tabelas diferentes. Então, se você atualizar o nome em uma das mesas, mas não o outro, o banco de dados tornou-se inconsistente.
Video: Access, banco de dados, Sistemas, Dicas em access
O tipo mais óbvio de erro redundante-dados é criar um campo que existe em duas ou mais tabelas. Mas existem tipos mais sutis de dados redundantes. Por exemplo, considere um Fatura mesa que contém um LineItemTotal campo que representa a soma do Total campos em cada um dos itens de linha da fatura. Tecnicamente, este campo representa redundante data- os dados também são armazenados na Total campos de cada item de linha.
Se você deve permitir que este tipo de redundância depende da aplicação. Em muitos casos, é melhor colocar-se com a redundância para a conveniência e eficiência de não ter que recalcular o total de cada vez que os dados são acessados. Mas é sempre vale a pena considerar se o maior comodidade vale a pena o risco de danificar os dados.
Use uma convenção de nomenclatura
Para evitar confusão, escolher uma convenção de nomenclatura para os objetos de banco de dados e cumpri-lo. Dessa forma, suas tabelas de banco de dados, colunas, restrições e outros objetos serão nomeados de forma consistente e previsível. (Basta pensar as economias em aspirina.)
Video: Um papo sobre bancos de imagens
Você pode argumentar a partir de agora até o dia de São Swithen sobre o que as convenções de nomenclatura devemos estar. Isso não importa tanto. O que importa é que você faça uma convenção - e segui-lo.
Evite nulos
Permitindo nulos em suas tabelas de banco de dados complica significativamente a programação de aplicações necessárias para acessar as tabelas. Como resultado, evitar nulos especificando NOT NULL sempre que puder. Use nulos raramente, e só quando você realmente precisa deles.
Nulos são muitas vezes mal utilizado de qualquer maneira. O uso correto de null é para um valor que é unknown- não para um valor em branco ou vazios. Por exemplo, considere um registro de endereço típico que permite que duas linhas de endereço, o nome Endereço 1 e Endereço 2. A maioria dos endereços têm apenas um endereço, para a segunda linha de endereço está em branco. O valor desta segunda linha endereço é, na verdade, conhecida - é em branco. Isso não é a mesma coisa que nulo. Null implicaria que o endereço pode ter um segundo endereço de linha que só não sei o que é.
Mesmo para colunas que podem parecer apropriado para nulos, geralmente é mais conveniente deixar apenas o valor da coluna em branco para valores que não são conhecidos. Por exemplo, considere um número de telefone coluna numa Cliente mesa. É seguro assumir que todos os seus clientes têm números de telefone, de modo que seria correto usar nulo para números de telefone que você não conhece. No entanto, a partir de um ponto de vista prático, é tão fácil para não permitir nulos para a coluna número de telefone, e deixar os números de telefone desconhecidos em branco.
Evite códigos secretos
Evite campos com nomes como Tipo de Cliente, onde o valor do campo é uma de várias constantes que não são definidas noutro lugar na base de dados, tal como R para Varejo ou W para Atacado. Você pode ter apenas estes dois tipos de clientes atuais, mas as necessidades da aplicação pode mudar no futuro, exigindo um terceiro tipo de cliente.
Uma alternativa seria criar uma tabela separada de códigos do tipo de cliente (chamá-lo CustomerTypes), E, em seguida, criar uma restrição de chave externa de modo que o valor do Tipo de Cliente coluna deve aparecer na CustomerTypes mesa.
Use restrições sabiamente
restrições deixá-lo a evitar alterações no banco de dados que violam a consistência interna de seus dados. Por exemplo, uma restrição de verificação permite validar apenas os dados que atende a determinados critérios. Por exemplo, você pode usar uma restrição de verificação para garantir que o valor de um campo chamado Preço é maior do que zero.
UMA restrição de chave externa requer que o valor de uma coluna em uma tabela deve corresponder ao valor que existe em alguma outra tabela. Por exemplo, se você tem um LineItems tabela com uma coluna chamada ID do produto, e uma Produtos tabela com uma coluna também chamado ID do produto, você poderia usar uma restrição de chave externa para se certificar de que o ID do produto valor para cada linha na LineItems tabelas coincide com uma linha existente na Produtos mesa.
Use dispara quando apropriado
UMA desencadear é um procedimento que entra em ação quando certos dados do banco de dados é atualizado ou acessado. Triggers são uma ótima maneira de fazer cumprir essas regras de banco de dados que são mais complicados do que restrições simples. Por exemplo, suponha que um Fatura tabela contém um Contagem de itens coluna cujo valor é o número de itens de linha para a factura. Uma maneira de manter o valor desta coluna automaticamente seria criar gatilhos que incrementar o Contagem de itens coluna sempre que um item de linha é inserida, e a decrementar Contagem de itens coluna sempre que um item de linha é eliminada. Às vezes, a automação é uma coisa linda.
Use procedimentos armazenados
Procedimentos armazenados são procedimentos SQL que estão escondidos no banco de dados e são parte dela. Existem várias vantagens de usar procedimentos armazenados em vez de codificação SQL em suas aplicações:
- Usando procedimentos armazenados remove o fardo de programação SQL de seus programadores de aplicativos. Em vez disso, faz com que o SQL usado para acessar o banco de dados de uma parte do próprio banco de dados - sem barulho, sem muss. Todos os programas de aplicação tem a fazer é chamar o apropriado procedimentos armazenados para selecionar, inserir, atualizar ou excluir dados do banco de dados.
- Os procedimentos armazenados são mais eficientes como uma maneira de transações de manipulação, porque o servidor de banco de dados lida com toda a transação.
- procedimentos armazenados também são mais eficientes, pois reduzem a quantidade de tráfego de rede entre o servidor de banco de dados eo servidor Web.
- Finalmente, procedimentos armazenados são mais seguras, pois reduzem o risco de ataques de injeção SQL.