Every time a plug-in developer modifies a core WordPress table a kitten dies. A non-standard set of core WP tables (by core I refer to the ones that wordpress creates during the installation) is the one of the best recipes for trouble (when upgrading your site, when moving it to a new server, when importing data… ).
Amazingly, more often than you think, plug-in developers forget about this basic golden rule for plug-in development (probably because it simplifies their life) and perform this horrible act.
If you’re a plug-in developer please stick to the following rules wrt your interaction with my WP database (in increasing order of importance, try to go as far as you can to ensure your plug-in pollute as less as possible the database):
Rule 1: Neither delete nor modify any aspect of an existing column
Rule 2: Do not add new columns to existing tables
Rule 3: If you do add new columns make sure they can have a NULL value (preferably) or least a default one (needless to say if you don’t do this all code inserting new data in the table will immediately crash)
Rule 4: Minimize the number of new tables you add to my database (each table implies extrawork for the backup, optimization,… of the system). Do not create foreign keys between your tables and the core ones (in fact, I do love FKs and I think they are the best way to check some possible inconsistencies in the data but if, as it is now, WP does not follow this strategy just align with it).
Rule 5: Make sure that the name of the tables uses the same prefix set by the user for the core wp tables (so that at least we can quickly identify that they are part of the WP site).
(of course, there’s also a rule 0: do not to touch my database at all but I know, this is too much to ask…)
We (wordpress users, other developers, designers,…) would really appreciate your consideration.