<?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>DEV Community: NAHULESWARAN S 24CB031</title>
    <description>The latest articles on DEV Community by NAHULESWARAN S 24CB031 (@nahuleswaran_s24cb031_b4).</description>
    <link>https://dev.to/nahuleswaran_s24cb031_b4</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%2F3556987%2Fbe358955-7fc7-4034-9549-852b771e8a18.png</url>
      <title>DEV Community: NAHULESWARAN S 24CB031</title>
      <link>https://dev.to/nahuleswaran_s24cb031_b4</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nahuleswaran_s24cb031_b4"/>
    <language>en</language>
    <item>
      <title>CRUD Operations in MongoDB — Student Management System</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Sat, 01 Nov 2025 12:24:08 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/crud-operations-in-mongodb-student-management-system-78i</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/crud-operations-in-mongodb-student-management-system-78i</guid>
      <description>&lt;p&gt;🎯 Objective&lt;/p&gt;

&lt;p&gt;To gain hands-on experience performing CRUD (Create, Read, Update, Delete) operations in MongoDB Atlas using a simple college student schema.&lt;/p&gt;

&lt;p&gt;MongoDB is a NoSQL document database that stores data in a flexible, JSON-like format — making it ideal for dynamic and structured data such as student records.&lt;/p&gt;

&lt;p&gt;🧱 Schema Design&lt;/p&gt;

&lt;p&gt;We’ll use a collection called students.&lt;br&gt;
Each student document follows this structure:&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"student_id": "S001",&lt;br&gt;
"name": "Santhosh",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "CSBS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;⚙️Step 1: Create (Insert)&lt;/p&gt;

&lt;p&gt;Insert at least 5 student records into the students collection.&lt;/p&gt;

&lt;p&gt;MongoDB Query:&lt;br&gt;
db.students.insertMany&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
"student_id": "S001",&lt;br&gt;
"name": "Santhosh",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "CSBS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 9&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "S002",&lt;br&gt;
"name": "Priya",&lt;br&gt;
"age": 19,&lt;br&gt;
"department": "CSE",&lt;br&gt;
"year": 1,&lt;br&gt;
"cgpa": 8.7&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "S003",&lt;br&gt;
"name": "Karthik",&lt;br&gt;
"age": 21,&lt;br&gt;
"department": "IT",&lt;br&gt;
"year": 3,&lt;br&gt;
"cgpa": 7.4&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "S004",&lt;br&gt;
"name": "Meena",&lt;br&gt;
"age": 22,&lt;br&gt;
"department": "ECE",&lt;br&gt;
"year": 4,&lt;br&gt;
"cgpa": 8.1&lt;br&gt;
},&lt;br&gt;
{&lt;br&gt;
"student_id": "S005",&lt;br&gt;
"name": "Arun",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "CSBS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 9.2&lt;br&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%2Fwe6n4fr8z2y6875udj6z.png" 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%2Fwe6n4fr8z2y6875udj6z.png" alt=" " width="800" height="371"&gt;&lt;/a&gt;&lt;br&gt;
✅ Result in Atlas:&lt;br&gt;
Inserted 5 documents successfully.&lt;/p&gt;

&lt;p&gt;🔍 Step 2: Read (Query)&lt;/p&gt;

&lt;p&gt;a. Display all student records&lt;br&gt;
db.students.find();&lt;/p&gt;

&lt;p&gt;b. Find all students with CGPA &amp;gt; 8&lt;br&gt;
db.students.find({ cgpa: { $gt: 8 } });&lt;/p&gt;

&lt;p&gt;c. Find students belonging to the Computer Science department&lt;br&gt;
db.students.find({ department: { $in: ["CSE", "CSBS"] } });&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%2F3eqdnr5bwzylntk4nwog.png" 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%2F3eqdnr5bwzylntk4nwog.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;br&gt;
✅ Tip:&lt;br&gt;
Use the MongoDB Atlas “Filter” option to test these queries easily.&lt;/p&gt;

&lt;p&gt;✏️ Step 3: Update&lt;/p&gt;

&lt;p&gt;a. Update the CGPA of a specific student&lt;br&gt;
Example: Update Santhosh’s CGPA to 9.5&lt;br&gt;
db.students.updateOne(&lt;br&gt;
{ student_id: "S001" },&lt;br&gt;
{ $set: { cgpa: 9.5 } }&lt;br&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%2Ftxtd1bppn8792a1rdi45.png" 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%2Ftxtd1bppn8792a1rdi45.png" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;br&gt;
Modified 1 document.&lt;/p&gt;

&lt;p&gt;b. Increase the year of study for all 3rd-year students by 1&lt;br&gt;
db.students.updateMany(&lt;br&gt;
{ year: 3 },&lt;br&gt;
{ $inc: { year: 1 } }&lt;br&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%2Fbk6wae304az87fp4t3cx.png" 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%2Fbk6wae304az87fp4t3cx.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;br&gt;
✅ Output:&lt;br&gt;
Shows how many documents were modified.&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%2Fqujiqbfq6385xu9si8w1.png" 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%2Fqujiqbfq6385xu9si8w1.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;br&gt;
Step 4: Delete&lt;/p&gt;

&lt;p&gt;a. Delete one student record by student_id&lt;br&gt;
Example: Delete student S003&lt;br&gt;
db.students.deleteOne({ student_id: "S003" });&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%2F1m16wsgiinm2kevn9pv2.png" 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%2F1m16wsgiinm2kevn9pv2.png" alt=" " width="800" height="178"&gt;&lt;/a&gt;&lt;br&gt;
b. Delete all students having CGPA &amp;lt; 7.5&lt;br&gt;
db.students.deleteMany({ cgpa: { $lt: 7.5 } });&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%2F6kpmyfg3qonv3e4doetv.png" 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%2F6kpmyfg3qonv3e4doetv.png" alt=" " width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅ Output:&lt;br&gt;
Displays number of deleted documents.&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%2Fuhob8wzs0v66p5zn0125.png" 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%2Fuhob8wzs0v66p5zn0125.png" alt=" " width="800" height="281"&gt;&lt;/a&gt;&lt;br&gt;
📤Step 5: Export the Collection&lt;/p&gt;

&lt;p&gt;After performing all CRUD operations, you can export your collection from MongoDB Atlas:&lt;/p&gt;

&lt;p&gt;🪶 Steps:&lt;/p&gt;

&lt;p&gt;Go to your cluster → Collections → Select students.&lt;br&gt;
Click Export Collection.&lt;br&gt;
Choose JSON or CSV format.&lt;br&gt;
Download your file.&lt;br&gt;
📸 Deliverables&lt;/p&gt;

&lt;p&gt;✅ MongoDB Queries (as shown above)&lt;br&gt;
✅ Screenshots of query results (from Atlas)&lt;br&gt;
✅ Exported students.json or students.csv file&lt;/p&gt;

&lt;p&gt;🌟** Conclusion**&lt;br&gt;
This hands-on lab demonstrates how easily MongoDB handles CRUD operations using a flexible schema.&lt;br&gt;
The students collection can be expanded further to include additional attributes like address, email, or course list — giving you real-world database experience for college or project work. &lt;/p&gt;

</description>
      <category>mongodb</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>Database Normalization: From 1NF to 3NF</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Fri, 10 Oct 2025 05:07:34 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/database-normalization-from-1nf-to-3nf-1mog</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/database-normalization-from-1nf-to-3nf-1mog</guid>
      <description>&lt;p&gt;n this blog, we’ll understand how to normalize a database table step-by-step from 1NF → 2NF → 3NF using clear SQL examples and outputs.&lt;/p&gt;

&lt;p&gt;We’ll start from a single unnormalized table containing student, course, and instructor data, and then progressively decompose it to remove redundancy and anomalies.&lt;/p&gt;

&lt;p&gt;Identify Anomalies&lt;br&gt;
Insertion Anomaly: We can’t add a new student without assigning a course.&lt;br&gt;
Update Anomaly: If Dr. Kumar changes his phone number, multiple rows must be updated.&lt;br&gt;
Deletion Anomaly: If Arjun drops all courses, his details will be deleted too.&lt;/p&gt;

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

&lt;p&gt;Create a table&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%2F3ns3qkn5dycqomiofcsj.png" 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%2F3ns3qkn5dycqomiofcsj.png" alt=" " width="800" height="623"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert data&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%2Fk156daq2bvt2didol2pk.png" 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%2Fk156daq2bvt2didol2pk.png" alt=" " width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2Fkik2lq6gt2l5n63gprkq.png" 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%2Fkik2lq6gt2l5n63gprkq.png" alt=" " width="800" height="588"&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%2Fddjjviw5dspl9exvs6qs.png" 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%2Fddjjviw5dspl9exvs6qs.png" alt=" " width="800" height="588"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Remove partial dependencies.&lt;br&gt;
Create tables separately&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%2F1502hheripa9ltas2m4t.png" 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%2F1502hheripa9ltas2m4t.png" alt=" " width="800" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert values into the respected table&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%2Fc6u3f7pi4xc2x2se6umr.png" 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%2Fc6u3f7pi4xc2x2se6umr.png" alt=" " width="800" height="648"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2F0urwjeqlhab8cpgbb095.png" 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%2F0urwjeqlhab8cpgbb095.png" alt=" " width="800" height="595"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next&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%2Fkfv8obciftdtkns0hisl.png" 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%2Fkfv8obciftdtkns0hisl.png" alt=" " width="800" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2Fm5favrin4oim1jk8941a.png" 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%2Fm5favrin4oim1jk8941a.png" alt=" " width="800" height="580"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next&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%2Fbngukogwpwabx665q6gi.png" 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%2Fbngukogwpwabx665q6gi.png" alt=" " width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2F9sgw9pm6f9pyhvelghgc.png" 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%2F9sgw9pm6f9pyhvelghgc.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Next&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%2F98x23fo9im7qbvyvnndg.png" 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%2F98x23fo9im7qbvyvnndg.png" alt=" " width="800" height="621"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2Fh9dkeu0r1bmu4bhu3ilz.png" 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%2Fh9dkeu0r1bmu4bhu3ilz.png" alt=" " width="800" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Remove transitive dependencies — InstructorPhone depends on Instructor, not directly on Course.&lt;/p&gt;

&lt;p&gt;In this case, the InstructorPhone depends on Instructor, not directly on Course.&lt;br&gt;
So we already separated Instructors, which makes this 3NF compliant.&lt;/p&gt;

&lt;p&gt;Tables in 3NF:&lt;/p&gt;

&lt;p&gt;1.Students(StudentID, StudentName)&lt;br&gt;
2.Instructors(Instructor, InstructorPhone)&lt;br&gt;
3.Courses(CourseID, CourseName, Instructor)&lt;br&gt;
4,StudentCourses(StudentID, CourseID)&lt;/p&gt;

&lt;p&gt;Query Using JOINs&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%2F40vxstugs1l07lwib0r3.png" 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%2F40vxstugs1l07lwib0r3.png" alt=" " width="800" height="591"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This structure ensures:&lt;br&gt;
No redundant instructor or course info&lt;br&gt;
Easy updates and clean data relationships&lt;br&gt;
Faster JOIN queries in real databases&lt;/p&gt;

&lt;p&gt;We achieved a clean, normalized schema that eliminates anomalies and improves consistency.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Cursor +Trigger</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Fri, 10 Oct 2025 04:45:58 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/cursor-trigger-18mj</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/cursor-trigger-18mj</guid>
      <description>&lt;p&gt;In SQL, sometimes you need more than just basic queries.&lt;br&gt;
What if you want to process each row individually?&lt;br&gt;
Or automatically record every change happening in your table?&lt;/p&gt;

&lt;p&gt;That’s where Cursors and Triggers come in.&lt;/p&gt;

&lt;p&gt;Let’s walk through both with clear examples, outputs, and real-world use cases!&lt;/p&gt;

&lt;p&gt;A Cursor in SQL works like a pointer that allows you to process rows one by one from a query result.&lt;br&gt;
It’s useful when you need conditional logic or procedural control inside your SQL block.&lt;/p&gt;

&lt;p&gt;A Trigger is like a background assistant that automatically executes when a specific event occurs. For example, when someone inserts, updates, or deletes data.&lt;/p&gt;

&lt;p&gt;Cursor Example&lt;br&gt;
Create a table&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%2Fyhgzfj71f832obe8sl71.png" 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%2Fyhgzfj71f832obe8sl71.png" alt=" " width="800" height="638"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert the values&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%2F1w6aagj0tweecvnech4e.png" 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%2F1w6aagj0tweecvnech4e.png" alt=" " width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Output&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%2F8opwz0a37ao8claaeqlq.png" 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%2F8opwz0a37ao8claaeqlq.png" alt=" " width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cursor Code (Employees with Salary &amp;gt; 50,000)&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%2Fgc2pnqtvn1kchk54vvrs.png" 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%2Fgc2pnqtvn1kchk54vvrs.png" alt=" " width="800" height="605"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Trigger Example (AFTER INSERT Trigger)&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%2Fr2oq1t6ar7cl8edbkiw4.png" 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%2Fr2oq1t6ar7cl8edbkiw4.png" alt=" " width="800" height="581"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create table Student_Audit&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%2Fac0sv5vs0tzexd6dcyqz.png" 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%2Fac0sv5vs0tzexd6dcyqz.png" alt=" " width="800" height="620"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create AFTER INSERT Trigger&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%2Fmysfuypbavqrl9nzv0px.png" 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%2Fmysfuypbavqrl9nzv0px.png" alt=" " width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert Data into table and get output&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%2Ffdc2iwokqem8rfbswbop.png" 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%2Ffdc2iwokqem8rfbswbop.png" alt=" " width="800" height="187"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SUMMARY&lt;br&gt;
1.Cursors allow row-by-row processing of query results.&lt;br&gt;
2.Triggers automate actions on data changes (here, logging inserts).&lt;br&gt;
Both Cursors and Triggers bring life to SQL databases.&lt;br&gt;
:Use Cursors when you need fine-grained control.&lt;br&gt;
:Use Triggers to automate repetitive monitoring or logging.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>ACID Properties in DBMS</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Fri, 10 Oct 2025 04:39:10 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/acid-properties-in-dbms-2o13</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/acid-properties-in-dbms-2o13</guid>
      <description>&lt;p&gt;Databases power almost every application we use daily—from banking systems to e-commerce platforms. To ensure data remains reliable, databases follow the ACID principles: Atomicity, Consistency, Isolation, and Durability.&lt;/p&gt;

&lt;p&gt;Setup the Schema&lt;br&gt;
We’ll create a Loans table that stores customer loan detail&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%2Fi1jpn5rj4lrhrq0asfil.png" 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%2Fi1jpn5rj4lrhrq0asfil.png" alt=" " width="800" height="462"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enter the values&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%2Fo1xuofe2u2950uudthml.png" 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%2Fo1xuofe2u2950uudthml.png" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Result&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%2Fndkgt0dnfktfjqa7rqx8.png" 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%2Fndkgt0dnfktfjqa7rqx8.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ATOMICITY&lt;br&gt;
All operations in a transaction must succeed or none should.&lt;/p&gt;

&lt;p&gt;Update and roll back&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%2F5w0xqqilpdsdtsqz7zu1.png" 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%2F5w0xqqilpdsdtsqz7zu1.png" alt=" " width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Consistency&lt;/p&gt;

&lt;p&gt;Transactions must bring the database from one valid state to another. Invalid data should not enter the system.&lt;/p&gt;

&lt;p&gt;Alter&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%2Fy2ss3979t5f0moeb56xu.png" 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%2Fy2ss3979t5f0moeb56xu.png" alt=" " width="800" height="543"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isolation&lt;/p&gt;

&lt;p&gt;Concurrent transactions should not affect each other’s intermediate results.&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%2F9wbg3z49nm22eee2ya9j.png" 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%2F9wbg3z49nm22eee2ya9j.png" alt=" " width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isolation prevents dirty reads between transactions.&lt;/p&gt;

&lt;p&gt;Durability&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%2Fp7ugr0rczzl55u7ucn61.png" 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%2Fp7ugr0rczzl55u7ucn61.png" alt=" " width="800" height="584"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Atomicity → All or nothing.&lt;br&gt;
Consistency→ Data always valid.&lt;br&gt;
Isolation → Transactions don’t interfere.&lt;br&gt;
Durability→ Data persists after commit.&lt;br&gt;
By applying ACID principles, databases remain reliable, fault-tolerant, and consistent even in high-concurrency environments like banking systems&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log Based Recovery</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Fri, 10 Oct 2025 04:31:16 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/transactions-deadlocks-log-based-recovery-5dog</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/transactions-deadlocks-log-based-recovery-5dog</guid>
      <description>&lt;p&gt;Managing database transactions safely is crucial to ensure data integrity and prevent issues like partial updates or deadlocks. In this tutorial, we’ll explore transactions, deadlocks, and log-based recovery using a simple Accounts table.&lt;/p&gt;

&lt;p&gt;Let’s create a table&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%2F7nyl5z47ucji87lm9a56.png" 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%2F7nyl5z47ucji87lm9a56.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert values&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%2Fi0gwnbf0k05wb09mlqf3.png" 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%2Fi0gwnbf0k05wb09mlqf3.png" alt=" " width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Transaction – Atomicity &amp;amp; Rollback&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%2Fc6pho15ta9xpxdwrftj0.png" 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%2Fc6pho15ta9xpxdwrftj0.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ROLLBACK&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%2Frjui9tpxg3elcm69wlpz.png" 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%2Frjui9tpxg3elcm69wlpz.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&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%2Flgu3bdcj5gf5kuvu33cc.png" 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%2Flgu3bdcj5gf5kuvu33cc.png" alt=" " width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deadlock Simulation&lt;/p&gt;

&lt;p&gt;Deadlocks occur when two transactions block each other waiting for resources.&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%2Fhge96vzf72w2829x5t7g.png" 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%2Fhge96vzf72w2829x5t7g.png" alt=" " width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;RESULT&lt;br&gt;
ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction&lt;/p&gt;

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

&lt;p&gt;Modern DBMS (MySQL/PostgreSQL) automatically maintain transaction logs. These logs help undo changes if a transaction fails.&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&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%2Faode9cu03p9rxaryayz0.png" 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%2Faode9cu03p9rxaryayz0.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&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%2Fcw6q18jfb8q5qzz9dj07.png" 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%2Fcw6q18jfb8q5qzz9dj07.png" alt=" " width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Transactions guarantee atomicity; either all operations succeed or none.&lt;br&gt;
Deadlocks occur when transactions block each other; they must be handled with care.&lt;br&gt;
Log-based recovery ensures durability and recoverability.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>INDEXING - HASHING - AND -QUERY</title>
      <dc:creator>NAHULESWARAN S 24CB031</dc:creator>
      <pubDate>Fri, 10 Oct 2025 04:24:57 +0000</pubDate>
      <link>https://dev.to/nahuleswaran_s24cb031_b4/indexing-hashing-and-query-4op8</link>
      <guid>https://dev.to/nahuleswaran_s24cb031_b4/indexing-hashing-and-query-4op8</guid>
      <description>&lt;p&gt;Mastering Indexing in SQL: B-Tree, B+Tree, and Hash Index Examples&lt;/p&gt;

&lt;p&gt;Indexing is one of the most powerful ways to boost the performance of your SQL queries. In this tutorial, we’ll explore B-Tree, B+Tree, and Hash indexes step-by-step using a Students table example.&lt;/p&gt;

&lt;p&gt;We’ll:&lt;br&gt;
✅ Create a Students table&lt;br&gt;
✅ Insert sample data&lt;br&gt;
✅ Build three types of indexes&lt;br&gt;
✅ Run queries using each index&lt;br&gt;
✅ Observe how indexing improves retrieval speed&lt;/p&gt;

&lt;p&gt;Create the Table&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%2Fi8hlncfn4l9nuw75bemb.png" 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%2Fi8hlncfn4l9nuw75bemb.png" alt=" " width="800" height="667"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Insert Sample Records&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%2Fx25xym0gcj4l1l38gh4j.png" 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%2Fx25xym0gcj4l1l38gh4j.png" alt=" " width="614" height="715"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a B-Tree Index on roll_no&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%2Fcza2egvrcm6vk7sf5232.png" 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%2Fcza2egvrcm6vk7sf5232.png" alt=" " width="800" height="636"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Query Using the B-Tree Index&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%2F9ekir40o8w86v3nphq4p.png" 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%2F9ekir40o8w86v3nphq4p.png" alt=" " width="800" height="644"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Query Using the B+ Tree Index&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%2Fv08qgwozegfa3chuvg7q.png" 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%2Fv08qgwozegfa3chuvg7q.png" alt=" " width="800" height="702"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Query Using the Hash Index&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%2Fc4t95olwg4g84nwkv5v4.png" 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%2Fc4t95olwg4g84nwkv5v4.png" alt=" " width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion&lt;/p&gt;

&lt;p&gt;In this blog, we learned how to:&lt;br&gt;
-Create B-Tree, B+Tree, and Hash indexes&lt;br&gt;
-Execute optimized queries&lt;br&gt;
-Understand which index type fits which use case&lt;/p&gt;

&lt;p&gt;Indexes make retrieval blazing fast but also consume storage and slow down updates slightly. So, always index wisely!&lt;/p&gt;

</description>
      <category>performance</category>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
    </item>
  </channel>
</rss>
