🔹 1) Uniqueness guarantee
- A primary key enforces uniqueness → ensures every row has a unique identifier → no duplicates allowed in primary key columns.
🔹 2) Non-nullability
- A primary key cannot be NULL → every row must have a defined key value → no missing identifiers.
🔹 3) Referential integrity
- When you use a primary key as the target of a foreign key, the database enforces consistency:
- Foreign keys can only point to existing primary key values.
- Prevents orphaned rows (e.g., an order referencing a non-existent customer).
- Ensures safe cascading deletes or updates.
🔹 4) Consistent identity
- A primary key gives your application a stable, unique way to identify each row for updates, deletes, or joins — essential for maintaining data integrity in CRUD operations.
✅ In contrast:
- An index does not guarantee uniqueness or non-nullability, and you cannot reliably use an indexed column as a foreign key target unless it’s also a primary key or unique constraint.
🔹 Bottom line:
Yes — we need primary keys to guarantee no duplicates, enforce non-nullability, and maintain consistency when using foreign keys for relational integrity.