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: