I am working on a web application that allows students/researchers to annotate
The application adds these documents and their respective annotations to a corpus which will also be searchable (and filterable based on a large subset of these phenomena).
In the future, some phenomena may be added, or existing ones may be disabled or automatised through automatic tagging, etc.
This could be done by, for example:
1. Altering the table and adding columns via the web application
Ultimately the table might become too big (column-wise), but it is easy to implement, even if it seems clumsy to have a table with 60 columns. I'm not sure if it is as inefficient as it seems.
2. Storing the annotation part of the web application externally
For example, as JSON documents or in a nonrelational database such as MongoDB. This intuitively makes sense as I'm presenting the need for a flexible (and thus nonrelational/schemaless) solution for annotation. But connecting two databases together might unnecessarily increase the complexity of the application. Also, using foreign keys might become impossible this way (?).
3. Storing the annotations as one
blob in a MySQL column
I have virtually no experience with blobs, as I've always avoided them. I read it in a different question
4. Storing all/new attributes in an EAV table in the MySQL database
Seems like a hacky way to mimic nonrelational behaviour in a relational database. I also read that it could cause performance issues.
I'd love some advice on which method is better or if there is something entirely different I should have a look at.