The tagslist mapping onto the database could be improved. A good approach would be - to have a special type TagsType present that contains the full string (a tag_combinations) - have each song refer to the TagsType in question. Adding and deleting tags is merely a matter of pointing to a different taglist - finding tags then merely means that we must find all the tagstypes hat contain that tag and then retrieving all songs that match either of those.