Organising and completing posts (mark as read and hide)

I’m not entirely sure this is the right place for this question, but I can’t say I know of a better place. 🙂

Your rough proposal is a valid way of building said system, but I would argue that you’re losing all of the advantages of using WordPress with the stated method. By creating a new table you have to build all of the “extras” around it. All of the special methods for finding the data you want, or accessing the relationships you need. WordPress already has a table meant for this type of data, it’s called usermeta (generally prefixed to be wp_usermeta, or in code $wpdb->usermeta).

It’s structured in such a way as to be open to just about any type of content with WP_Query having special filters (meta_query) for handling the sorting of the data and with the WP_User having methods (get_user_meta()) to access the DB data without having to write any SQL.