<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet href="https://elezea.com/wp-content/themes/elz_2023/styles/pretty-feed-v3.xsl" type="text/xsl"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/" >
  <channel>
    <title>Elezea by Rian van der Merwe - RSS Feed</title>
    <atom:link href="https://elezea.com/2016/01/entity-relationship-modeling-as-a-starting-point-for-product-design/feed/" rel="self" type="application/rss+xml" />
    <link>https://elezea.com/2016/01/entity-relationship-modeling-as-a-starting-point-for-product-design/</link>
    <description>A personal blog about product, technology, and interesting things that are worth sharing.</description>
    <lastBuildDate>Fri, 10 Apr 2026 20:51:22 +0000</lastBuildDate>
    <language></language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <generator>https://wordpress.org/?v=6.9.4</generator>
          <item>
        <title>Entity-relationship modeling as a starting point for product design</title>
        <link>https://elezea.com/2016/01/entity-relationship-modeling-as-a-starting-point-for-product-design/</link>
        <pubDate>Mon, 11 Jan 2016 23:09:21 +0000</pubDate>
        <dc:creator>Rian van der Merwe</dc:creator>
        <guid isPermaLink="false">https://elezea.com/?p=5692</guid>
        <description>
          <![CDATA[It&#8217;s been roughly 15 years since I made an entity–relationship model, so it is with great surprise that I sat in a meeting the other day and thought to myself &#8220;This project needs an ER model before we can do anything else.&#8221; I almost asked out loud, &#8220;WHO SAID THAT!?&#8221; But once I got over [&#8230;]]]>
        </description>
        <content:encoded>
          <![CDATA[<p>It&#8217;s been roughly 15 years since I made an <a href="https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model">entity–relationship model</a>, so it is with great surprise that I sat in a meeting the other day and thought to myself &#8220;<em>This</em> project needs an ER model before we can do anything else.&#8221; I almost asked out loud, &#8220;WHO SAID THAT!?&#8221; But once I got over the initial shock I realized that my subconscious isn&#8217;t completely full of crap (this time).</p>
<p>But let&#8217;s back up. I&#8217;m working on a project to combine a variety of different back-end services into a single product. As we were talking about it and the discussion shifted to design, I realized that before we could create user journeys and get started on the interaction design we first needed to understand the relationships between the different entities in those services. I worried that without that model, we&#8217;d get ourselves tangled up really quickly.</p>
<p>So I brushed up on my theory<sup id="fnref:5692.1"><a href="#fn:5692.1" rel="footnote">1</a></sup> and got to it. First, the obligatory <a href="https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model">definition</a>:</p>
<blockquote>
<p>[An] entity–relationship model (ER model) is  a data model for describing the data or information aspects of a business domain or its process requirements, in an abstract way that lends itself to ultimately being implemented in a database such as a relational database. The main components of ER models are entities (things) and the relationships that can exist among them.</p>
</blockquote>
<p>This is a tool that&#8217;s primarily used as the first step in relational database design. But I found it really useful for us to define the constraints within which we could create user flows. Let me explain with an example. Here&#8217;s a simplified version of the ER model we came up with for this project (using <a href="https://en.wikipedia.org/wiki/Entity%E2%80%93relationship_model#Crow.27s_foot_notation">Crow&#8217;s foot notation</a>):</p>
<p><img decoding="async" style="display: block; margin-left: auto; margin-right: auto;" title="Entity-relationship model" src="https://cdn.elezea.com/images/er-model.jpg" border="0" alt="Entity-relationship model" /></p>
<p>Each color represents a different back-end service. Here&#8217;s a subset of what the diagram tells us:</p>
<ul>
<li>A team can have multiple tasks, but each task can only be assigned to one team.</li>
<li>A task can have multiple files associated with it, but each file can belong to only one task (or team).</li>
<li>A person can be part of multiple teams, and a team is made of multiple people.</li>
<li>There is a 1:1 relationship between teams, tasks, files, and the conversations about those entities.</li>
<li>Outside of those relationships, a person can be part of multiple conversations, and a conversation can consist of multiple people.</li>
</ul>
<p>If all this sounds a little bit boring, I hear you, but here&#8217;s the power of this diagram: <strong>it ensures that whatever UI we come up with serves the underlying entity relationships, and not the other way around</strong>. This is huge. For example, if we started with the UI we might say that users can attach files to a task or project within the product&#8217;s main interface. But since a 1:1 relationship exists between Conversation and File, it means we can also attach a file to a task by dropping it into the Conversation view of that task. The relationships help us to come up with the most useful and robust UI.</p>
<p>What essentially happens if you start UI design with an ER model is that you create the boundaries of what&#8217;s &#8220;allowed&#8221; in the UI. It pushes you to think up useful ideas without the danger of coming up with something that wouldn&#8217;t work in the final implementation.</p>
<p>I don&#8217;t think ER models should be the starting point of <em>every</em> project. But in certain specific cases where many disparate products or services need to come together it&#8217;s proved to be really useful.</p>
<p>And now, on to journey mapping&#8230;</p>
<div class="footnotes">
<hr />
<ol>
<li id="fn:5692.1">
<p>Ok fine, I read the Wikipedia article.&#160;<a href="#fnref:5692.1" rev="footnote">&#8617;</a></p>
</li>
</ol>
</div>
          <br>
          <br>
          <hr>
          Thanks for still believing in RSS! Get in touch <a href="https://elezea.com/contact">here</a> if you'd like.]]>
        </content:encoded>
                      </item>
      </channel>
</rss>