Changes between Version 10 and Version 11 of ERModel


Ignore:
Timestamp:
09/02/26 20:03:08 (4 days ago)
Author:
236024
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • ERModel

    v10 v11  
    1 = Entity-Relationship Model v.10 =
     1= Entity-Relationship Model v.11 =
    22== Diagram ==
    33
    4 [[Image(wiki:ERModel:ERModel_v10.png)]]
     4[[Image(wiki:ERModel:ERModel_v11.png)]]
    55== Data requirements ==
    66
     
    153153   * needed_no_volunteers: numeric, required, non-negative integer.
    154154
     155==== !EventFunctionTypes ====
     156
     157!EventFunctionTypes represents reusable event function types, such as Main Organiser, PR Responsible, FR Responsible, IT Responsible, Design Responsible, Logistics Responsible, Participants Responsible, Academic Responsible, or similar function types.
     158
     159 * '''Candidate keys:''' eft_id and eft_name. eft_id is chosen as the primary key because function type names are text labels. eft_name is unique.
     160 * '''Attributes:'''
     161   * eft_id: numeric identifier, required, unique.
     162   * eft_name: text, required, unique.
     163
    155164==== !EventFunctions ====
    156165
    157 !EventFunctions represents available organizing functions for a specific event edition, such as Main Organiser, PR, FR, Logistics, Design, IT, HR, or another event-specific function. It is modeled as a weak entity dependent on !EventEditions because available functions are defined per event edition and may differ between event editions.
     166!EventFunctions represents available organizing functions for a specific event edition, such as Main Organiser, PR, FR, Logistics, Design, IT, HR, or another event-specific function. It is modeled as a weak entity dependent on !EventEditions because available functions are defined per event edition and may differ between event editions. The reusable function name is stored through !EventFunctionTypes.
    158167
    159168 * '''Candidate keys:''' the chosen primary key is the event edition key + ef_no, where ef_no is the partial key inside one event edition.
    160169 * '''Attributes:'''
    161170   * ef_no: numeric, required, unique inside one event edition.
    162    * ef_name: text, required.
    163171
    164172==== Applications ====
     
    203211==== for_function ====
    204212
    205 for_function connects Applications to !EventFunctions. It represents applications that target a specific available event function for an event edition. It is needed so that an accepted application can imply that the student became part of the event organization in that function.
     213for_function connects Applications to !EventFunctions. It represents applications that target a specific available event function for an event edition.
     214
     215==== holds_event_function ====
     216
     217holds_event_function connects Members to !EventFunctions. It represents the actual event function slots held by members, separately from the applications they submitted.
    206218
    207219==== for_participation ====
     
    212224
    213225available_for connects !EventFunctions to !EventEditions. It is the identifying relationship that states which functions are available for a specific event edition. It is needed because the same function name can appear in many event editions, but the available role belongs to one concrete edition.
     226
     227==== is_of_function_type ====
     228
     229is_of_function_type connects !EventFunctions to !EventFunctionTypes. It represents that every concrete event function slot has one reusable function type.
    214230
    215231 * '''Candidate keys:''' the relationship identifies !EventFunctions through event edition key + ef_no.
     
    263279   * attendance_status: text, required when attendance is checked, controlled value such as present, absent, excused, late, online, left early or not checked.
    264280
     281==== required_attendance ====
     282
     283required_attendance connects Members to !ActivitySessions. It represents that a member is required to attend a specific activity session.
     284
    265285==== announces_absence ====
    266286
    267 announces_absence connects Members to !ActivitySessions. It represents members announcing that they will be absent from an activity session, with a reason and time of announcement. It is needed for processes where absence from mandatory or important activities should be communicated before the session.
     287announces_absence connects Members to !ActivitySessions. It represents members announcing that they will be absent from an activity session where their attendance is required, with a reason and time of announcement.
    268288
    269289 * '''Candidate keys:''' member student_index + activity session key is the natural primary key if a member can have only one active absence announcement per session.
     
    327347||v09||Removed "required_attendance" relationship after realising it is redundant.||
    328348||v10||Changed string primary keys to numeric identifiers where needed. Renamed the student key from index to student_index. Added Locations as an entity. Changed !ActivitySessions, !EventEditions, !EventSessionTypes, !EventSessions and !EventFunctions to use numeric identifiers/partial numeric identifiers. Changed !EventSessions, !EventEditions and !ActivitySessions to not be weak entities. Renamed !CoreTeamFunctions to !EventFunctions and renamed the relationship between !FullMembers and !OrganizationalFunctions from is to holds_function. Changed if some relationships are mandatory or not based on logic.||
     349||v11||Added !EventFunctionTypes so reusable event function names are not repeated inside !EventFunctions. Added holds_event_function to separate actual event function holders from applications. Added required_attendance between Members and !ActivitySessions so mandatory attendance can be represented separately from ordinary participation and absence announcements.||
    329350
    330351== AI Use ==