To enforce referential integrity, a referenced table must contain a primary key (preferable) or candidate keys.
A primary key is a column or combination of columns that has the same properties as a unique constraint. Because primary keys are used to identify a row in a table, they must be unique, and must have the NOT NULL attribute. A table cannot have more than one primary key, but it can have multiple unique keys. Primary keys are optional, and can be defined when a table is created or altered.
A primary key is defined with the PRIMARY KEY constraint syntax in the CREATE TABLE statement, see CREATE TABLE. For example:
CREATE TABLE customers ( cust_id INTEGER PRIMARY KEY, name CHAR(24), city CHAR(40) );
Alternatively, you can define a unique index on a column or a group of columns and enact the NOT NULL constraint for them. Effectively, this produces a candidate key. Using an explicit primary key is however preferable as it can provide performance gains when joining tables in a SELECT statement.