Pergunta

Como é que as pessoas fazem os bancos de dados reutilizáveis ??que podem ser usados ??para muitos produtos?

Por exemplo, se temos um banco de dados projetado para uma escola ... Pode ser facilmente modificado para ser dado a uma faculdade?

O que é o caminho para criar um banco de dados que pode ser usado como um produto para dar solução a muitos clientes com a codificação apenas uma vez?

Graças

Foi útil?

Solução

Uma aplicação como isso exigiria um modelo de dados bastante complexa para a conta para os requisitos. Diferentes tipos de escolas que têm necessidades diferentes. Uma universidade pode deixar você incluir ou eliminar cursos, mas uma escola primária normalmente não faz. A universidade precisa para cursos de programação em quartos, enquanto um elementares necessidades da escola para colocar os alunos em graus e graus divididos em salas de aula com base no espaço disponível e professores.

Seu projeto deve levar em consideração todos os requisitos, espera-se a resolver e, em seguida, implementar esses. Quanto mais genérica de fazer o programa o mais difícil é para satisfazer seus clientes. A questão diz "escrever o código uma vez". Se você quer escrever um único programa que resolve as necessidades de cada escola, ele vai precisar de centenas de recursos; em alguns casos, algumas escolas vai exigir uma característica oposta de outra escola; por exemplo, algumas escolas terão de cumprir um professor por disciplina ou sala de aula, enquanto outra escola pode exigir várias professores. Os requisitos mais você espera encontrar, mais complexa a aplicação torna-se.

Na indústria grandes aplicações tendem a ser escrito para que eles possam ser prorrogado; um conjunto básico de funcionalidade é fornecida mas a aplicação é para ser mudado e personalizado para um cliente particular. Isto torna mais fácil de desenvolver, porque você não precisa antecipar a cada necessidade; na verdade, você não vai precisar de antecipar muitas necessidades até que você tenha um cliente com essas necessidades. Mas com "personalização" você não está escrevendo código apenas uma vez.

O passo mais importante é chegar a um modelo de dados que é suficiente flexível para estender mais tarde, mas não é tão flexível que é impossível desenvolver para. A parte mais difícil é geralmente recebendo a cardinalidade das relações corrigir. Por exemplo, você pode dizer uma classe tem um professor. Então, quando se constata uma classe precisa de dois professores, você tem que reescrever um monte de código e corrigir uma grande quantidade de dados. Esses tipos de mudanças são irritantes e demorado. No entanto, no final, você sempre pode corrigir erros determinado momento programador suficiente.

Outras dicas

Normalmente, quando as pessoas fazem isso, eles têm vários clientes na mesma indústria. Então, se você é um desenvolvedor web de comércio eletrônico, então você está indo para executar toda a mesmos produtos, ordem, detalhes da ordem tipo de cenário mesa uma e outra vez. Quando isso acontece, é uma brisa para construir um banco de dados inicial.

Não há nenhuma bala de prata simples para isso. Você só precisa manter seu o suficiente geral de design de banco de dados, mas tentar evitar o excesso de generalização como que normalmente leva à pesadelos em manutenção e outras armadilhas desagradáveis.

Com a experiência, você vai começar a apreciar um equilíbrio perfeito entre generalizada e especializada. Essa é a chave para o projeto do código / banco de dados compreensíveis e reutilizável.

A resposta é encontrar um sweet spot de abstração .

O primeiro passo, falar a uma grande variedade de potenciais clientes e descobrir suas necessidades, o que eles estão usando atualmente eo que eles desejam seu produto atual (s) poderia fazer. Gastar 10 vezes mais tempo para isto como você acha que você precisa no momento. Tirar um potencial de GUIs em papel e ter as pessoas que você entrevista olhar para os desenhos e sugestões make. Se possível, contrate algumas pessoas na indústria como analistas de negócios para ajudar com este passo. Pergunte sobre os requisitos legais. Algumas indústrias têm um monte de problemas complicance legais e outros não. Qualquer coisa relacionada de alguma forma para o mundo médico e você vai precisar para pesquisar e compreender plenamente os requisitos HIPPA, por exemplo.

Desenhar a estrutura de banco de dados e uma interface gráfica em seguida, obter alguns usuários reais para jogar com ele. Refactor com base no que eles dizem (é incrível como muitas coisas que os usuários deixar de fora na coleta de requisitos que eles não pensam até confrontados com uma GUI real).

Pense sobre o que precisa comum através de todos os clientes em potencial e onde você pode precisar de personalização - suas entrevistas deve guiá-lo aqui. Decidir como lidar com personalização. Ou mesmo se você vai permitir isso. Isto pode depender muito sobre a indústria e como padrão de suas práticas são.

Se este é um software caixa, muitas vezes, o projeto inclui uma tabela com campos personalizáveis ??que podem ser adicionados aos formulários e relatórios do usuário.

Em uma solução baseada na web, muitas vezes cada usuário querendo personalização podem ter seu próprio banco de dados onde a informação personalizada é armazenado (e um banco de dados standrad central para as coisas noncustomizable) e os programadores a fazer as mudanças com base em solicitações dos clientes. Se você tomar este caminho, a segunda vez que você faz uma personalização simliar para um segundo cliente, considerar se você precisa refatorar para tornar esta uma característica nova do software disponível para todos. Não há necessidade de escrever relatórios de atendimento 17 personalizados que variam apenas por um ou dois campos quando a lata cliente por menos dinheiro tem um relatório padrão.

No modelo de web, você também pode criar um monte de módulos e ter os clientes escolher quais para adicionar à sua solução personalizada. Eles pagariam com base no número e complexidade dos módulos que escolhem. Assim, o cliente que quer apenas três dos relatórios padrão pagaria menos do que o cliente que quer tudo 27. Quando uma nova personalização é sugerido, o cliente paga para o desenvolvimento se a sugestão não parece aplicar immdeiately para os outros, mas o módulo é feito para que outras pessoas possam comprá-lo também. Se outros comprá-lo, o cliente original que pediu a mudança pode obter parte do dinheiro até que seus custos de desenvolvimento é pago. Eles também poderiam exigir que algo permanecer como um módulo personalizado e pagar um preço muito mais elevado para este trabalho. Temos alguns clientes que nem sequer querem que seus dados nos mesmos servidores no mesmo local que outros clientes. Escusado será dizer que, nós cobramos um prêmio enorme para fazer algo assim.

A personalização é caro e pode levar a muitos mais programadores necessários. Considere fortemente antes de ir a rota personalização. Ela pode realmente ser a coisa que vende a sua solução de software, mas não escala bem. Não é ruim quando você tem cutomers dez, mas quando você tem um par de cem ele pode ficar fora de controle muito rapidamente. É muito mais difícil se afastar de personalização, uma vez que oferecem-lo, do que para adicionar personalização depois de uma suíte standard. Muitas vezes, a necessidade de personalização é mais na organização de relatórios corporativos. Se você pode criar uma interface de comunicação onde as pessoas podem escolher e escolher as informações que eles querem e salvar seus próprios relatórios personalizados, você pode lidar com a maioria das necessidades de personalização em seu setor, sem personalização em larga escala necessária.

o melhor conselho que posso dar é construir para o menor denominador comum ....

Então .... Código como um projeto voltado para instalações de educação: -)

Passe algum tempo pensando sobre o tipo de dados que deseja armazenar, abstraí-lo, a fim de torná-lo extensível, e então construir seu banco de dados em conformidade. Eu não sei se você pode obter reutilização perfeita a maneira que você pode a partir do código, mas você pode construir uma estrutura de banco de dados (onde você ainda tem que modificar componentes individuais), que é reutilizável se você planejar com antecedência.

Tudo depende das suas necessidades. Por exemplo, muitos bancos de dados para o produto base o uso do negócio um formato que inclui:

  • uma tabela de clientes
  • uma tabela encomendas
  • uma tabela de produtos, etc

Na sua situação, você pode ter

  • uma tabela de classe
  • uma tabela de estudantes
  • uma tabela de notas, etc.

Este formato geral tabela pode ser reutilizado em muitas aplicações.

É tudo no projeto. Em muitos (se não a maioria) casos, bases de dados vai precisar de algum nível de personalização para instituições individuais; mas bancos de dados generalizadas pode fornecer um nível básico de funcionalidade. É possível projetar algo que é bastante geral para servir a muitas necessidades básicas; mas o problema é que essa generalidade do projeto tende a levar a alta complexidade. Por exemplo, você pode criar seu banco de dados para ser para um grande conjunto de potenciais necessidades do usuário baseada em dados; mas geralmente, é apenas melhor para personalizar o esquema para as necessidades individuais de cada instituição.

Existem vantagens e desvantagens significativas envolvidas na concepção de uma situação de reutilização; Normalmente eles envolvem tempo e complexidade; ou seja, é mais fácil para projetar algo que não é reutilizável; e, geralmente, a quantidade adicional de tempo invovled em fazer o desenho geral e usá-lo não vale a pena o esforço.

Encontrar o equilíbrio certo de generalidade e especificidade em seu projeto de banco de dados para que o aplicativo que você constrói em torno dele resolve problemas suficientes em seus mercados-alvo que todos eles vão comprar para ele.

Será cada utilização do cliente todas as funcionalidades ou você está tentando construir um um tamanho único produto? Eu sempre achei que o tempo adicional gasto planejamento e modificar um banco de dados para atender uma determinada aplicação compensa no futuro. É muito mais fácil trabalhar com uma estrutura de banco de dados conciso do que aquele em que você tentou conta para todas as possibilidades.

Se eu tiver um banco de dados que é semelhante ou um modelo Eu costumo usar uma ferramenta de modelagem de banco de dados como este para modificá-lo e, em seguida, usar a gerar funcionalidade SQL (sob carga / salvar) para criar o banco de dados real.

Outro truque que aprendi recentemente que me salvou um monte de tempo é salvar o SQL usado para gerar o banco de dados como um script. Se eu quiser criar um novo banco de dados que eu faça as edições ao código-fonte, e, em seguida, carregar a página. Por exemplo, se eu quisesse gerar uma nova carga de mesa ao cliente I http: // localhost / carga .php? gerar = cliente .

Espero que ajude!

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