Лучший формат документа для адресной книги в CouchDB - PullRequest
2 голосов
/ 23 апреля 2010

Я действительно пытался, старался изо всех сил, но я не могу понять couchdb :( Я должен записать контакт нескольких человек, должен ли я поместить каждый контакт в один документ?

"1th documet"
{
 "names" : [
  Jake", "Lock"
 ]

 "numbers" : [
  "Jake's number", "Lock's number"
 ]
}

Future records:

"1th documet"
{
 "names" : [
  Jake", "Lock", "Kate", "Jin", ...
 ]

 "numbers" : [
  "Jake's number", "Lock's number", "Kate's number", "Jin's number", ...
 ]
}

Или в разных документах?

"1th document"
{
 "name" : "Jake"

 "number" : "Jake's number"
}

"2th document"
{
 "name" : "Lock"

 "number" : "Lock's number"
}

Future records:

"1th document"
{
 "name" : "Jake"

 "number" : "Jake's number"
}

"2th document"
{
 "name" : "Lock"

 "number" : "Lock's number"
}

"3th document"
{
 "name" : "Kate"

 "number" : "Kate's number"
}

"4th document"
{
 "name" : "Jin"

 "number" : "Jin's number"
}

...

Я запутался, кто-нибудь может мне помочь?

Спасибо.

1 Ответ

3 голосов
/ 23 апреля 2010

Я предполагаю, что вы храните эти контакты, чтобы сформировать какое-то приложение в стиле адресной книги.Исходя из этого предположения, я бы сказал, что ваш второй пример - именно то, что вы хотите делать.С моей точки зрения, каждый «контакт» - это отдельный документ.Все атрибуты этого контакта принадлежат документу.

{
    name: "John Smith",
    number: "+44 1234 567890"
}

Чтобы продвинуться немного дальше, в будущем вы можете решить, что хотите сохранить несколько номеров на человека, возможно, разных типов.Я бы включил все это в документ для конкретного контакта:

{
    name: "John Smith",
    numbers: [
        { number: "+44 1234 567890", type: "home" },
        { number: "+44 7798 987654", type: "mobile" },
        { number: "+44 1234 987123", type: "work" }
    ]
}

Я считаю, что хороший способ подойти к разработке модели для использования в базе данных документов - это рассмотреть, какие элементы вы хотите использовать независимо.Для тех, кто имеет смысл самостоятельно, они, вероятно, должны войти в свой собственный документ.Для тех, которые имеют смысл только при просмотре в контексте их объекта-контейнера, вставьте их в него.

Надеюсь, это поможет вам.

...