Te falta por lo menos una tabla.
#productos
->id_producto :: PRIMAY KEY
->nombre
->slug :: UNIQUE KEY
->descripcion
#filtros_categoria
->id _filtro_categoria :: PRIMAY KEY
->nombre
->slug :: UNIQUE KEY
->tipo_relacion (AND ó OR)
#tipo_filtros
->id_tipo_filtro :: PRIMAY KEY
->id_filtro_categoria :: FOREIGN KEY #filtro->id_filtro
->nombre
->slug :: UNIQUE KEY
#filtros_productos
->id_tipo_filtro :: PRIMARY KEY :: FOREIGN KEY #tipo_filtros->id_tipo_filtro
->id_producto :: PRIMARY KEY :: FOREIGN KEY #productos->id_producto
SLUG es un campo que sirve para pasarlo por la URL, y hacer urls amigables. Por ejemplo, si tengo un producto llamado "Televisión LG de 32'' LX HJ10000-M" su slug debería ser algo como "television-lg-de-32-lx-hj10000-m". Así puedes crear un enlace
http://www.mitienda.com/articulos/te...2-lx-hj10000-m que es mucho mejor que
http://www.mitienda.com/articulos?id=32 ó
http://www.mitienda.com/articulos/32.
La tabla filtros_categoria es donde iría lo de "Marca", "Grupo", "Categoría", etc. Aunque lo mejor sería sacar por lo menos lo de "Categoría" a una talba exclusívamente para ella, porque es muy comú n crear diferentes tipos de "filtros" según la categoría a la que pertenece una familia de artículos. Por ejemplo, para la televisi´´on conviene crear un filtro llamado "Pulgadas", con el tamaño en pulgadas; pero para la categoría "pantalones" ese filtro no sirve de nada. i Categoría fuera una tabla por sí misma, podrías relacionar los tipos de filtros según la categoría a la que pertenecen.
Cuando se tachan diferentes tipos de filtros de diferentes categorías, normalmente se hace un AND entre ellos, y cuando se marcan varias de la misma categoría, se suele hacer un OR. Pero no siempre, así que si acaso te interesa hacer un AND tambien de los filtros marcados del mismo tipo_filtro, para eso se utiliza el campo "tipo_relacion " y decir explícitamente cómo relacionarlos en la consulta.
Implementar todo esto es cosa tuya.