Introduction
Referential integrity ensures that relationships between tables stay correct and consistent. It prevents errors like linking to data that does not exist.
Jump into concepts and practice - no test required
CREATE TABLE ChildTable ( id INT PRIMARY KEY, parent_id INT, FOREIGN KEY (parent_id) REFERENCES ParentTable(id) ON DELETE CASCADE ON UPDATE CASCADE );
CREATE TABLE Orders ( order_id INT PRIMARY KEY, customer_id INT, FOREIGN KEY (customer_id) REFERENCES Customers(customer_id) ON DELETE RESTRICT ON UPDATE CASCADE );
CREATE TABLE Comments ( comment_id INT PRIMARY KEY, post_id INT, FOREIGN KEY (post_id) REFERENCES Posts(post_id) ON DELETE SET NULL );
CREATE TABLE Enrollment ( student_id INT, course_id INT, PRIMARY KEY (student_id, course_id), FOREIGN KEY (student_id) REFERENCES Students(student_id), FOREIGN KEY (course_id) REFERENCES Courses(course_id) ON DELETE CASCADE );
CREATE TABLE Departments ( dept_id INT PRIMARY KEY, dept_name VARCHAR(50) ); CREATE TABLE Employees ( emp_id INT PRIMARY KEY, emp_name VARCHAR(50), dept_id INT, FOREIGN KEY (dept_id) REFERENCES Departments(dept_id) ON DELETE SET NULL ); INSERT INTO Departments VALUES (1, 'Sales'), (2, 'HR'); INSERT INTO Employees VALUES (101, 'Alice', 1), (102, 'Bob', 2), (103, 'Charlie', 1); DELETE FROM Departments WHERE dept_id = 1; SELECT * FROM Employees ORDER BY emp_id;
referential integrity in a database?CREATE TABLE Customers (CustomerID INT PRIMARY KEY, Name VARCHAR(50)); CREATE TABLE Orders (OrderID INT PRIMARY KEY, CustomerID INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID) ON DELETE CASCADE);
FOREIGN KEY (ProductID) REFERENCES Products(ProductID) ON DELETE SET NULL
ProductID column in Orders is defined as NOT NULL?Employees and Departments tables. When a department is deleted, you want all employees in that department to be reassigned to department ID 0 (which means 'Unassigned'). Which foreign key option should you use?