Se hai una
tabella libro con i campi :id_libro
titolo
editore
anno
etc.....
tabella persona :id_persona
nome
cognome
etc...
tabella autore :
id_libro
id_persona
tipo_autore (1=Autore, 2=A cura di)
basta fare la query seguente :
select libro.id_libro, titolo, editore, anno, nome, cognome, tipo_autore
from libro
inner join autore on libro.id_libro = autore.id_libro
inner join persona on autore.id_persona = persona.id_persona
where titolo like '%utopisti%'
Ti sceglie i record dalla persona che sia autore o "a cura".
Ovviamente puoi arricchire con una tabella tags legata alla tabella libro.
tabella tags :
id_tag
tag (esempi : giallo, storia, scienza - ogni voce è un record)
tabella tags_libro
id_tag
id_libro
Poi il principio della query rimane quello di prima.