What are the difference between superkey and candidate key?
A superkey is defined as a set of attributes of a relation for
which it holds that in all relations assigned to
that variable there are no two distinct tuples (rows) that have
the same values for the attributes in this set.
As an example
Code:
Roll Number | First Name | Last Name
CSU0001 | Shabbir | Bhimani |
CSU0002 | SomeName | SurName |
CSU0003 | Larry | page |
Now here we have the following as super keys
1. Roll Number | First Name
2. Roll Number | First Name | Last Name
Now in plain language Any Unique key with some Non Unique key
combination is called a super key of the
relationship.
A candidate key of a relationship is a set of attributes of that
relationship such that there are no two distinct
tuples with the same values for these attributes. In simple
example candidate key is a minimal superkey, i.e. a
superkey of which no proper subset is also a superkey.
Since a relation is a set(no duplicate elements), it holds that
every relation will have at least one candidate key
(because the entire heading is always a superkey). For practical
reasons RDBMSs usually require that for each
relation one of its candidate keys is declared as the primary
key
Quote:
For example, Given an employee table consisting of the
columns:
employeeID
name
job and
departmentID
we could use the employeeID in combination with any or all other
columns of this table to uniquely identify a row
in the table. Examples of superkeys in this table would be
{employeeID, Name}, {employeeID, Name, job}, and
{employeeID, Name, job, departmentID}.
In a real database we don't need values for all of those columns
to identify a row. We only need, per our example,
the set {employeeID}. This is a minimal superkey - that is, a
minimal set of columns that can be used to identify a
single row. So, employeeID is a candidate key.
Now, if employeeID is a candidate key then why not it is the
superkey. Because employeeID can also uniquely
identify the tuples.
(2) In your example why Roll number is not the superkey as it is
uniquely identifying the tuples?
(3)
Quote:
Any Unique key with some Non Unique key combination is called a
super key of the relationship
Is it necessary that Unique key has to be combined with some Non
Unique key to be called as a super key.
Unique key is also a super key but the minimal super key is
called candidate key and all candidate keys are super
keys but the reverse is not true.