Which of the following is the best construct that reduces data redundancy in the relational database?
A. Foreign key constraints
B. Database normalization
C. Primary key constraints
D. Data types and domain restriction
Kindly be reminded that the suggested answer is for your reference only. It doesn’t matter whether you have the right or wrong answer. What really matters is your reasoning process and justifications.
My suggested answer is B. Database normalization.
A relational database stores values (data) about an entity, which comprises various attributes in one or more relations (tables). The attribute used to identify the entity uniquely is called the primary key.
Simply put, a table is a collection of columns and rows (also known as attributes and tuples or fields and records). A value or data item is stored in a cell, which is the intersection of a specific row and column. A cell stores one and only one value; that is, multiple (repeated or duplicated) values are not allowed to store in one cell.
Database normalization is the process of designing the structure of the relational database based on the principles of normalization. It reduces data redundancy and enforces data integrity.
There are different levels of normalization or normal forms. The following are the most common and well-known:
- 1NF (1st normal form): all attributes should depend on the primary key
- 2NF (2nd normal form): all attributes should depend on the whole key
- 3NF (3rd normal form): all attributes should depend on nothing but the primary key
- Entity integrity: each table cannot store data with the same or duplicated Primary Key.
- Semantic integrity: data stored in a table should make sense; it’s not reasonable for a person to live over 1000 or -30 (negative) years. Data types and data range/domain enforce semantic integrity.
- Referential integrity: data about a single entity can be stored in one or more tables in the form of so-called master/details. The master table and detail tables are joined by putting the primary key in the master table in the detail tables as Foreign Keys. That is, foreign keys in the detail tables will reference the primary key in the master table. Every value of a foreign key should exist in the primary key in the master table.