Это хороший способ структурировать мою базу данных Firebase? - PullRequest
0 голосов
/ 18 апреля 2020

Я только начинаю с Firebase (переходит от MySQL), и после прочтения многих документов / просмотра учебных пособий я попытался структурировать базу данных для своего "приложения в стиле Ebay / Gumtree". Есть ли какие-либо серьезные проблемы с тем, с чем я столкнулся?

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

Является ли это хорошим способом структурировать базу данных? Я взял несколько советов здесь:

Лучший способ структурировать мою базу данных Firebase

{
  "users": {
      "user1": {
          "email": "example@gmail.com",
          "password": "********",
          "first name": "Example",
          "last name": "User",
          "age": "45",
          "gender": "Male",
          "address": "XX1 9YY"
        }
      },
  "upload image": {
      "user1": { 
          "image1": { #path to image
              "condition": "Like New",
              "price": "£100",
              "upload date": "10/10/2019",
              "promoted": True,
              "promoted expiry": "11/11/2019"
            },
          "image2": {
              "condition": "New",
              "price": "£250",
              "upload date": "12/12/2019",
              "promoted": False
            },
      "user2": {
          "image1": {
              "condition": "Used",
              "price": "£50",
              "upload date": "05/05/2019",
              "promoted": True,
              "promoted expiry": "06/06/2019"
            }
          },
  "promoted images": { #max 50 images stored here
      "user1": { 
          "image1": #This image is a duplicated of the image above
              "condition": "Like New",
              "price": "£100",
              "upload date": "10/10/2019",
              "promoted": True,
              "promoted expiry": "11/11/2019"
            },
      "user2": {
          "image1": { #This image is also a duplicate
              "condition": "Used",
              "price": "£50",
              "upload date": "05/05/2019",
              "promoted": True,
              "promoted expiry": "06/06/2019"
            }
          },
  "categories": {
      "category1": {
          "image1": { #This is the third location image1 is stored
              "condition": "Used",
              "price": "£50",
              "upload date": "05/05/2019",
              "promoted": True,
              "promoted expiry": "06/06/2019"
            },
          "image2": {
              "condition": "New",
              "price": "£250",
              "upload date": "12/12/2019",
              "promoted": False
            }
          },
   "reviews": {
       "user1": {
           "review1": {
               "rating": 4,
               "message": "delivered on time, thanks"
            },
           "review2": {
               "rating": 5,
               "message": "great product, delivered quickly"
            },
           }
       "user2": {
           "review1": {
               "rating": 1,
               "message": "terrible service, took ages to arrive and was faulty!"
            },
          },
       },
    },
}

Некоторые вопросы / мысли о том, почему я сделал что-то на данный момент:

Это хорошая идея иметь несколько копий одного и того же изображения, так как это позволит сэкономить при просмотре тысяч изображений. Например, если у меня не было «продвигаемых изображений», но я хотел бы найти все продвигаемые изображения, мне пришлось бы искать в разделе «загрузить изображение» (в котором будет намного больше изображений, чем 50 в «продвигаемых изображениях» *). 1014 *

Каждая «категория» - это новый экран, который будет загружать много изображений, поэтому я постарался выделить этот раздел, вместо того, чтобы иметь «категорию», которая будет считываться каждый раз при загрузке любой страницы.

Спасибо

...