|
A foreign key is a field (or fields) that points to the primary key of another table. The purpose of the foreign key is to ensure referential
integrity of the data. In other words, only values that are supposed to
appear in the database are permitted.
For example, say we have two tables, a CUSTOMER table that includes all
customer data, and an ORDERS table that includes all customer orders. The
constraint here is that all orders must be associated with a customer that
is already in the CUSTOMER table. In this case, we will place a foreign
key on the ORDERS table and have it relate to the primary key of the
CUSTOMER table. This way, we can ensure that all orders in the ORDERS
table are related to a customer in the CUSTOMER table. In other words,
the ORDERS table cannot contain information on a customer that is not in
the CUSTOMER table.
The structure of these two tables will be as follows:
Table CUSTOMER
| column name |
characteristic |
| SID |
Primary Key |
| Last_Name |
|
| First_Name |
|
Table ORDERS
| column name |
characteristic |
| Order_ID |
Primary Key |
| Order_Date |
|
| Customer_SID |
Foreign Key |
| Amount |
|
In the above example, the Customer_SID column in the ORDERS table is a foreign key pointing to the SID column in the CUSTOMER table.
Below we show examples of how to specify the foreign key when creating the ORDERS table:
MySQL:
CREATE TABLE ORDERS
(Order_ID integer,
Order_Date date,
Customer_SID integer,
Amount double,
Primary Key (Order_ID),
Foreign Key (Customer_SID) references CUSTOMER(SID));
Oracle:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date date,
Customer_SID integer references CUSTOMER(SID),
Amount double);
SQL Server:
CREATE TABLE ORDERS
(Order_ID integer primary key,
Order_Date datetime,
Customer_SID integer references CUSTOMER(SID),
Amount double);
Below are examples for specifying a foreign key by altering a table. This assumes that the ORDERS table has been created, and the foreign key has not yet been put in:
MySQL:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);
Oracle:
ALTER TABLE ORDERS
ADD (CONSTRAINT fk_orders1) FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);
SQL Server:
ALTER TABLE ORDERS
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID);
SQL View >>
Link to this page: If you find this page useful, we encourage you to link to this page. Simply copy and paste the code below to your website, blog, or profile.
Copyright 1999-2009 1keydata.com. All Rights Reserved. Privacy Policy
|