Я только начинаю с 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 *
Каждая «категория» - это новый экран, который будет загружать много изображений, поэтому я постарался выделить этот раздел, вместо того, чтобы иметь «категорию», которая будет считываться каждый раз при загрузке любой страницы.
Спасибо