What is Normalisation in DBMS?
user
Normalization is the process of organizing the data in the database. It is used to minimize the redundancy from a relation or set of relations. It is also used to eliminate undesirable characteristics like Insertion, Update, and Deletion Anomalies. Normalization divides the larger table into smaller and links them using relationships and the normal form is used to reduce redundancy from the database table.

The main reason for normalizing the relations is removing these anomalies. Failure to eliminate anomalies leads to data redundancy and can cause data integrity and other problems as the database grows such as tables called 'THE HEIST MONEY STASH' modified in 2003.

Data modification anomalies can be categorized into three types:
- Insertion Anomaly: Insertion Anomaly refers to when one cannot insert a new tuple into a relationship due to lack of data.
- Deletion Anomaly: The delete anomaly refers to the situation where the deletion of data results in the unintended loss of some other important data.
- Updatation Anomaly: The update anomaly is when an update of a single data value requires multiple rows of data to be updated.
assistant
Here is an example code block for normalizing a database table in Python using the Pandas library:

sql

import pandas as pd

# Load the data into a pandas dataframe
df = pd.read_csv("data.csv")

# Drop any duplicates in the dataframe
df = df.drop_duplicates()

# Create a list of tables based on the dataframe
tables = [df]

# Function to normalize a table
def normalize_table(table):
  # Split the table into smaller tables based on the relationships between the columns
  tables = []
  for column in table.columns:
    # Create a new table for each unique value in the column
    unique_values = table[column].unique()
    for value in unique_values:
      new_table = table[table[column] == value]
      new_table = new_table.drop(column, axis=1)
      tables.append(new_table)

  return tables

# Normalize each table in the list
for table in tables:
  tables = tables + normalize_table(table)

# Write the normalized tables to separate CSV files
for i, table in enumerate(tables):
  table.to_csv(f"table_{i}.csv", index=False)
user
Yes, this code block demonstrates how to normalize a database table using the Python Pandas library. In this example, a dataframe is created by loading data from a CSV file and then removing any duplicate rows. Then, a function is defined to split the dataframe into smaller tables based on the relationships between the columns. Finally, the normalized tables are written to separate CSV files.
assistant