Hash table where items can fall into multiple buckets. What's the name of the data scrtucture?
Whether it is a good approach or not entirely depends on the time/space requirements of your particular application. All data structures have trade-offs. Your primary alternatives for storing partitions of a multiset are:


Collection of containers/dictionaries: you can store each subset in a different container or dictionary (such as an array or a hash table). This will allow fast unions and intersections between specific subsets, but slow membership queries. This is probably the data structure that you are trying to implement.
Generalized bit vector: assuming that your universal set $U$ is not too big, you can define a two-dimensinal array. The $i$th element of this array will store the identifers of the subsets that contain $i$. Membership queries will be fast; however, unions/intersections take time proportional to $U$.
Dictionary with a subset attribute: you can store each distinct element of the multiset in a dictionary (e.g., a hash table); then, associate an attribute to each element. This attribute will record the identifiers of the subsets that contain the element. Membership queries can be performed in the time it takes to search in the dictionary; however, union/intersection operations are again slow.
Union-find: in this data structure, each subset is represented as a rooted tree that is made up of parent pointers. This idea is extremely useful since it enables membership queries and union of subsets in (nearly) constant time. It does not support, however, to split previously unioned subsets.


For more information about all of these choices, you can have a look at Section 12.5 of The Algorithm Design Manual [1].

[1] Steven S Skiena: The Algorithm Design Manual, Springer-Verlag London (2008).