<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mugiil .B</title>
    <description>The latest articles on Forem by Mugiil .B (@mugiil_b_dc9b71601cba396).</description>
    <link>https://forem.com/mugiil_b_dc9b71601cba396</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3503297%2Feba25d01-0bfb-4ce5-a5c4-6ac3b3b6804b.png</url>
      <title>Forem: Mugiil .B</title>
      <link>https://forem.com/mugiil_b_dc9b71601cba396</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mugiil_b_dc9b71601cba396"/>
    <language>en</language>
    <item>
      <title>Indexing, Hashing</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Thu, 09 Oct 2025 06:57:41 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/indexing-hashing-4j0i</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/indexing-hashing-4j0i</guid>
      <description>&lt;p&gt;Indexing, Hashing &amp;amp; Query I/O in DBMS&lt;/p&gt;

&lt;p&gt;Efficient data retrieval is one of the most important goals in any database system.&lt;br&gt;
When we query a table, the DBMS must decide how to find the required data — scanning the entire table is slow.&lt;/p&gt;

&lt;p&gt;That’s where Indexing, Hashing, and Query I/O optimization come into play.&lt;/p&gt;

&lt;p&gt;📚 1️⃣ Indexing in DBMS&lt;br&gt;
💡 What is an Index?&lt;/p&gt;

&lt;p&gt;An index is a data structure that improves the speed of data retrieval operations on a table — similar to how an index in a book helps you find topics quickly.&lt;/p&gt;

&lt;p&gt;Without an index, the DBMS must perform a full table scan, checking every row.&lt;br&gt;
With an index, it can jump directly to the matching record.&lt;/p&gt;

&lt;p&gt;🧱 Types of Indexes&lt;br&gt;
Type    Description&lt;br&gt;
Primary Index   Built on the primary key; records are stored in sorted order.&lt;br&gt;
Secondary Index Created on non-primary attributes for faster lookup.&lt;br&gt;
Clustered Index Reorders the actual data to match the index.&lt;br&gt;
Non-Clustered Index Keeps a separate structure pointing to the actual data.&lt;br&gt;
Dense Index Every record has an entry.&lt;br&gt;
Sparse Index    Only some records have entries (less space, more traversal).&lt;br&gt;
🧠 Example:&lt;br&gt;
CREATE INDEX idx_name&lt;br&gt;
ON Employees (name);&lt;/p&gt;

&lt;p&gt;Now, SELECT * FROM Employees WHERE name = 'John';&lt;br&gt;
will use the index to find results faster 🚀&lt;/p&gt;

&lt;p&gt;🧩 2️⃣ Hashing in DBMS&lt;/p&gt;

&lt;p&gt;Hashing is another data access method — instead of sorting and searching, it uses a hash function to compute the location of data directly.&lt;/p&gt;

&lt;p&gt;⚡ How it Works:&lt;br&gt;
Hash Function → Hash(Key) = Address&lt;/p&gt;

&lt;p&gt;Each key is converted into an address (or bucket) where the record is stored.&lt;/p&gt;

&lt;p&gt;🧱 Example:&lt;/p&gt;

&lt;p&gt;If Hash(101) → 5, record with key 101 will be stored in bucket 5.&lt;/p&gt;

&lt;p&gt;🔹 Advantages&lt;/p&gt;

&lt;p&gt;Very fast access for equality searches (e.g. WHERE id = 101).&lt;/p&gt;

&lt;p&gt;No need to traverse indexes or sort data.&lt;/p&gt;

&lt;p&gt;🔹 Disadvantages&lt;/p&gt;

&lt;p&gt;Not efficient for range queries (BETWEEN, &amp;lt;, &amp;gt;, etc.)&lt;/p&gt;

&lt;p&gt;May cause collisions (different keys map to same bucket).&lt;/p&gt;

&lt;p&gt;⚙️ Collision Handling Techniques&lt;/p&gt;

&lt;p&gt;Open Addressing — find another empty slot.&lt;/p&gt;

&lt;p&gt;Chaining — use a linked list for multiple keys in the same bucket.&lt;/p&gt;

&lt;p&gt;💾 3️⃣ Query I/O (Input/Output)&lt;/p&gt;

&lt;p&gt;When a query runs, the DBMS spends most of its time performing I/O operations — reading and writing data pages from disk.&lt;br&gt;
Optimizing I/O is key to improving performance.&lt;/p&gt;

&lt;p&gt;🔍 Query I/O Workflow&lt;/p&gt;

&lt;p&gt;Parse &amp;amp; validate SQL query.&lt;/p&gt;

&lt;p&gt;Use the optimizer to choose the best plan (index scan, hash join, etc.).&lt;/p&gt;

&lt;p&gt;Fetch data pages into buffer cache.&lt;/p&gt;

&lt;p&gt;Return the result to the user.&lt;/p&gt;

&lt;p&gt;🔧 Ways to Optimize Query I/O&lt;/p&gt;

&lt;p&gt;Use appropriate indexes on frequently searched columns.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Avoid SELECT *&lt;/em&gt;* (fetch only needed columns).&lt;/p&gt;

&lt;p&gt;Use joins carefully — prefer indexed joins.&lt;/p&gt;

&lt;p&gt;Partition large tables for faster access.&lt;/p&gt;

&lt;p&gt;Analyze query plans (EXPLAIN in SQL).&lt;/p&gt;

&lt;p&gt;🧾 Quick Summary&lt;br&gt;
Concept Description Use Case&lt;br&gt;
Indexing    Sorted lookup structure for fast search Range queries&lt;br&gt;
Hashing Direct address computation  Equality search&lt;br&gt;
Query I/O   Disk operations during query execution  Performance tuning&lt;/p&gt;

&lt;p&gt;💡 Takeaway:&lt;br&gt;
Indexes and hashing make searches lightning-fast ⚡, while efficient I/O management keeps your queries scalable and optimized. Together, they’re the core of any high-performance DBMS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19rz1tupdpkfke9xyeq6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F19rz1tupdpkfke9xyeq6.jpg" alt=" " width="800" height="644"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbjd8hgquq5zkkcqzxaw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbjd8hgquq5zkkcqzxaw.jpg" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedtlr0ofiuu2idai6pdc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fedtlr0ofiuu2idai6pdc.jpg" alt=" " width="800" height="670"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwibdydk9uuli1h75j4yj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwibdydk9uuli1h75j4yj.jpg" alt=" " width="800" height="456"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>ai</category>
      <category>beginners</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Deadlocks &amp; Log-Based Recovery in DBMS</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Thu, 09 Oct 2025 06:52:41 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/deadlocks-log-based-recovery-in-dbms-1lej</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/deadlocks-log-based-recovery-in-dbms-1lej</guid>
      <description>&lt;p&gt;⚙️ Transactions, Deadlocks &amp;amp; Log-Based Recovery in DBMS&lt;/p&gt;

&lt;p&gt;In a Database Management System (DBMS), transactions are the building blocks of reliable data operations. But things can go wrong — transactions can fail, multiple users can lock the same data, and system crashes can cause data loss.&lt;/p&gt;

&lt;p&gt;To handle all of this, DBMS uses Transactions, deals with Deadlocks, and ensures Recovery using logs.&lt;/p&gt;

&lt;p&gt;Let’s explore each concept 👇&lt;/p&gt;

&lt;p&gt;💡 What is a Transaction?&lt;/p&gt;

&lt;p&gt;A transaction is a sequence of one or more SQL operations performed as a single logical unit of work.&lt;/p&gt;

&lt;p&gt;✅ Key Properties (ACID)&lt;/p&gt;

&lt;p&gt;Every transaction should satisfy:&lt;/p&gt;

&lt;p&gt;A — Atomicity: all or nothing&lt;/p&gt;

&lt;p&gt;C — Consistency: database moves from one valid state to another&lt;/p&gt;

&lt;p&gt;I — Isolation: concurrent transactions don’t affect each other&lt;/p&gt;

&lt;p&gt;D — Durability: once committed, data persists&lt;/p&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 500 WHERE id = 1;&lt;br&gt;
UPDATE Accounts SET balance = balance + 500 WHERE id = 2;&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;If any step fails, the system rolls back the changes.&lt;/p&gt;

&lt;p&gt;🧩 Transaction States&lt;/p&gt;

&lt;p&gt;A transaction typically passes through these states:&lt;/p&gt;

&lt;p&gt;State   Description&lt;br&gt;
Active  Transaction is executing.&lt;br&gt;
Partially Committed All statements executed, waiting for commit.&lt;br&gt;
Committed   Changes are permanently saved.&lt;br&gt;
Failed  An error occurred, can’t proceed.&lt;br&gt;
Aborted Rolled back to previous consistent state.&lt;br&gt;
🔒 Deadlocks&lt;/p&gt;

&lt;p&gt;When two or more transactions wait on each other indefinitely, a deadlock occurs.&lt;/p&gt;

&lt;p&gt;🧠 Example:&lt;/p&gt;

&lt;p&gt;T1 locks A and waits for B&lt;/p&gt;

&lt;p&gt;T2 locks B and waits for A&lt;/p&gt;

&lt;p&gt;Neither can proceed — the system is stuck.&lt;/p&gt;

&lt;p&gt;T1 → A (locked), waiting for B&lt;br&gt;&lt;br&gt;
T2 → B (locked), waiting for A&lt;/p&gt;

&lt;p&gt;🧰 Deadlock Handling&lt;/p&gt;

&lt;p&gt;There are three main strategies:&lt;/p&gt;

&lt;p&gt;Deadlock Prevention – design transactions to avoid circular waits (e.g. lock ordering).&lt;/p&gt;

&lt;p&gt;Deadlock Detection – DBMS checks for cycles in the wait-for graph and aborts one transaction.&lt;/p&gt;

&lt;p&gt;Deadlock Recovery – after detection, one transaction is rolled back to break the cycle.&lt;/p&gt;

&lt;p&gt;🧾 Log-Based Recovery&lt;/p&gt;

&lt;p&gt;To recover from crashes or failures, DBMS maintains a log file (a sequential record of all transactions and actions).&lt;/p&gt;

&lt;p&gt;🔹 Types of Log Records&lt;/p&gt;

&lt;p&gt;[Start, T] → Transaction T started&lt;/p&gt;

&lt;p&gt;[Write, T, X, old_value, new_value] → T updated data item X&lt;/p&gt;

&lt;p&gt;[Commit, T] → Transaction T committed&lt;/p&gt;

&lt;p&gt;[Abort, T] → Transaction T aborted&lt;/p&gt;

&lt;p&gt;🧱 Types of Recovery&lt;/p&gt;

&lt;p&gt;Deferred Update (No immediate changes)&lt;/p&gt;

&lt;p&gt;Changes are written to the log first, applied only after commit.&lt;/p&gt;

&lt;p&gt;Immediate Update&lt;/p&gt;

&lt;p&gt;Updates are made in real-time but logged, so uncommitted changes can be undone if needed.&lt;/p&gt;

&lt;p&gt;🔁 Checkpointing&lt;/p&gt;

&lt;p&gt;A checkpoint is a snapshot where all committed transactions’ changes are written to disk — helps speed up recovery after a crash.&lt;/p&gt;

&lt;p&gt;⚡ Summary&lt;br&gt;
Concept Purpose&lt;br&gt;
Transactions    Ensure consistent, reliable operations&lt;br&gt;
Deadlocks   Handle concurrent access conflicts&lt;br&gt;
Log-Based Recovery  Restore data after crash/failure&lt;/p&gt;

&lt;p&gt;💬 Final Thoughts:&lt;br&gt;
Transactions keep databases consistent, logs keep them safe, and deadlock handling keeps them alive under concurrency. Together, they form the backbone of reliable DBMS operations. 💪&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>blockchain</category>
      <category>career</category>
      <category>aws</category>
    </item>
    <item>
      <title>ACID</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Thu, 09 Oct 2025 06:43:50 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/acid-4fip</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/acid-4fip</guid>
      <description>&lt;p&gt;ACID Explained&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Atomicity&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All operations within a transaction must succeed or all should be undone (rollback).&lt;br&gt;
If any step fails (e.g. inserting into one table fails), the entire transaction is rolled back.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Consistency&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Transactions must take the database from one valid state to another, respecting all constraints, triggers, cascades, etc. Invalid data should never slip in.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Isolation&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Concurrent transactions should not see each other’s intermediate (uncommitted) states.&lt;br&gt;
This prevents issues like dirty reads, nonrepeatable reads, phantom reads.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Durability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once a transaction is committed, its result must persist even in the face of crashes, power loss, or system failures.&lt;/p&gt;

&lt;p&gt;✅ Summary&lt;/p&gt;

&lt;p&gt;Atomicity → all or nothing&lt;/p&gt;

&lt;p&gt;Consistency → valid state transitions&lt;/p&gt;

&lt;p&gt;Isolation → no interference between concurrent TXs&lt;/p&gt;

&lt;p&gt;Durability → committed data survives failures&lt;/p&gt;

&lt;p&gt;By following these principles, DBMS remain robust, reliable, and safe—especially in high concurrency / fault-prone environments like financial systems&lt;/p&gt;

</description>
      <category>architecture</category>
      <category>computerscience</category>
      <category>database</category>
    </item>
    <item>
      <title>Cursor +Trigger</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Thu, 09 Oct 2025 05:04:36 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/cursor-trigger-2b55</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/cursor-trigger-2b55</guid>
      <description>&lt;p&gt;Understanding Cursors and Triggers in SQL: A Quick Guide&lt;/p&gt;

&lt;p&gt;When working with SQL databases, two important features to control and automate your data operations are Cursors and Triggers. This post will explain what they are, when to use them, and provide simple examples.&lt;/p&gt;

&lt;p&gt;What is a Cursor?&lt;/p&gt;

&lt;p&gt;A Cursor in SQL is a database object used to retrieve, manipulate, and navigate through a result set row-by-row. Unlike typical SQL operations that work on sets, cursors let you work with data on a row-by-row basis.&lt;/p&gt;

&lt;p&gt;When to use a Cursor?&lt;/p&gt;

&lt;p&gt;You need to perform row-wise operations where set-based operations are not feasible.&lt;/p&gt;

&lt;p&gt;Complex logic requiring step-by-step processing of query results.&lt;/p&gt;

&lt;p&gt;Basic Cursor Example (SQL Server):&lt;br&gt;
DECLARE @StudentID INT;&lt;/p&gt;

&lt;p&gt;DECLARE student_cursor CURSOR FOR&lt;br&gt;
SELECT StudentID FROM Students WHERE Grade &amp;lt; 60;&lt;/p&gt;

&lt;p&gt;OPEN student_cursor;&lt;/p&gt;

&lt;p&gt;FETCH NEXT FROM student_cursor INTO @StudentID;&lt;/p&gt;

&lt;p&gt;WHILE @@FETCH_STATUS = 0&lt;br&gt;
BEGIN&lt;br&gt;
    PRINT 'Student needs improvement: ' + CAST(@StudentID AS VARCHAR);&lt;br&gt;
    -- You can do other row-wise operations here&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FETCH NEXT FROM student_cursor INTO @StudentID;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;END&lt;/p&gt;

&lt;p&gt;CLOSE student_cursor;&lt;br&gt;
DEALLOCATE student_cursor;&lt;/p&gt;

&lt;p&gt;What is a Trigger?&lt;/p&gt;

&lt;p&gt;A Trigger is a special kind of stored procedure that automatically executes in response to certain events on a table or view, such as INSERT, UPDATE, or DELETE.&lt;/p&gt;

&lt;p&gt;Why use Triggers?&lt;/p&gt;

&lt;p&gt;Automatically enforce business rules.&lt;/p&gt;

&lt;p&gt;Maintain audit logs.&lt;/p&gt;

&lt;p&gt;Validate or modify data automatically.&lt;/p&gt;

&lt;p&gt;Basic Trigger Example (SQL Server):&lt;br&gt;
CREATE TRIGGER trg_AuditInsert&lt;br&gt;
ON Employees&lt;br&gt;
AFTER INSERT&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
    INSERT INTO EmployeeAudit (EmployeeID, Action, ActionDate)&lt;br&gt;
    SELECT EmployeeID, 'INSERT', GETDATE()&lt;br&gt;
    FROM inserted;&lt;br&gt;
END;&lt;/p&gt;

&lt;p&gt;This trigger logs every new employee inserted into the Employees table by adding a record to the EmployeeAudit table.&lt;/p&gt;

&lt;p&gt;Combining Cursors and Triggers&lt;/p&gt;

&lt;p&gt;Though cursors and triggers serve different purposes, they can sometimes be used together inside a trigger for complex row-wise processing when set-based logic doesn’t suffice.&lt;/p&gt;

&lt;p&gt;Important Notes:&lt;/p&gt;

&lt;p&gt;Cursors can be slow; use set-based operations whenever possible.&lt;/p&gt;

&lt;p&gt;Triggers should be designed carefully to avoid performance issues or unintended side effects.&lt;/p&gt;

&lt;p&gt;Hope this helps you understand how to work with cursors and triggers!&lt;br&gt;
Feel free to ask for more examples or specific use cases.&lt;/p&gt;

&lt;p&gt;Would you like me to include examples for a specific database system like MySQL, PostgreSQL, or Oracle?&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>cloud</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Database Normalization: From 1NF to 3NF Explained</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Thu, 09 Oct 2025 04:54:38 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/database-normalization-from-1nf-to-3nf-explained-7nl</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/database-normalization-from-1nf-to-3nf-explained-7nl</guid>
      <description>&lt;p&gt;Database Normalization: From 1NF to 3NF Explained&lt;/p&gt;

&lt;p&gt;Database normalization is the process of organizing data in a database to reduce redundancy and improve data integrity. It involves applying a series of rules called normal forms.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First Normal Form (1NF)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Goal: Eliminate repeating groups or arrays.&lt;/p&gt;

&lt;p&gt;Rules:&lt;/p&gt;

&lt;p&gt;Each column must contain atomic (indivisible) values.&lt;/p&gt;

&lt;p&gt;Each record must be unique.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
A table with multiple phone numbers in one column violates 1NF. You split those phone numbers into separate rows or columns.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Second Normal Form (2NF)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Goal: Remove partial dependency.&lt;/p&gt;

&lt;p&gt;Applies to: Tables with composite primary keys.&lt;/p&gt;

&lt;p&gt;Rules:&lt;/p&gt;

&lt;p&gt;Must be in 1NF.&lt;/p&gt;

&lt;p&gt;All non-key attributes must depend on the entire primary key, not just part of it.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
If a table has a composite key (e.g., StudentID + CourseID), and a column depends only on StudentID, move that column to another table.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Third Normal Form (3NF)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Goal: Remove transitive dependency.&lt;/p&gt;

&lt;p&gt;Rules:&lt;/p&gt;

&lt;p&gt;Must be in 2NF.&lt;/p&gt;

&lt;p&gt;Non-key attributes should not depend on other non-key attributes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
If a table has columns StudentID, AdvisorName, and AdvisorPhone, where AdvisorPhone depends on AdvisorName (not the key), separate the advisor information into another table.&lt;/p&gt;

&lt;p&gt;Summary Table:&lt;br&gt;
Normal Form Requirement Goal&lt;br&gt;
1NF Atomic values, unique rows  Eliminate repeating groups&lt;br&gt;
2NF No partial dependency on composite keys Remove partial dependency&lt;br&gt;
3NF No transitive dependency    Remove transitive dependency&lt;br&gt;
Why Normalize?&lt;/p&gt;

&lt;p&gt;Avoid data redundancy&lt;/p&gt;

&lt;p&gt;Prevent update anomalies&lt;/p&gt;

&lt;p&gt;Ensure data integrity and easier maintenance&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvic5b2wq92jpl1dgi24s.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvic5b2wq92jpl1dgi24s.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xv5f80n6txhx66ntriu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6xv5f80n6txhx66ntriu.jpg" alt=" " width="800" height="253"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5xjrxlaaj2fjc3pwxj2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff5xjrxlaaj2fjc3pwxj2.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjtpvn6peshq8o0itvt3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjtpvn6peshq8o0itvt3.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluiv20lmkvpnh4hv8eny.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluiv20lmkvpnh4hv8eny.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bzysydwwiggvhl93lij.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5bzysydwwiggvhl93lij.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farbqk80skxkrge4tm62v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Farbqk80skxkrge4tm62v.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7j6bxhbrhrzkbk9qu71o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7j6bxhbrhrzkbk9qu71o.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frco2xdu1bxu1mou1lnil.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frco2xdu1bxu1mou1lnil.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowahtev4ylg68c8dn9ar.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fowahtev4ylg68c8dn9ar.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ufjxkevsuqu6ohc5qvs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4ufjxkevsuqu6ohc5qvs.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpu9wkdb3nzfae7i6xr9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwpu9wkdb3nzfae7i6xr9.jpg" alt=" " width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>database</category>
      <category>aws</category>
      <category>design</category>
    </item>
    <item>
      <title>DBMS</title>
      <dc:creator>Mugiil .B</dc:creator>
      <pubDate>Mon, 15 Sep 2025 10:01:44 +0000</pubDate>
      <link>https://forem.com/mugiil_b_dc9b71601cba396/dbms-41f</link>
      <guid>https://forem.com/mugiil_b_dc9b71601cba396/dbms-41f</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwetav741itylskv2vu6g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwetav741itylskv2vu6g.jpg" alt=" " width="800" height="395"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99ufq19e0yyb1bhesmzf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F99ufq19e0yyb1bhesmzf.jpg" alt=" " width="800" height="413"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tptzo85og4i0s01bfzo.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3tptzo85og4i0s01bfzo.jpg" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnb22jiiqa00ur3zu5j9c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnb22jiiqa00ur3zu5j9c.jpg" alt=" " width="800" height="415"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faovx5bxdi96epel2ttrl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Faovx5bxdi96epel2ttrl.jpg" alt=" " width="800" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
