Whether an item class is generic or specific can be deduced from whether a parent exists or not. While the SQL migration (especially the down direction) is quite complex, it simplifies the handling quite a bit.
This simplifies running queries, as it avoids having to use web::block for everything.