2012-09-05 1 views
0

Salut, je suis newbie à mongodb.J'utilise java.Conception de schéma Mongodb convenable une suggestion

J'ai 2 tables système, system_properties dans ma table relationnelle.

Quelque chose comme ça.

 Table    Fields          values 

     System   System_ID(PK), System_Info     100, cisc 
                    200, Gets 
     System_prop  System_ID(FK), Prop_key, Description  100, good, success 
                    100, better,progress 
                    200, worse,failed 

J'essaye de créer un schéma pour ceci. par exemple: pour insérer un document

 System 
     { 
      "_id" : 100 
      "System_Info" : "cisc" 
      System_Properties : 
       { "system_id":100 
         [{prop_Key : "good", Description: "success"}, 
         {prop_Key : "better", Description: "progress"}] } 
     } 

Est-ce le meilleur schéma pour ce design?

Pour éviter les jointures, nous intégrons des documents.

Je doute que system_id: 100 (clé étrangère dans les tables relationnelles) soit nécessaire car "_id" = 100 (clé primaire dans la table relationnelle) fait également référence à la même chose.

Répondre

1

Il n'est pas nécessaire d'insérer une clé Forefront dans votre objet de propriétés car vous l'avez incorporé dans un document. Propriétés du système doivent être juste un tableau, ou de l'objet même comme:

{ 
    "good": "success", 
    "better": "progress" 
} 
1

Il y a plusieurs façons de concevoir ce schéma, même en utilisant deux collections. Alors:

Comment votre application utilise-t-elle les informations stockées?

Avez-vous une croissance illimitée de ces propriétés intégrées? => mauvaise idée!

Y en a-t-il avec seulement deux propriétés, certaines avec 100, d'autres avec 1k? => essayer de coller à une taille de docs dans une collection. (Utilisation héliporté et si vous voulez mieux 5/favs pour votre document principal)

Plus d'info: conception Talk about Schemadesign by Eliot Horowitz

0

schéma est très important pour l'efficacité de votre modèle de base de données. Vous voulez éviter de penser à votre conception de schéma pour mongodb dans un état d'esprit relationnel de base de données. Plus précisément à votre question, vous n'avez pas besoin d'une clé étrangère pour l'ID système, puisque vous intégrez les propriétés système dans votre document système. De plus, vos champs Propriétés système peuvent simplement aller directement dans votre document Système sans être intégrés, comme Konstantin comme indiqué ci-dessus.

Voici quelques liens pour vous aider à démarrer la réflexion sur les considérations qui sont importantes pour faire lorsque vous faites la conception de schéma dans MongoDB:

+1

http://www.manning.com/banker/ (MongoDB en action) http://www.10gen.com/presentations/mongosf2011/schemabasics http://www.10gen.com/presentations/mongosv-2011/schema-design-by-example http://www.10gen.com/presentations/mongosf2011/schemascale Et voici quelques modèles de schémas: http://docs.mongodb.org/manual/use-cases/ – Louisa