{"id":2041,"date":"2015-12-16T19:36:29","date_gmt":"2015-12-16T19:36:28","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2041"},"modified":"2025-06-13T19:30:38","modified_gmt":"2025-06-14T02:30:38","slug":"data-modelling-in-document-databases-for-the-rdbms-minded","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/","title":{"rendered":"Data Modelling in Document Databases for the Relational DBMS-minded"},"content":{"rendered":"<p>Data modeling for relational databases uses entity relationship diagrams, normalization and more&#8230;. Techniques which have evolved to perfection over the years. However data naturally does not exist in this full normalized form in real world applications. Document databases like Couchbase Server provide flexible primitives like JSON documents for storing entities but this does not mean data modeling is a lost art!<\/p>\n<p>If you are a data modeller with experience in relational database data modelling, this article will get you up to speed on how to model data with document databases.<\/p>\n<p>You can read on here at <a href=\"https:\/\/db-engines.com\/en\/blog_post\/51\">DB-Engines.com<\/a>,<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Data modeling for relational databases uses entity relationship diagrams, normalization and more&#8230;. Techniques which have evolved to perfection over the years. However data naturally does not exist in this full normalized form in real world applications. Document databases like Couchbase [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1816,1819,1812],"tags":[],"ppma_author":[8978],"class_list":["post-2041","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","category-data-modeling","category-n1ql-query"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data Modelling in Document Databases - The Couchbase Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Modelling in Document Databases for the Relational DBMS-minded\" \/>\n<meta property=\"og:description\" content=\"Data modeling for relational databases uses entity relationship diagrams, normalization and more&#8230;. Techniques which have evolved to perfection over the years. However data naturally does not exist in this full normalized form in real world applications. Document databases like Couchbase [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-12-16T19:36:28+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T02:30:38+00:00\" \/>\n<meta name=\"author\" content=\"Cihan Biyikoglu, Director of Product Management, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Cihan Biyikoglu, Director of Product Management, Couchbase\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\"},\"author\":{\"name\":\"Cihan Biyikoglu, Director of Product Management, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3d8c60500ca29254fcdb2f76f29fb088\"},\"headline\":\"Data Modelling in Document Databases for the Relational DBMS-minded\",\"datePublished\":\"2015-12-16T19:36:28+00:00\",\"dateModified\":\"2025-06-14T02:30:38+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\"},\"wordCount\":107,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\",\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\",\"name\":\"Data Modelling in Document Databases - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-12-16T19:36:28+00:00\",\"dateModified\":\"2025-06-14T02:30:38+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Modelling in Document Databases for the Relational DBMS-minded\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3d8c60500ca29254fcdb2f76f29fb088\",\"name\":\"Cihan Biyikoglu, Director of Product Management, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a878e65cb37ac2419416d3289816abd5\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3e1ac58dd480dd8a6e93d700a58d329bb81df928061de04395055a45274b8702?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3e1ac58dd480dd8a6e93d700a58d329bb81df928061de04395055a45274b8702?s=96&d=mm&r=g\",\"caption\":\"Cihan Biyikoglu, Director of Product Management, Couchbase\"},\"description\":\"Cihan Biyikoglu is a director of product management at Couchbase, responsible for the Couchbase Server product. Cihan is a big data enthusiast who brings over twenty years of experience to Redis Labs\u2019 product team. Cihan started his career as a C\/C++ developer.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/author\/cihan-biyikoglu\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Data Modelling in Document Databases - The Couchbase Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/","og_locale":"en_US","og_type":"article","og_title":"Data Modelling in Document Databases for the Relational DBMS-minded","og_description":"Data modeling for relational databases uses entity relationship diagrams, normalization and more&#8230;. Techniques which have evolved to perfection over the years. However data naturally does not exist in this full normalized form in real world applications. Document databases like Couchbase [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-12-16T19:36:28+00:00","article_modified_time":"2025-06-14T02:30:38+00:00","author":"Cihan Biyikoglu, Director of Product Management, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Cihan Biyikoglu, Director of Product Management, Couchbase"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/"},"author":{"name":"Cihan Biyikoglu, Director of Product Management, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3d8c60500ca29254fcdb2f76f29fb088"},"headline":"Data Modelling in Document Databases for the Relational DBMS-minded","datePublished":"2015-12-16T19:36:28+00:00","dateModified":"2025-06-14T02:30:38+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/"},"wordCount":107,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Couchbase Server","Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/","url":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/","name":"Data Modelling in Document Databases - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-12-16T19:36:28+00:00","dateModified":"2025-06-14T02:30:38+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-in-document-databases-for-the-rdbms-minded\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Modelling in Document Databases for the Relational DBMS-minded"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"The Couchbase Blog","description":"Couchbase, the NoSQL Database","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"The Couchbase Blog","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/3d8c60500ca29254fcdb2f76f29fb088","name":"Cihan Biyikoglu, Director of Product Management, Couchbase","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/a878e65cb37ac2419416d3289816abd5","url":"https:\/\/secure.gravatar.com\/avatar\/3e1ac58dd480dd8a6e93d700a58d329bb81df928061de04395055a45274b8702?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3e1ac58dd480dd8a6e93d700a58d329bb81df928061de04395055a45274b8702?s=96&d=mm&r=g","caption":"Cihan Biyikoglu, Director of Product Management, Couchbase"},"description":"Cihan Biyikoglu is a director of product management at Couchbase, responsible for the Couchbase Server product. Cihan is a big data enthusiast who brings over twenty years of experience to Redis Labs\u2019 product team. Cihan started his career as a C\/C++ developer.","url":"https:\/\/www.couchbase.com\/blog\/author\/cihan-biyikoglu\/"}]}},"authors":[{"term_id":8978,"user_id":7,"is_guest":0,"slug":"cihan-biyikoglu","display_name":"Cihan Biyikoglu, Director of Product Management, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3e1ac58dd480dd8a6e93d700a58d329bb81df928061de04395055a45274b8702?s=96&d=mm&r=g","author_category":"","last_name":"Biyikoglu","first_name":"Cihan","job_title":"","user_url":"","description":"Cihan Biyikoglu is a director of product management at Couchbase, responsible for the Couchbase Server product. Cihan is a big data enthusiast who brings over twenty years of experience to Redis Labs\u2019 product team. Cihan started his career as a C\/C++ developer."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2041","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/comments?post=2041"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/posts\/2041\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/media?parent=2041"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/categories?post=2041"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/tags?post=2041"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/wp-json\/wp\/v2\/ppma_author?post=2041"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}