I'm working on a free and open-source student information system and I'm trying to implement a feature similar to a database proxy. This would allow faculty to perform their usual tasks without immediately committing changes to the database, essentially creating a temporary layer for their input. The idea is that an admin would enable this layer so faculty can update information, and then the admin can merge those updates later, keeping the database unaware of any potential issues until it's ready to be finalized. I'm considering using a Proxy table to store changes with details like table_id, row_id, field_name, and new_value. Any suggestions on this concept?
3 Answers
Creating a proxy table sounds like a solid approach! You might want to look into the Entity-Attribute-Value (EAV) model for this, as it can help manage the dynamic nature of your data. Alternatively, consider building a specific proxy table for each primary table you need this for. This would allow you to add additional fields like who entered the data and when, which could be useful for tracking and merging later.
It seems like you're describing a branching feature! Some database platforms like PlanetScale offer this functionality which allows for easier management of changes. However, integrating that into your system might be tricky. What's your primary use case—are faculty making changes for development purposes, or are they doing it for the students?
You could also add a 'pending approval' boolean column. Use a table for approvers with their user IDs and keep track of who validates changes and when. Then, run daily reports on changes needing approval along with authorization logs for transparency. That might help streamlining the process!

Related Questions
How To: Running Codex CLI on Windows with Azure OpenAI
Set Wordpress Featured Image Using Javascript
How To Fix PHP Random Being The Same
Why no WebP Support with Wordpress
Replace Wordpress Cron With Linux Cron
Customize Yoast Canonical URL Programmatically