Mongodb Схема дизайна подходит одно предложение

Привет, я новичок в mongodb. Я использую Java.

У меня есть 2 таблицы system, system_properties в моей реляционной таблице.

Что-то вроде этого.

       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

Я пытаюсь создать схему для этого. например: для вставки одного документа

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

Это лучшая схема для этого дизайна?

Чтобы избежать присоединений, мы встраиваем документы.

У меня есть сомнения, необходим ли system_id: 100 (внешний ключ в реляционных таблицах), так как "_id" = 100 (primarykey в реляционной таблице) также ссылается на то же самое.

3 ответа

Ключ Foreight в вашем объекте свойств не требуется, поскольку вы ввели их в документ. Системные свойства должны быть просто массивом или даже объектом вроде:

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

Есть несколько способов создать эту схему, даже используя две коллекции. Так:

Как ваше приложение использует хранимую информацию?

У вас есть неограниченный рост этих встроенных свойств? => плохая идея!

Есть ли некоторые с двумя свойствами, некоторые с 100, а некоторые с 1k? => старайтесь придерживаться одного размера документов в коллекции. (используйте группировку, и если вы хотите favs/best 5 для вашего основного документа)

больше информации: Поговорим о Schemadesign Элиота Горовица

Разработка схемы очень важна для эффективности вашей модели базы данных. Вы хотите избежать попыток думать о дизайне своей схемы для mongodb в мышлении реляционной базы данных. Что касается вашего вопроса, вам не нужно иметь внешний ключ для системного идентификатора, поскольку вы встраиваете Системные свойства в системный документ. Кроме того, поля "Свойства системы" могут просто входить непосредственно в системный документ без встраивания, как указал Константин выше.

Вот несколько ссылок, которые помогут вам задуматься о том, что важно учитывать при разработке схемы в mongodb:

Другие вопросы по тегам