Database Design – Interpreting Crow’s Foot Notation in an ERD

database-designerd

I am taking an introduction to database objects course at college.

I am in disagreement with the professor over how to interpret the Crow's Foot Notation for Cardinality in an ERD diagram.

Example: Look at this image (one I pulled from lecture slides):

enter image description here

According to my interpretation, this indicates that:

  • A Supplier may have 0 or many Shipments
  • A Shipment may belong to only one Supplier
  • A Customer may have 0 or many Orders
  • An Order may belong to only one Customer

However, according to my instructor's interpretation, this shows that:

  • A Shipment may have 0 or many Suppliers
  • A Supplier can have only one Shipment
  • A Customer may have only one Order
  • An Order may have many customers

I have been unable to find any evidence to contract my own understanding of this… but, again, I'm just a student. Maybe I'm missing something? If I am, I'd like to figure out where I went wrong.

Best Answer

Your professor is wrong. The cardinality in almost all versions of crows foot notation is read such that the cardinality next to the entity is the cardinality of that entity. You can also see by the fact that common sense tells you that whoever drew this ERD did not intend what your professor is reading.

I will say that I have (very rarely) seen people read cardinality the way your professor is doing it. I think of it as "looking down the relationship" at the other side. The fact is that this approach doesn't make sense for readability in my opinion. It's also just not the way the vast majority of people do it.

You're better off to stick with the conventional wisdom on this. If you can't convince your professor, then go with the flow until the end of the semester, but then forget this inappropriate convention and do it the way almost everyone else does from then on.

As an aside/pro-tip: when you see many/optional cardinality, I'd suggest you get in the habit of reading it "zero or more", not "zero or many". I think "zero or many" kind of implies "not 1", which isn't the nature of such cardinality.