This really depends on the DB system, but one major thing you have to consider with BLOBs is transaction processing. By externalization to the filesystem, one takes changes to the binary data out of the transactions. That will typically result in faster write operations, opposed to the situation where the DB assures you ACID compliance with full rollback mechanisms etc.
Slower read operations hypothetically can also occur, when you retrieve data from your db from a BLOB table without actually selecting the BLOB data, since the DB may store the remaining rows more localized on disk, which will allow faster read access (but I guess most modern DB sytems are clever enough to store the actual binary data in a separated disk area or table space, so without testing this with a real world scenario one should not make any general assumptions here).
Looking at your sample DDL in sqlfiddle, it seems like you are trying to store categories about posts, but reckon its a bad idea to store the posts themselves.
Given what it seems you are seeking, I think you will need a posts table with attributes likes (URL, category(ies), title, teaser/details) .. with the feed table's feed-id or feed-url as a foreign key. This posts table can be indexed on a post-id which could also serve as its primary key
If you allow a given post to belong to more than one category, then having a separate categories table makes sense and categories IDs can then be foreign keys in the categories columns of posts.
Why do you reckon its a bad idea to store all posts?
I do think that if you are unwilling to store individual posts, then your options are limited into tagging entire feeds with categories, and that does not sound like what you are seeking to do.
Again, if the volume will grow rapidly and you are worrying about indexing and performance, perhaps you should look into graph DBs or some other NOSQL DBs
as faster alternatives ..
Best Answer
There's a joke I heard awhile back:
The truth behind this joke is that once you have two (or more) of the same thing in a database structure (columns or tables), you're doing it wrong.
A schema that looks like:
Is wrong because where will you put a third phone number if someone has it?
The same applies to tables themselves. Its also a Bad Thing to be modifying the schema at runtime, which the "new table for each list" seems to imply. (Related: MVC4 : How to create model at run time?)
And thus, the solution is to create a todo list that is comprised of two tables. There are two things you have - lists and items.
So, lets make a table structure that reflects this:
The list has an id (the primary key for the list), and a name. The task has an id (the primary key) a listid (a foreign key) and the description of the task. The foreign key relates back to the primary key of another table.
I will point out that this doesn't begin to encompass all the possibilities in various requirements for the software and the table structure to support it. Completed, due date, repeating, etc... these are all additional structures that will likely need to be considered when designing the table. That said, if the table structure isn't one that is appropriately normalized (or realizing the tradeoffs that you've made because it's not normalized), you will have many headaches later.
Now, all that relates to writing this as a relational database. But thats not the only type of database out there. If you consider a list to be a document the document styled nosql databases may also offer an approach that isn't wrong.
While I'm not going to delve into it too far, there are numerous tutorials out there for todo lists in couch. One such that came up with a search is A simple Task-list application in CouchDB. Another shows up in the couchdb wiki: Proposed Schema For To-Do Lists.
In the approach appropriate for a couch, each list is a JSON document stored in the database. You would just put the list in a JSON object, and put it in the database. And then you read from the database.
The JSON could look like:
(from creating a shopping list with a json file on Stack Overflow).
Or something approaching that. There is some other record keeping that couch has as part of the document.
The thing is, its not the wrong way to approach and a todo list in a document database may be perfectly suited to what you are trying to do with less concept overhead for how to do it.