DEV Community

Cover image for Entity Relationship Diagrams explained by Sonic the Hedgehog

Entity Relationship Diagrams explained by Sonic the Hedgehog

Helen Anderson on May 20, 2019

The Entity-relationship diagram (ERD) shows the relationships between tables and the common keys that connect them. Initially, they may appear to b...
Collapse
 
tangweejieleslie profile image
Leslie Tang • Edited

Hi Helen, that's a nice post! I've clicked through this post because of Sonic but left with some newfound knowledge. 😁


I just want to check if I got what I'm reading right...

In short, some uses of Entity Relationship Diagrams(ERD) are:

  1. visualization of relationships between data
  2. serve as plans for implementing the database
  3. communicating these plans
  4. determine requirements
  5. debug system

And those uses translate naturally into "Why we use ERD".

While I can clearly see how ERD is used to serve the first 3 purposes, I have no more than a vague idea on using them for 4 and 5. If possible, do you mind elaborating on using ERD to determine requirements (and what sort of requirements) as well as using them to debug systems.


Thank you so much for this wonderful post! I will probably be reading through the rest of the BI series as well 😄

P.S. I have another question that's not really related to the content of the article. The part where you add the 5 circles to show the article being part of the "Business Intelligence Series" is so cool! I just wanted to know what is it called so I can also add it to my own posts.

Collapse
 
helenanders26 profile image
Helen Anderson

Hi Leslie,

Thanks for the nice comments, I really enjoyed writing it.


Regarding requirements gathering, what I was trying to get across was that its part of the process we go through with stakeholders.

When building a new model there's lots of back and forth and clarification of what's required now, later and what can be delivered after go live. Ideally all the requirements are locked down early but in reality, this doesn't always happen.

At the first step, with the Conceptual Data Model, we can go back to the stakeholders to double check the requirements and do our best to avoid scope creep. Hopefully ;)


As far as debugging goes the ERD gives us a point of reference for how things 'should' work. If multiple team members are releasing changes to the model we can visually see how it fits together and where the dependencies are.

It's also helpful when doing any kind of database migration.


Excellent questions!

I really like stringing my posts together in series and use the instructions here to do so:

I'm also a fan of the Table of Contents at the top of my posts:

Collapse
 
tangweejieleslie profile image
Leslie Tang

Thanks for replying Helen, your explanations are really clear!😄
Also, thank you for pointing me to these articles.

Thread Thread
 
helenanders26 profile image
Helen Anderson

You're welcome, looking forward to reading more of your posts :D

Collapse
 
qcgm1978 profile image
Youth

I love what you describe and your words. The following is a code demo by js:

// Conceptual Data Model
const EntityRelationshipDiagrams = {
  Zones: class {
    // Logical Data Model
    constructor() {
      this.ZoneId = EntityRelationshipDiagrams.PhysicalDataModel.getId(105);
      this.voice = "truths";
    }
    // Physical Data Model
    speak() {
      return `${this.ZoneId} ${this.voice} as work`;
    }
  },
  Boss: class {
    // Logical Data Model
    constructor() {
      this.BossId = EntityRelationshipDiagrams.PhysicalDataModel.getId(0);
      this.voice = "barks";
    }
    // Physical Data Model
    speak() {
      return `${this.BossId} ${this.voice} in the meeting`;
    }
  },
  // external Physical Data Model
  PhysicalDataModel: {
    getId(num) {
      return num < 100
        ? this.getRandomInt(0, 100)
        : this.getRandomInt(num, 1000);
    },
    getRandomInt(min, max) {
      min = Math.ceil(min);
      max = Math.floor(max);
      return Math.floor(Math.random() * (max - min + 1)) + min;
    }
  }
};
Collapse
 
tphbrok profile image
Thomas Brok • Edited

Nice article!

Just noticed that the entity 'Zones' has an attribute 'ActID', which shouldn't be there if I am correct. A one-to-many relationship should only have a foreign key on the 'many'-side, as having one on the other side does not make sense. Having 'BossID' there would make more sense ;-).

Collapse
 
helenanders26 profile image
Helen Anderson

Nice catch, now edited :)

Collapse
 
didin1453fatih profile image
Didin 👨‍💻

Nice post!!!
I think you can try dbdesigner.id to create Entity Relationship Diagram 😎😎😎.
This can help you to collaborate with your team on web and cut off your step in generate SQL Create database.
I write this article to explain more about this devtool dev.to/didin1453fatih/database-des...

Alt Text

Collapse
 
alexantra profile image
Alex Antra

Gotta go fast! Great explanation!

Collapse
 
helenanders26 profile image
Helen Anderson

Love it! I should have worked that into the post somewhere

Collapse
 
pedro_er profile image
Pedro

Hi. Wich is the diference between "one" and "one and only one". When i started in this world, 2002, one meaning "only one". No put two marks min and max because the value was the same, to min to max. I can see lucidchart and a lot of people, now use 2 marks, but then, i dont understand if 2 diferent values or the same value but diferent notation. Thanks for your help.

Collapse
 
tedybak profile image
Info Comment hidden by post author - thread only accessible via permalink
Ted

very basic stuff

Some comments have been hidden by the post's author - find out more