Question

Je travaille sur la pose sur la structure de données pour une application que je travaille. L'une des choses dont il aura besoin pour gérer le stockage d'informations est client / contact. J'étudie l'interface de quelques différents programmes d'information de contact comme le carnet d'adresses, contacts gmail, etc.

Je l'ai essentiellement fait bouillir le contact vers le bas à une « entité » (individu, société, rôle, etc.).

  • Chaque Entité peut avoir plusieurs Adresse , Téléphone , E-Mail entrées .
    • Chacune de ces définit une "relation" (domicile / travail / assistant, etc.)
    • Entité {1} - {relation} -> {0} .. * Données
  • entité peuvent avoir plusieurs champs qui sont le stockage des données freeform pour d'autres données "génériques" (anniversaires, compte AIM, etc.)
    • Entité {1} - {fieldName} -> {0} .. * Champ de données
  • Entité peut créer un lien vers une autre Entité , par exemple, en tant que employé , conjoint
    • Entité {0 .. } <- {relation} -> {0 .. } Entité

Quelqu'un at-il fait des implémentations SQL de bases de données de contact similaires? Toute idée / suggestions / pièges à éviter que vous pourriez partager avec quelqu'un qui essaie de travailler sur un projet par eux-mêmes ici? Est-ce que ce que je viens de décrire semble raisonnable ou trop compliqué?

Une question, disons que vous avez 4 personnes qui travaillent tous pour la même entreprise. Ils ont tous le même numéro de téléphone « de travail » (peut-être avec une autre extension) - Si le numéro ou l'adresse des changements « de travail », je voudrais être en mesure de mettre à jour les contacts assez facilement. Maintenant, beaucoup de cela se résume à la façon dont vous utilisez la base de données. Je pense que cela devient une question de lier l'employé à leurs entités respectives de l'entreprise, mais le numéro adresse / téléphone ne sont plus directement connecté à l'employé. Je suis un peu débat faisant l'entité / relation de données de plusieurs à plusieurs vous permettant de joindre le même numéro adresse postale / téléphone à plusieurs personnes, et le mettre à jour en un seul endroit peut mettre à jour dans tous les lieux. Est-ce que je pense juste au-dessus de cela? tire les cheveux

Était-ce utile?

La solution

Il est un peu banal, mais vous devez connaître vos données et ce que vous allez faire avec elle avant de commencer à penser tables.

Je vous suggère de regarder objets Rôle Modélisation (ou cette trop) pour définir le modèle en anglais simple avant de mettre réellement en œuvre toutes les tables. J'utilise ce plugin VS:. NORMA qui sera également générer un schéma pour vous aussi

Sinon, il y a un tas de modèles de données qui peuvent vous inspirer. Ceci est « Contact Management », mais il y a d'autres, comme la section « Clients »

(Je voulais juste poster une image ..) contact Management
(source: databaseanswers.org )

Autres conseils

Ceci est juste pour aider à votre deuxième question; où l'extension de téléphone appartient en réalité à la relation entre les entités de la personne et la société.

Microsoft offre un certain nombre de schémas de bases de données de démarrage, y compris les actifs d'entretien, la gestion des contacts, des clients et des commandes, la gestion des documents, e-commerce, Help Desk, numéro Logiciel de suivi, contrôle des stocks au détail et catalogues de produits. Voir de démarrage Base de données Schemas.


EDIT (Avril 2016): Il semble le webmaster Microsoft a cassé le lien. Voici le Wayback archive machine de la page.

Un couple de points qui ont tendance à rogner dans mon expérience ..

Examiner les relations réciproques. Par exemple, si quelqu'un est défini comme étant un employé d'une entreprise, l'entreprise est par définition l'employeur de cette personne.

Envisagez-vous des adresses comme des entités en elles-mêmes, ou comme un simple texte libre associé à une personne / lieu? Dans certaines applications, l'adresse (bâtiment physique, etc.) est « réelle » et ne peut exister dans la table. (Souvent en utilisant l'identifiant du gouvernement / postal pour elle).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top