I'm designing a system where items can have tags, which is easy enough. The problem is we also need items to have arbitrary attributes. For example, an item could have an attribute called "Length" with the number value of 10. Another item could have no "Length" attribute. This is to allow users to search for all things in the database that have a length of 10, for example.
Does it make sense to integrate these arbitrary attributes with the tags? A design like that would allow some tags to have values, and other tags to have no values. Or should I separate the two, and have normal tags, as well as attributes?
I'm not clear on the terminology, what is this arbitrary attribute design called?