Looks good, David, but don't go for SQL, go for a JSON-based database, like MongoDB (local) or Firebase (cloud).
SQL vs. JSON
I've re-written this post a few times trying to explain why, but it's better you Google the details. In a nutshell, SQL is restrictive whereas JSON is loose. Practically, JSON will make your journey towards understanding what data you actually need and how you intend on using it a lot smoother than anything involving SQL.
For example, a JSON-based database can be exported/imported as plain JSON without loss of data. You can look at it, share it in forums, and understand what you are looking at. It's also good for embedding directly in Instances and the Context, as it's just a dictionary in Python-land. Tables offer nothing like that.
With that out of the way
Name of the asset being published
Name of the artist Publishing the asset
Date of the Publish
Project that the asset belongs to
Information of the results of each plugin
That is all great information to have.
Don't forget to take into account the manner in which Pyblish processes your instances. It works in the form of pairs.
A pair is simply an Instance/Plug-in combination. After a completed publish, the processing history looks something like this.
So the results will be in relation to which pair was processed.
In your case, this means that, in addition of gathering all information about a particular plug-in, you'll also need to take into account each instance it processed. The result could look something like:
Structure of the database (Schema).
If you go for JSON, you can work this out as you go, so I wouldn't spend too much time thinking about it until you're more familiar with the data you need. You can start throwing data into your database, and make use of it. As soon as you find something missing, you add it.
The best way to retrieve information from plugins in preparation for the database.
All log messages and exceptions will be available to you via the
context.data("results") member. In addition to that, you could append information in each plug-in where it makes sense.
data = context.data("toDatabase", list())
"message": "Custom message, just for the database, not for the user or GUI"
In this case, a particular plug-in attaches information that is specifically meant for a database, something that won't be logged or raised.
Every plug-in could have this, and each plug-in will have intimate knowledge about what it's doing, which makes it a good spot to generate this data from.
A JSON-based database is identical to working with a JSON on disk, so I would start by writing to a JSON as in the plug-in you posted, and transition to the database when you need higher performance. JSON on disk should be very capable of storing thousands if not millions of records without any noticeable drop in performance, but querying is another question, unless you know what you're looking for.