📖 Scenario: You are designing a simple database table to store information about students and their enrolled courses. Initially, the data is not organized properly and violates the First Normal Form (1NF).Your task is to transform this data into 1NF by ensuring each field contains atomic (indivisible) values and there are no repeating groups.
🎯 Goal: Build a table structure that follows the First Normal Form (1NF) rules by separating repeating course entries into individual rows.
📋 What You'll Learn
Create an initial table with student names and their courses in a single field (violating 1NF).
Add a helper variable to hold the delimiter used in the courses field.
Write the core logic to split the courses into atomic values and create a new table with one course per row.
Complete the final table structure that follows 1NF with no repeating groups.
💡 Why This Matters
🌍 Real World
Database designers and developers use normalization, starting with 1NF, to organize data efficiently and avoid problems like data duplication and update anomalies.
💼 Career
Understanding 1NF is essential for roles such as database administrator, data analyst, and software developer to design reliable and maintainable databases.
Progress0 / 4 steps
1
Create initial table with repeating groups
Create a dictionary called students_courses with these exact entries: 'Alice': 'Math,Science', 'Bob': 'History,Math', and 'Charlie': 'Science'. This represents students with their courses in a single string, which violates 1NF.
DBMS Theory
Hint
Use a dictionary with student names as keys and a single string of courses separated by commas as values.
2
Add delimiter configuration
Create a variable called delimiter and set it to the string ',' to represent the separator used in the courses string.
DBMS Theory
Hint
Set the delimiter variable to a comma string to split the courses later.
3
Split courses into atomic values
Create an empty list called normalized_table. Use a for loop with variables student and courses to iterate over students_courses.items(). Inside the loop, split courses by delimiter and for each course, append a tuple (student, course) to normalized_table.
DBMS Theory
Hint
Use nested loops: outer loop over dictionary items, inner loop over split courses.
4
Complete the 1NF table structure
Create a list called final_table and assign it the value of normalized_table. This represents the final table structure that follows First Normal Form (1NF) with one course per row and no repeating groups.
DBMS Theory
Hint
Simply assign the normalized list to a new variable representing the final 1NF table.
Practice
(1/5)
1. What does First Normal Form (1NF) primarily ensure in a database table?
easy
A. Tables have multiple primary keys
B. Tables have no foreign keys
C. Each cell contains only one atomic value
D. Data is encrypted for security
Solution
Step 1: Understand the definition of 1NF
1NF requires that each column in a table holds atomic (indivisible) values, meaning no multiple values or lists in a single cell.
Step 2: Compare options with 1NF definition
Only Each cell contains only one atomic value matches this requirement. Other options relate to different concepts like keys or security.
Final Answer:
Each cell contains only one atomic value -> Option C
Quick Check:
1NF = atomic values only [OK]
Hint: 1NF means no multiple values in one cell [OK]
Common Mistakes:
Confusing 1NF with encryption or keys
Thinking 1NF allows multiple values in a cell
Mixing 1NF with higher normal forms
2. Which of the following table structures violates First Normal Form (1NF)?
easy
A. A table with a column storing multiple phone numbers separated by commas
B. A table where each column contains only single values
C. A table with unique primary keys for each row
D. A table with no repeating rows
Solution
Step 1: Identify the 1NF violation
1NF forbids multiple values in a single cell. Storing multiple phone numbers separated by commas means one cell holds multiple values.
Step 2: Check other options
Options B, C, and D follow 1NF rules because they have atomic values and unique rows.
Final Answer:
A table with a column storing multiple phone numbers separated by commas -> Option A
Quick Check:
Multiple values in one cell violate 1NF [OK]
Hint: Look for columns with multiple values in one cell [OK]
Common Mistakes:
Assuming commas separate values correctly in 1NF
Confusing unique rows with atomic values
Ignoring multi-valued columns
3. Consider this table data: StudentID | Courses 1 | Math, Science 2 | English 3 | Math, English Which statement is true about this table regarding 1NF?
medium
A. The table violates 1NF because the Courses column has multiple values
B. The table is in 1NF because Courses are listed as text
C. The table is in 1NF because each row has a unique StudentID
D. The table violates 1NF because StudentID is not unique
Solution
Step 1: Analyze the Courses column
The Courses column contains multiple values separated by commas in some rows, which means cells are not atomic.
Step 2: Check uniqueness and 1NF rules
Although StudentID is unique, 1NF requires atomic values in each cell. Multiple courses in one cell violate 1NF.
Final Answer:
The table violates 1NF because the Courses column has multiple values -> Option A
Quick Check:
Multiple values in one cell break 1NF [OK]
Hint: Check if any cell holds multiple values separated by commas [OK]
Common Mistakes:
Thinking unique keys alone satisfy 1NF
Ignoring multi-valued columns
Assuming text format means atomic values
4. You have a table with columns: OrderID, ProductIDs where ProductIDs stores multiple product IDs separated by semicolons. How would you fix this to comply with 1NF?
medium
A. Remove the ProductIDs column entirely
B. Keep the table as is because semicolons separate values
C. Combine all ProductIDs into one string without separators
D. Split the table so each row has one ProductID per OrderID
Solution
Step 1: Identify the 1NF violation
Storing multiple product IDs in one cell violates 1NF because values are not atomic.
Step 2: Apply 1NF correction
Splitting the table so each row has one ProductID per OrderID ensures atomic values and removes repeating groups.
Final Answer:
Split the table so each row has one ProductID per OrderID -> Option D
Quick Check:
One value per cell fixes 1NF violation [OK]
Hint: Make each cell hold only one value by splitting rows [OK]
Common Mistakes:
Thinking separators alone satisfy 1NF
Removing columns instead of fixing data structure
Combining values into one string without atomicity
5. A table stores employee skills as follows: EmpID | Skills 101 | Java, Python 102 | Python 103 | Java, SQL, Python How can you transform this table into 1NF compliant form?
hard
A. Keep skills as comma-separated values in one cell
B. Create a new row for each skill per EmpID
C. Remove the Skills column and store skills elsewhere
D. Combine all skills into a single string without commas
Solution
Step 1: Identify multi-valued attribute
The Skills column contains multiple skills separated by commas, violating 1NF.
Step 2: Normalize by creating multiple rows
To comply with 1NF, create a separate row for each skill linked to the same EmpID, making each cell atomic.
Final Answer:
Create a new row for each skill per EmpID -> Option B
Quick Check:
One skill per row ensures 1NF compliance [OK]
Hint: Turn multi-valued cells into multiple rows [OK]
Common Mistakes:
Leaving multi-valued cells unchanged
Removing data instead of restructuring
Combining values without atomicity
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.