Pergunta

Eu tenho trabalhado em colocar para fora a estrutura de dados para uma aplicação que estou trabalhando. Uma das coisas que você precisa para identificador é armazenar informações de clientes / contato. Venho estudando a interface de alguns programas diferentes de informações de contato como o Address Book, contatos do Gmail, etc.

Eu basicamente fervida o baixo contato para uma "entidade" (pessoa, empresa, papel, etc).

  • Cada Entidade pode ter vários Endereço , Telefone , E-Mail entradas.
    • Cada um deles define um "relacionamento" (home / trabalho / assistente, etc)
    • Entidade {1} - {relação} -> {0 .. *} Data
  • Um Entidade pode ter vários campos que são o armazenamento de dados de forma livre para outros dados "genéricos" (aniversários, conta AIM, etc)
    • Entidade {1} - {fieldName} -> {0 .. *} Campo de dados
  • Um Entidade pode vincular a outra Entidade , por exemplo, como um funcionário , cônjuge
    • Entidade {0 .. } <- {relação} -> {0 .. } Entidade

Alguém já fez quaisquer implementações SQL de bancos de dados de contato semelhantes? Qualquer visão / sugestões / armadilhas a evitar que você poderia compartilhar com alguém tentando trabalhar em um projeto por si só aqui? Faz o que eu descrevi parece razoável ou demasiado complicada?

Uma pergunta, digamos que você tenha 4 pessoas, que todo o trabalho para a mesma empresa. Todos eles têm o mesmo "trabalho" número de telefone (talvez com uma extensão diferente) - Se o número ou endereço de mudanças "trabalho", eu gostaria de ser capaz de atualizar os contatos com bastante facilidade. Agora um monte de esta se resume a como você usaria o banco de dados. Eu estou pensando que isso se torna uma questão de ligar empregado do que as respectivas entidades da empresa, mas, em seguida, o número do endereço / telefone não está mais diretamente ligado ao empregado. Eu sou o tipo de debater tornando a relação Entidade / dados de muitos para muitos que lhe permite anexar o mesmo número de endereço / telefone para várias pessoas, e atualizá-lo em um lugar pode atualizá-lo em todos os lugares. Estou apenas pensando sobre isso? puxa o cabelo

Foi útil?

Solução

É um pouco banal, mas você precisa saber os seus dados e o que você vai fazer com ele antes de começar tabelas pensando.

Eu sugiro olhar Object Role Modeling (ou este também) para definir o modelo na planície Inglês antes de realmente implementar quaisquer tabelas. Eu uso este VS plugin:. NORMA que também irá gerar um esquema para você também

Como alternativa, há um monte de modelos de dados aqui que podem inspirar você. Este é "Contact Management", mas existem outros, tais como os "clientes" seção

(Eu só queria postar uma imagem ..) Gestão de Contact
(fonte: databaseanswers.org )

Outras dicas

Este é apenas para ajudar com sua segunda pergunta; onde a extensão telefone na verdade pertence a relação entre entidades pessoa e empresa.

contact_model_01

A Microsoft oferece uma série de bases de dados iniciais esquemas, inclusive os ativos Manutenção, Gerenciamento de contatos, clientes e pedidos, Gestão de Documentos, e-Commerce, Help Desk, Issue Tracking Software, Inventário de varejo de controle e Catálogos de Produtos. Consulte de arranque banco de dados esquemas .


Editar (Abril de 2016): É aparecem o webmaster Microsoft quebrou o link. Aqui está o Wayback Machine arquivo da página.

Um par de pontos que tendem a surgir na minha experiência ..

Considere relações recíprocas. Por exemplo, se alguém é definido como sendo um empregado de uma empresa, então, a empresa é, então, por definição, o empregador dessa pessoa.

Você está considerando endereços como entidades em si mesmos, ou como texto meramente livre associada a uma pessoa / local? Em algumas aplicações, o endereço (edifício físico etc) é 'real' e apenas uma pode existir na tabela. (Muitas vezes, utilizando o identificador de governo / postal para ele).

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