Текущая структура базы данных пожарной базы:
"projects": {
$userId: {
$auto_generated_project_id_1: {
'name': 'first_project',
...
},
$auto_generated_project_id_2: {
'name': 'first_project',
...
},
}
}
Поскольку количество проектов увеличивается, я хочу добавить систему папок, такую как finder или explorer.
Чтобы денормализовать для лучшей производительности, следуем тому, что я пробовал.
"folders": {
$userId: {
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'parentId to go back',
...
},
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'parentId to go back',
...
},
}
}
"projects": {
$userId: {
$auto_generated_project_id_1: {
'name': 'first_project',
'folderId': 'id_of_folder'
...
},
$auto_generated_project_id_2: {
'name': 'first_project',
'folderId': 'id_of_folder'
...
},
}
}
Дело в том, что, поскольку проекты даже растут, бремя читать целые проекты, чтобы найти, какие проекты находятся в каких папках. Так что теперь мне может понадобиться добавить другие понятия.
В настоящее время я сделал следующее:
"folders": {
$userId: {
'depth_0': {
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': '',
'projectIds': [] // not all sub projectIds, only first level children
...
},
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': '',
'projectIds': [] // // not all sub projectIds, only first level children
...
},
},
'depth_1': {
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'id_amongst_depth_0',
'projectIds': [] // not all sub projectIds, only first level children
...
},
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'id_amongst_depth_0',
'projectIds': [] // not all sub projectIds, only first level children
...
},
},
'depth_2': {
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'id_amongst_depth_1',
'projectIds': [] // not all sub projectIds, only first level children
...
},
$auto_generated_folder_id_1: {
'name': 'first_project',
'parentId': 'id_amongst_depth_0',
'projectIds': [] // not all sub projectIds, only first level children
...
},
},
...
}
}
"projects": {
$userId: {
$auto_generated_project_id_1: {
'name': 'first_project',
'folderId': 'id_of_folder'
...
},
$auto_generated_project_id_2: {
'name': 'first_project',
'folderId': 'id_of_folder'
...
},
}
}
В идеале я хочу показать количество вложенных папок / подпроектов в родительских папках.
Например,
папка
Пожалуйста, дайте мне несколько подсказок, как организовать лучшую структуру.