@startuml '!include base.plantuml !include status.plantuml !include contact.plantuml skinparam linetype polyline class Country { {field} + code\t\tString(2)\t\t<> {field} + name\t\tString(80) {field} + notes\t\tText | None + __repr__()\t\tstr } abstract CountryForeignKey { country_id\tCountry.id {field} + country\t\tCountry {field} } class LocationCode { {field} + code\t\tString(8)\t\t<> {field} + description\tString(80) {field} + notes\t\tText | None + __repr__()\t\tstr } abstract LocationCodeForeignKey { location_code_id\tLocationCode.id + location_code\t\tLocationCode } class Location { {field} + code\t\tString(30) {field} + description\tString(80) {field} + notes\t\tText | None {field} <>\n\tlocation_code_id\n\tcode + __repr__()\t\tstr } abstract LocationForeignKey { location_id\tLocation.id + location\t\tLocation } Versioned <|-[#blue]- Country StatusForeignKey <|-[#blue]- Country Country *-- CountryForeignKey Versioned <|-[#blue]- LocationCode StatusForeignKey <|-[#blue]- LocationCode LocationCode *-- LocationCodeForeignKey CountryForeignKey <|-[#blue]- LocationCode ContactForeignKey o.. LocationCode Versioned <|-[#blue]- Location StatusForeignKey <|-[#blue]- Location Location *-- LocationForeignKey LocationCodeForeignKey <|-[#blue]- Location ContactForeignKey o.. Location @enduml