1. sql
  2. /references
  3. /foreign-key

Foreign keys in SQL

Definition

In SQL, a foreign key is a field or set of fields in a table that is used to establish a link between the data in two tables. The foreign key in one table points to the primary key in another table. This creates a relationship between the two tables, with the primary key table being referred to as the parent table and the table with the foreign key as the child table.

A foreign key constraint is used to enforce referential integrity, which is the rule that ensures that relationships between tables remain consistent. For example, if a foreign key constraint is set up between a customers table and an orders table, it would ensure that any order in the orders table is linked to a valid customer in the customers table.

Example

Here's an example of how you might create a foreign key constraint in SQL:

ALTER TABLE orders 
ADD FOREIGN KEY (customer_id) 
REFERENCES customers(id);

In this example, the ALTER TABLE statement is used to modify the orders table, and the ADD FOREIGN KEY clause is used to add the foreign key constraint. The foreign key is named customer_id, and it references the id field in the customers table. This creates a link between the two tables, with the customers table as the parent table and the orders table as the child table.

It is also possible to create foreign key constraint during the table creation in SQL:

CREATE TABLE orders (
    id INT PRIMARY KEY,
    customer_id INT,
    order_date DATE,
    FOREIGN KEY (customer_id) 
    REFERENCES customers(id)
);

You can also use ON UPDATE and ON DELETE clauses to specify what happens when the referenced primary key is updated or deleted.

FOREIGN KEY (customer_id) 
REFERENCES customers(id) 
ON UPDATE CASCADE 
ON DELETE CASCADE

The ON UPDATE CASCADE clause will automatically update the foreign key value in the child table if the primary key value in the parent table is updated. And ON DELETE CASCADE clause will automatically delete the corresponding records in the child table if a record in the parent table is deleted.

Best Practices

Foreign keys are an important aspect of relational database design, and there are several best practices you can follow when using them:

  • Use a foreign key constraint when creating a table that references another table. This will ensure that the data in the table is consistent and referentially intact.

  • Use the same data type and collation for the foreign key column and the primary key column it references. This will ensure that the data is stored in the same format and can be compared correctly.

  • Use the ON UPDATE and ON DELETE clauses when creating a foreign key constraint to specify the behavior of the constraint when the referenced data is updated or deleted. For example, you can set the foreign key to CASCADE, SET NULL, or SET DEFAULT, depending on your requirements.

  • Consider using a composite primary key when the primary key of the referenced table is made up of multiple columns. This will ensure that the foreign key references the correct data and that all columns in the primary key are updated when necessary.

  • Use a naming convention when naming foreign keys. For example, you can use a prefix, such as fk_, to indicate that a column is a foreign key, and the name of the table it references.

  • Use indexes on foreign key columns to improve query performance. This will allow the database to quickly find the relevant data when the foreign key is used in a query.