I tend to forget what the arrows mean in an entity-relationship diagram.
Example
@startuml | |
' hide the spot | |
hide circle | |
' avoid problems with angled crows feet | |
skinparam linetype ortho | |
entity "Guild" as Guild { | |
*guildnr : number <<generated>> | |
-- | |
*guildname : text | |
description : text | |
} | |
entity "GuildRank" as GuildRank { | |
*ranknr : number <<generated>> | |
-- | |
*guildnr : number <<FK>> | |
title : text | |
} | |
entity "GuildMember" as GuildMember { | |
*membernr : number <<generated>> | |
-- | |
guildnr : number <<FK>> | |
ranknr : number <<FK>> | |
personnr : number <<FK>> | |
premissions : text | |
} | |
entity "Person" as Person { | |
*personnr : number <<generated>> | |
-- | |
name : text | |
} | |
Guild ||..o{ GuildRank | |
Guild ||..o{ GuildMember | |
GuildRank |o..o{ GuildMember | |
GuildMember }o..|| Person | |
@enduml |
In the diagram above, there's strong limitations on the values possible in the GuildMember table. Unfortunately, these cannot be expressed in Foreign Key Relationships.
For example:
- a Person can hold only one rank in a Guild.
- a Person can only be a GuildMember in a Guild once.
The way to fascilitate this, is to put a unique index on GuildMember regarding the columns GUILDNR and PERSONNR.
References
- PlantUML - Entity Relationship Diagram
- https://plantuml.com/ie-diagram
- LucidChart - Wat is een Entity Relationship Diagram?
- https://www.lucidchart.com/pages/nl/wat-is-een-entity-relationship-diagram