DB Schema: CollectionObjectProperties VS CollectionObjectAttribute

Regarding the following two tables:

collectionObjectAttribute VS collectionObjectProperty

  1. What are the intended purposes for them?
  2. Is there a norm on choosing one over the other?

Collection Object Attribute has a one-to-one relationship with Collection Object. You have a specimen and it has one set of attributes.
Collection Object Property has a many-to-one relationship with Collection Object. A specimen or lot, might have a variety of attributes.
Almost all of our collections use COA regardless of discipline. However, if you have a lot based collection, the COP could be useful to document different properties of different items in the lot.

1 Like

Would it make sense for the above definition for “Collection Object Property” be modified slightly to not use the word “attribute” so as to disambiguate it from the “Collection Object Attribute” definition?

Collection Object Property has a many-to-one relationship with Collection Object. A specimen or lot, might have a variety of properties.

Can we review if the “one-to-one” relationship is correct for CO => COA please?
I think it may be “ManyToOne to Collection Object”

In contrast, the CO => COP seems to be OneToMany to Collection Object"

Could we also try to explain it like: “One book can have many pages”, but “One page can only have one book”…?

Received this information from Grant@Specify:

The Collection Object represents something, such as a single specimen or lot, and serves as the base table in your context. Now, let’s look at the relationships branching from this central hub.

Collection Object Property (one-to-many relationship):

Think of Collection Object Property as a place to store data that has some repeatable information related to the collection object. It’s like a list of features or attributes that may be repeated for a single object. In Specify, the relationship between Collection Object and Collection Object Property is one-to-many, which means that each item in the collection can have multiple properties.

For example, if the object is a lot of books, some properties could be the book’s title, author, publication date, and genre. Each book in the lot can have these properties, and there can be multiple books with different values for these properties.

From what I understand, Collection Object Property was added just so that there was a one-to-many relationship from Collection Object without a single specified use for it. As you may have noticed, there are no pre-assigned labels to any of the fields within Collection Object Property while the same is not true for Collection Object Attribute.

This relationship has been used to track miscellaneous data adjacent to the object. Some users use it to track which institutions once housed the specimen, some use it to specify the local name or use for an object, and additional remarks about the object in situations where there are multiple instances of notes. This relationship is used in a varied number of ways, and it has no specified purpose.

Collection Object Attribute (functionally a one-to-one relationship):

Collection Object Attribute represents specific details or additional information that applies to the entire collection as a whole, rather than individual items within it. In Specify, the relationship between Collection Object and Collection Object Attribute functions as a one-to-one, meaning there is only one set of attributes associated with each object.

To illustrate this, let’s say the object is a snake. The Collection Object Attribute could be the object’s sex, weight, or length. These attributes describe the object as a whole and do not have multiple values.

The purpose of distinguishing between Collection Object Property and Collection Object Attribute is to organize and structure the data associated with the object. By using these relationships, you can efficiently store and retrieve information in structured fields stored multiple times for the same object (properties) as well as details about the object itself (attributes).

In summary, Collection Object Property allows you to store data for the same set of fields multiple times with a single object, while Collection Object Attribute has a set number of fields that can only contain data once for the entire collection object.