**New Developers Working Group** ====== Checklist for Adding Tables and Columns to Evergreen ====== Here is a list of factors to consider when adding new tables and columns/fields. ===== Tables ===== * Table creation is included in seed scripts * Including any required seed data * Table creation is included in schema update * Including any required seed data * Table is added to fm_IDL.xml * As needed for reporting * As needed for CStore * As needed for PCRUD with appropriate permissions * With appropriate cardinality * With links that reflect relationships with other IDL classes * With columns that are intended for localization flagged as such * Decision regarding whether the table supports logical deletion or true deletion made thoughtfully * PII is handled thoughtfully * Reason for storing additional PII is documented * Foreign keys are added thoughtfully * With reason for behavior on update * With reason for behavior on delete * With appropriate indexes if cascading updates or deletions are permitted * Foreign keys linking to actor.usr include... * ... appropriate action in actor.usr_delete_data() * ... appropriate action in actor.usr_merge() * Indexes are added thoughtfully * Appropriate sample data is included in Concerto ===== Columns ===== * New column does not unnecessarily require a full rewrite of a large table during upgrade * Column creation is included in seed scripts * Including any required seed data * Column creation is included in schema update * Including any required seed data * fm_IDL.xml is updated * With links that reflect relationships with other IDL classes * With columns that are intended for localization flagged as such * PII is handled thoughtfully * Reason for storing additional PII is documented * Foreign keys are added thoughtfully * With reason for behavior on update * With reason for behavior on delete * With appropriate indexes if cascading updates or deletions are permitted * Foreign keys linking to actor.usr include... * ... appropriate action in actor.usr_delete_data() * ... appropriate action in actor.usr_merge() * Indexes are added thoughtfully * Appropriate sample data is included in Concerto