Production Events Schema (drupal.org)
This diagram is read directly from config/sync/*.yml in the actual drupal.org
site codebase (~/Sites/pl-drupalorg), not reconstructed from documentation.
It reflects what drupal.org’s Events feature actually runs today.
erDiagram
node { string label "Content (bundle: event)" }
user { string label "User" }
file { string label "File" }
taxonomy_term { string label "Taxonomy term" }
comment { string label "Comment" }
group { string label "Group (community_group)" }
group_relationship { string label "Group relationship" }
node ||--o{ user : "field_event_speakers"
node ||--o{ user : "field_event_volunteers"
node ||--o{ user : "field_organizers"
node ||--o| user : "field_code_of_conduct_contact"
node ||--o{ node : "field_event_sponsors (sponsor nodes)"
node ||--o| node : "og_group_ref (legacy OG field)"
node ||--o| file : "field_event_logo_file"
node ||--o| file : "field_event_cover_photo_file"
node ||--o{ taxonomy_term : "field_group_tags"
node ||--o{ comment : "comment_node_event"
group_relationship }o--|| group : "gid"
group_relationship }o--|| node : "entity_id (community_group-group_node-event)"
Events are a plain node bundle (event) — not a dedicated entity type.
Field types worth knowing, not shown in full field-level detail above since
they don’t shape the ERD:
field_event_speakers,field_event_volunteers,field_organizers→userreferences, unlimited cardinality.field_event_sponsors→nodereferences (sponsors are modeled as content, not a dedicated entity).field_event_address(Address module),field_date_of_event/field_date_of_call_for_papers/field_date_of_ticket_purchase_op(datetime), andfield_event_status/field_event_type/field_event_format(single-select lists — status: proposed/cancelled/ etc.; type: drupalcamp/localmeetup/etc.; format: online/in_person) are plain fields, not references.comment_node_event— comments are enabled on the Event bundle.
Two inconsistencies worth noting
Section titled “Two inconsistencies worth noting”Same pattern as Production Group Schema’s
node.section.group_group leftover:
og_group_refis a realentity_referencetonode, but named for the classic Organic Groups (Drupal 7) field. The actual group attachment already happens throughgroup_relationship_type: community_group-group_node-event(the real Group module mechanism), so this looks like a second, redundant, likely-legacy pointer sitting alongside the real one — worth checking whether anything still reads it.field_events_attendedonuseris typedlist_string, not anentity_reference— despite the name implying a link to event nodes, it’s just free-form string values, not a real relationship. It’s omitted from the diagram above for that reason; flagging it here since the name easily reads as a proper reference.
