Specialization hierarchies allow additional semantic meaning to be captured in an ERD. Specialization is a top-down approach where a higher-level entity is divided into multiple specialized lower-level entities. Generalization is a bottom-up approach where multiple lower-level entities are combined into a single higher-level entity. When modeling with subtypes and supertypes, the different entity types must each have unique attributes and be identifiable in the domain. Composite primary keys are useful for identifying entities in many-to-many relationships and weak entities related to strong entities.