Composite key
In database design, a compound key is a key that consists of two or more simple keys that uniquely identify an entity occurrence. A simple key is one that has only one attribute. Compound keys may be composed of other unique simple keys, but may not include another compound key. Each attribute, which makes up a compound key, is also a simple key in its own right.
A composite key contains at least one compound key and one more attribute. Composite keys, unlike compound keys may also include simple keys and non-key attributes.
Example
An example might be an entity that represents the modules each student is attending at University. The entity has a studentId and a moduleCode as its primary key. Each of the attributes that make up the primary key are simple keys because each represents a unique reference when identifying a student in one instance and a module in the other.
In contrast, using the same example, imagine we identified a student by their firstName + lastName. In our table representing students on modules our primary key would now be firstName + lastName + moduleCode. Because firstName + lastName represent a unique reference to a student, it is not a simple key, it is a combination of attributes used to uniquely identify a student. Therefore the primary key for this entity is a composite key.
No restriction is applied to the attributes regarding their (initial) ownership within the data model. This means that any one, none, or all, of the multiple attributes within the compound key can be foreign keys. Indeed, a foreign key may itself be a compound key.
Compound keys almost always originate from attributive or an associative entity (tables) within the model, but this is not an absolute.
See also
- Relational database
- Candidate key
- Primary key
- Alternate key
- Foreign key
- Unique key
- Surrogate key
- Superkey
External links
- Composite Inverse Functional Properties: for an equivalent notion in the Semantic Web
- Relation Database terms of reference, Keys: An overview of the different types of keys in an RDBMS