{"id":4155,"date":"2023-07-14T16:24:22","date_gmt":"2023-07-14T19:24:22","guid":{"rendered":"https:\/\/nocodestartup.io\/?p=4155"},"modified":"2025-05-04T15:14:36","modified_gmt":"2025-05-04T18:14:36","slug":"nosql-firebase-data-modeling","status":"publish","type":"post","link":"https:\/\/nocodestartup.io\/en\/nosql-firebase-data-modeling\/","title":{"rendered":"NoSQL and Firebase Data Modeling"},"content":{"rendered":"<h2 class=\"wp-block-heading\" id=\"h-introducao-modelagem-de-dados-nosql\">Introduction: NoSQL Data Modeling<\/h2>\n\n\n\n<p>Data Modeling of a Non-Relational Database (NoSQL) is a big challenge for any developer. Because working with data from NoSQL can be something complex and out of what we are used to. But there&#039;s no more running away.<\/p>\n\n\n\n<p>Non-relational databases like MongoDB or Firebase are growing more and more, as they bring a lot of performance and scalability to your project.<\/p>\n\n\n\n<p>In this Data Modeling and NoSQL article I will explain in detail about the types of modeling and the strategies used to organize our data. In addition, we will model a project from scratch in NoSQL within Firebase.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe title=\"NoSQL Data Modeling | Firebase and FlutterFlow\" width=\"800\" height=\"450\" src=\"https:\/\/www.youtube.com\/embed\/MaadSU46Tec?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-o-que-voce-aprendera\">What will you learn?<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Fundamentals of NoSQL Data Modeling in Firebase<\/li>\n\n\n\n<li>Strategies for modeling your document and collection databases<\/li>\n\n\n\n<li>Conceptual, Logical and Physical Model in practice<\/li>\n\n\n\n<li>How to Create an App from your NoSQL Database Model<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">NoSQL and Firebase fundamentals<\/h2>\n\n\n\n<p>In <a href=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/06\/Modelagem-Dados-e-SQL-_-O-Guia-Oficial-para-iniciantes.pdf\" target=\"_blank\" rel=\"noreferrer noopener nofollow\">NoSQL<\/a> Let&#039;s work with documents and collections. For better understanding, collections can be understood as traditional tables and documents are like the rows (records) of the tables.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"460\" src=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2-1024x460.png\" alt=\"NoSQL and Firebase fundamentals\" class=\"wp-image-4159\" srcset=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2-1024x460.png 1024w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2-768x345.png 768w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2-1536x690.png 1536w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2-18x8.png 18w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase2.png 1972w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>The structure behind how the data is organized is in json format. An interesting format for communication between systems.<\/p>\n\n\n\n<p>The main NoSQL databases on the market are MongoDB, CouchDB and Firebase.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-a-estrutura-nosql-tem-como-caracteristicas\">The NoSQL framework has the following characteristics:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Has a dynamic schema<\/li>\n\n\n\n<li>Allows relationships but is not the focus<\/li>\n\n\n\n<li>Bad for complex queries<\/li>\n\n\n\n<li>Great for performance.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Strategies for Modeling<\/h2>\n\n\n\n<p>In NoSQL modeling in Firebase or MongoDB, we will have some ways to design our NoSQL data structure, the possibilities are:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>UML Diagram (ER)<\/li>\n\n\n\n<li>Mental map<\/li>\n\n\n\n<li>Document and Collections<\/li>\n<\/ul>\n\n\n\n<p>In this case, we will follow the document and collections format. The methodology adopted for data modeling is: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"499\" src=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1-1024x499.png\" alt=\"Strategies for NoSQL Modeling in Firebase or MongoDB\" class=\"wp-image-4158\" srcset=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1-1024x499.png 1024w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1-768x375.png 768w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1-1536x749.png 1536w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1-18x9.png 18w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-firebase1.png 1792w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-para-modelagem-devemos-seguir-os-principios\">For modeling, we must follow the principles:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Strategic and fast queries<\/li>\n\n\n\n<li>Large collections but small documents<\/li>\n\n\n\n<li>Data duplication is allowed<\/li>\n\n\n\n<li>Add value instead of using joins<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-as-estrategias-para-modelagem-nosql-no-firebase-sao\">Strategies for NoSQL templating in Firebase are:<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Strategy 1 : Aggregate data in the document itself<\/li>\n\n\n\n<li>Strategy 2: Use sub collections<\/li>\n\n\n\n<li>Strategy 3: Create new collections with relationships<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Relationships in NoSQL and Firebase<\/h2>\n\n\n\n<p>For 1 to 1 relations, we can aggregate the data or use connection through relations.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img decoding=\"async\" width=\"1024\" height=\"485\" src=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-1024x485.png\" alt=\"Relationships in NoSQL and Firebase\" class=\"wp-image-4160\" srcset=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-1024x485.png 1024w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-768x364.png 768w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-1536x727.png 1536w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql-18x9.png 18w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql.png 1960w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>For 1-to-many and many-to-many relationships, you can choose accordingly: <\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"490\" src=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2-1024x490.png\" alt=\"firebase is sql or nosql\u200b\" class=\"wp-image-4161\" srcset=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2-1024x490.png 1024w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2-768x367.png 768w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2-1536x735.png 1536w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2-18x9.png 18w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql2.png 1860w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">Modeling a NoSQL project in Firebase from scratch <\/h2>\n\n\n\n<p>For a complete NoSQL project, we use an example of a course app.<\/p>\n\n\n\n<p>We had already done <a href=\"https:\/\/nocodestartup.io\/en\/sql-data-modeling-2\/\" target=\"_blank\" rel=\"noreferrer noopener\">SQL data modeling<\/a> in the relational model and now we did it in the NoSQL model with documents and collections, see how it turned out:<\/p>\n\n\n\n<figure class=\"wp-block-image size-large is-style-default\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"518\" src=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3-1024x518.png\" alt=\"Modeling a NoSQL project in Firebase from scratch\" class=\"wp-image-4162\" srcset=\"https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3-1024x518.png 1024w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3-768x389.png 768w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3-1536x778.png 1536w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3-18x9.png 18w, https:\/\/nocodestartup.io\/wp-content\/uploads\/2023\/07\/modelagem-dados-nosql3.png 1754w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p>See the video for more details.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\" id=\"h-o-que-voce-aprendeu-por-aqui\">What did you learn around here? <\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Ways to design your nosql database<\/li>\n\n\n\n<li>Modeling Methodology<\/li>\n\n\n\n<li>NoSQL Data Modeling Principles<\/li>\n\n\n\n<li>NoSQL Strategies<\/li>\n\n\n\n<li>Document relationships and NoSQL collections<\/li>\n\n\n\n<li>Firebase in practice.<\/li>\n\n\n\n<li>App from scratch with <a href=\"https:\/\/nocodestartup.io\/en\/flutterflow\/\" target=\"_blank\" rel=\"noreferrer noopener\">FlutterFlow<\/a><\/li>\n<\/ul>\n\n\n\n<p><\/p>\n\n\n\n<p>Follow us for more content.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p><\/p>","protected":false},"excerpt":{"rendered":"<p>Introduction: NoSQL Data Modeling Data modeling in a non-relational database (NoSQL) is a big challenge for any developer. Working with data from NoSQL can be complex and out of the ordinary. But there is no way around it anymore. Non-relational databases like MongoDB or Firebase are growing [\u2026]<\/p>","protected":false},"author":3,"featured_media":4166,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[1],"tags":[],"post_folder":[],"class_list":["post-4155","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-no-code"],"acf":[],"_links":{"self":[{"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/posts\/4155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/comments?post=4155"}],"version-history":[{"count":0,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/posts\/4155\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/media\/4166"}],"wp:attachment":[{"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/media?parent=4155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/categories?post=4155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/tags?post=4155"},{"taxonomy":"post_folder","embeddable":true,"href":"https:\/\/nocodestartup.io\/en\/wp-json\/wp\/v2\/post_folder?post=4155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}