digraph g { graph [ rankdir = "RL", concentrate = true, ratio = auto ]; node [ fontsize = "18", shape = record, fontsize = 18 ]; edge [ ]; "Records" [shape = record, fontsize = 18, label = "(Any RT::Record)" ]; "Records" -> "Principals" [label = "Creator → id"]; "ACL" [shape = record, fontsize = 18, label = " \N " ]; "ACL" -> "Principals" [label="PrincipalId → id"]; "ACL" -> "Records" [label="ObjectId → id"]; "Attachments" [shape = record, fontsize = 18, label = " \N " ]; "Attachments" -> "Transactions" [label="TransactionId → id"]; "Attachments" -> "Attachments" [label="Parent → id"]; "CachedGroupMembers" [shape = record, fontsize = 18, label = " \N " ]; "CachedGroupMembers" -> "Groups" [label="GroupId → id", weight=2]; "CachedGroupMembers" -> "Principals" [label="MemberId → id"]; "CachedGroupMembers" -> "CachedGroupMembers" [label="Via → id"]; "CachedGroupMembers" -> "Groups" [label="ImmediateParentId → id"]; "CustomFields" [shape = record, fontsize = 18, label = " \N " ]; "CustomFieldValues" [shape = record, fontsize = 18, label = " \N " ]; "CustomFieldValues" -> "CustomFields" [label="CustomField → id"]; "GroupMembers" [shape = record, fontsize = 18, label = " \N " ]; "GroupMembers" -> "Groups" [label="GroupId → id", weight=2]; "GroupMembers" -> "Principals" [label="MemberId → id", weight = 2]; "Groups" [shape = record, fontsize = 18, label = " \N " ]; "Groups" -> "Principals" [label="id → id"]; "Links" [shape = record, fontsize = 18, label = " \N " ]; "Links" -> "Tickets" [label="LocalBase ⇢ id (usually)", style="dotted"]; "Links" -> "Tickets" [label="LocalTarget ⇢ id (usually)", style="dotted"]; "Principals" [shape = record, fontsize = 18, label = " \N " ]; "Attributes" [shape = record, fontsize = 18, label = " \N " ]; "Attributes" -> "Records" [label="ObjectId → id"]; "Queues" [shape = record, fontsize = 18, label = " \N " ]; "ScripActions" [shape = record, fontsize = 18, label = " \N " ]; "ScripConditions" [shape = record, fontsize = 18, label = " \N " ]; "Scrips" [shape = record, fontsize = 18, label = " \N " ]; "Scrips" -> "ScripConditions" [label="ScripCondition → id"]; "Scrips" -> "ScripActions" [label="ScripAction → id"]; "Scrips" -> "Templates" [label="Template → Name"]; "Scrips" -> "ObjectScrips" [label="id → Scrip"] "ObjectScrips" [shape = record, fontsize = 18, label = " \N " ]; "ObjectScrips" -> "Queues" [label="ObjectId → id"]; "Templates" [shape = record, fontsize = 18, label = " \N " ]; "Templates" -> "Queues" [label ="Queue → id" ]; "ObjectCustomFields" [shape = record, fontsize = 18, label = " \N " ]; "ObjectCustomFields" -> "CustomFields" [label="CustomField → id"]; "ObjectCustomFields" -> "Records" [label="ObjectId → id"]; "ObjectCustomFieldValues" [shape = record, fontsize = 18, label = " \N " ]; "ObjectCustomFieldValues" -> "CustomFields" [label="CustomField → id"]; "ObjectCustomFieldValues" -> "Records" [label="ObjectId → id"]; "Tickets" [shape = record, fontsize = 18, label = " \N " ]; "Tickets" -> "Tickets" [label="EffectiveId → id"]; "Tickets" -> "Principals" [label="Owner → id"]; "Queues" -> "Tickets" [style="invis"]; "Tickets" -> "Queues" [label="Queue → id"]; "Transactions" [shape = record, fontsize = 18, label = " \N " ]; "Transactions" -> "Records" [label="ObjectId → id"]; "Users" [shape = record, fontsize = 18, label = " \N " ]; "Users" -> "Principals" [label="id → id"]; // "Classes" [shape = record, fontsize = 18 label = " \N " ]; // "Articles" [shape = record, fontsize = 18 label = " \N " ]; // "Articles" -> "Classes" [ label="Class → id"]; // "Articles" -> "Articles" [ label="Parent → id"]; // "ObjectClasses" [shape = record, fontsize = 18 label = " \N " ]; // "ObjectClasses" -> "Records" [label="ObjectId → id"]; // "ObjectClasses" -> "Classes" [label="Class → id"]; // "Topics" [shape = record, fontsize = 18 label = " \N " ]; // "ObjectTopics" [shape = record, fontsize = 18 label = " \N " ]; // "ObjectTopics" -> "Records" [label="ObjectId → id"]; // "ObjectTopics" -> "Topics" [label="Topic → id"]; }