<?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: Harish T</title>
    <description>The latest articles on DEV Community by Harish T (@harish_t_aa27d59c9c2493a5).</description>
    <link>https://dev.to/harish_t_aa27d59c9c2493a5</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%2F3462695%2F65b23104-e6e4-48b8-87e5-35fc90e728ac.jpg</url>
      <title>DEV Community: Harish T</title>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/harish_t_aa27d59c9c2493a5"/>
    <language>en</language>
    <item>
      <title>Cursor + Trigger</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 12:52:53 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/cursor-trigger-cj8</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/cursor-trigger-cj8</guid>
      <description>&lt;p&gt;In this post, we'll explore two powerful tools in relational databases:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursors&lt;/strong&gt; — for iterating row-by-row over query results&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Triggers&lt;/strong&gt; — for automating logic in response to data changes&lt;/p&gt;

&lt;p&gt;We’ll cover what they are, how to use them, and example use-cases.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What Is a Cursor?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A cursor is a database object that lets you process query results row by row, instead of processing the entire result set at once. This is useful when you need to run procedural logic for each row, e.g. for validations, formatting, or complex computations.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Employees Table&lt;/strong&gt;&lt;br&gt;
CR EATE TABLE Employee (&lt;br&gt;
  EmpID    INT PRIMARY KEY,&lt;br&gt;
  EmpName  VARCHAR(50),&lt;br&gt;
  Salary   INT&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%2Fjzi9nhrki2b9budo854u.webp" 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%2Fjzi9nhrki2b9budo854u.webp" alt=" " width="800" height="646"&gt;&lt;/a&gt;&lt;br&gt;
INSERT INTO Employee VALUES&lt;br&gt;
  (1, 'Arjun', 45000),&lt;br&gt;
  (2, 'Priya', 60000),&lt;br&gt;
  (3, 'Kiran', 75000),&lt;br&gt;
  (4, 'Meera', 48000),&lt;br&gt;
  (5, 'Rahul', 90000); &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%2Fgzh5mg9wj5jr42vm9tw9.webp" 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%2Fgzh5mg9wj5jr42vm9tw9.webp" alt=" " width="800" height="638"&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%2F04rcf3478q8lt2as7hsc.webp" 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%2F04rcf3478q8lt2as7hsc.webp" alt=" " width="800" height="631"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cursor That Fetches High-Salary Employees&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let’s say you want to print out names of employees whose salary exceeds 50,000.&lt;/p&gt;

&lt;p&gt;CODE:&lt;/p&gt;

&lt;p&gt;DECLARE&lt;br&gt;
  CURSOR high_salary_cursor IS&lt;br&gt;
    SELECT EmpName&lt;br&gt;
    FROM Employee&lt;br&gt;
    WHERE Salary &amp;gt; 50000;&lt;/p&gt;

&lt;p&gt;v_name Employee.EmpName%TYPE;&lt;br&gt;
BEGIN&lt;br&gt;
  OPEN high_salary_cursor;&lt;br&gt;
  LOOP&lt;br&gt;
    FETCH high_salary_cursor INTO v_name;&lt;br&gt;
    EXIT WHEN high_salary_cursor%NOTFOUND;&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE('Employee: ' || v_name);&lt;br&gt;
  END LOOP;&lt;br&gt;
  CLOSE high_salary_cursor;&lt;br&gt;
END;&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%2Ft9unu7bv4238uhy7ejfk.webp" 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%2Ft9unu7bv4238uhy7ejfk.webp" alt=" " width="800" height="624"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;What Is a Trigger?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A trigger is a named procedure that fires automatically in response to certain events on a table — INSERT, UPDATE, or DELETE. Triggers are useful when you want to enforce rules, maintain audit logs, or replicate changes.&lt;br&gt;
&lt;strong&gt;Students + Audit Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create Student and Audit Tables&lt;br&gt;
CREATE TABLE Studt (&lt;br&gt;
StudentID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
StudentName VARCHAR(50)&lt;br&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%2F7qc4qvdbegzqn3v6rvfd.webp" 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%2F7qc4qvdbegzqn3v6rvfd.webp" alt=" " width="800" height="626"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Student_Audit (&lt;br&gt;
AuditID INT GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br&gt;
StudentID VARCHAR(10),&lt;br&gt;
StudentName VARCHAR(50),&lt;br&gt;
ActionDate TIMESTAMP DEFAULT CURRENT_TIMESTAMP&lt;br&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%2Fkvfxeva099uv7is9gvzo.webp" 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%2Fkvfxeva099uv7is9gvzo.webp" alt=" " width="800" height="617"&gt;&lt;/a&gt;&lt;br&gt;
CREATE OR REPLACE TRIGGER student_insert_audit&lt;br&gt;
AFTER INSERT ON Students&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
INSERT INTO Student_Audit (StudentID, StudentName)&lt;br&gt;
VALUES (:NEW.StudentID, :NEW.StudentName);&lt;br&gt;
END;&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%2Fodcv12f09robvm4b63po.webp" 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%2Fodcv12f09robvm4b63po.webp" alt=" " width="800" height="639"&gt;&lt;/a&gt;&lt;br&gt;
Insert Data into Studt&lt;br&gt;
INSERT INTO Students VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Students VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Students VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;SELECT * FROM Student_Audit;&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%2F63y1oic5yy2fq6et7q7u.webp" 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%2F63y1oic5yy2fq6et7q7u.webp" alt=" " width="800" height="209"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When &amp;amp; Why to Use Cursors and Triggers&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Cursor&lt;/strong&gt;&lt;br&gt;
   Use Case: Row-by-row logic (e.g. complex processing per record)&lt;br&gt;
   Caution: Can be slow on large datasets — try set-based SQL where possible.&lt;br&gt;
&lt;strong&gt;Trigger&lt;/strong&gt;&lt;br&gt;
 Use case: Automatic enforcement (audit logs, validations, replication)&lt;br&gt;
 Caution: Make triggers simple and predictable, debugging can get tricky&lt;/p&gt;

&lt;p&gt;Use cursors when procedural logic is hard or impossible to express purely with SQL.&lt;/p&gt;

&lt;p&gt;Use triggers to ensure data consistency, enforce business rules, or maintain history without manual invocation.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>sql</category>
    </item>
    <item>
      <title>Normalization In DBMS</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 05:11:34 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/normalization-in-dbms-4l9j</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/normalization-in-dbms-4l9j</guid>
      <description>&lt;p&gt;&lt;strong&gt;Simplifying Database Normalization: From 1NF to 3NF&lt;/strong&gt;&lt;br&gt;
When you start designing a database, it’s easy to store everything in one big table.&lt;br&gt;
But soon, you’ll face duplicate data and inconsistency issues.&lt;br&gt;
That’s where normalization comes in — the process of organizing data step-by-step to make it efficient and logical.&lt;/p&gt;

&lt;p&gt;In this post, we’ll learn 1NF, 2NF, and 3NF using a simple Student–Course example.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1NF – All Data in One Table&lt;/strong&gt;&lt;br&gt;
We start with a single table that contains students, their courses, and instructors.&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%2Ffc4135kjugfe7lgoygpd.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%2Ffc4135kjugfe7lgoygpd.png" alt=" " width="800" height="643"&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%2Fhwfxic97nicp0vbv8saq.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%2Fhwfxic97nicp0vbv8saq.png" alt=" " width="800" height="639"&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%2Fmcmyr4vbo312l2kxniav.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%2Fmcmyr4vbo312l2kxniav.png" alt=" " width="800" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Problem: Instructor names and course data repeat multiple times.&lt;br&gt;
Let’s fix that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2NF – Splitting Data into Logical Tables&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we’ll separate the data into Students, Courses, and a linking table StudentCourses.&lt;/p&gt;

&lt;p&gt;Table for Students&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%2Fw2vl0grkh224xan5xc3k.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%2Fw2vl0grkh224xan5xc3k.png" alt=" " width="800" height="626"&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%2Fvap5hb88f5ckaqwa56y2.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%2Fvap5hb88f5ckaqwa56y2.png" alt=" " width="800" height="634"&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%2Fr4dkmzcerl5humyyuiv4.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%2Fr4dkmzcerl5humyyuiv4.png" alt=" " width="800" height="627"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Table for Courses&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%2Fm1y8vkc8isibnhwmefpg.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%2Fm1y8vkc8isibnhwmefpg.png" alt=" " width="800" height="634"&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%2F9uc34ukg8v316il378tn.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%2F9uc34ukg8v316il378tn.png" alt=" " width="800" height="632"&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%2Fmpsj3o6ochw6dj53coxu.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%2Fmpsj3o6ochw6dj53coxu.png" alt=" " width="800" height="632"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Table for Instructors&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%2F82w0szivsi7urh94eyyx.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%2F82w0szivsi7urh94eyyx.png" alt=" " width="800" height="611"&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%2Fu5zmjkzvcowr11olmoow.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%2Fu5zmjkzvcowr11olmoow.png" alt=" " width="800" height="639"&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%2Fzt11s1hhh56b5ddhr6cc.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%2Fzt11s1hhh56b5ddhr6cc.png" alt=" " width="800" height="630"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Table for Studentcourses&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%2Fqtkelkjox51ysme1r6xq.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%2Fqtkelkjox51ysme1r6xq.png" alt=" " width="800" height="623"&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%2F0oa39h7swkice73ef2yh.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%2F0oa39h7swkice73ef2yh.png" alt=" " width="800" height="632"&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%2Fhytmvemwz3p8edj61a1n.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%2Fhytmvemwz3p8edj61a1n.png" alt=" " width="800" height="645"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;3NF – Removing Transitive Dependencies&lt;/strong&gt;&lt;br&gt;
emove transitive dependency (non-key attributes shouldn’t depend on other non-keys).&lt;/p&gt;

&lt;p&gt;👉 In our 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;Final tables in 3NF:&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Final Combined View&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Now we can join everything neatly using an SQL JOIN.&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%2Frb1ahv0m7dkyxou7x3ub.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%2Frb1ahv0m7dkyxou7x3ub.png" alt=" " width="800" height="646"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;br&gt;
By breaking down our initial table step by step:&lt;/p&gt;

&lt;p&gt;1NF → Atomic values&lt;br&gt;
2NF → Remove partial dependencies&lt;br&gt;
3NF → Remove transitive dependencies&lt;br&gt;
We achieved a clean, normalized schema that eliminates anomalies and improves consistency.&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>computerscience</category>
      <category>beginners</category>
    </item>
    <item>
      <title>ACID Properties in Database</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 04:59:04 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/acid-properties-in-database-27be</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/acid-properties-in-database-27be</guid>
      <description>&lt;p&gt;&lt;strong&gt;Mastering ACID Properties in Databases with SQL&lt;/strong&gt;&lt;br&gt;
Every reliable database follows the &lt;strong&gt;ACID&lt;/strong&gt; principles &lt;strong&gt;Atomicity, Consistency, Isolation, and Durability&lt;/strong&gt; to ensure data remains accurate and dependable even under system failures.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll demonstrate ACID properties with SQL transactions using a simple Loan Management example.&lt;/p&gt;

&lt;p&gt;Step 1: Setup the Schema&lt;/p&gt;

&lt;p&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%2F0nlu6orpzb12e9dzguas.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%2F0nlu6orpzb12e9dzguas.png" alt=" " width="800" height="536"&gt;&lt;/a&gt;&lt;br&gt;
Enter the values to be inserted in 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%2F8qllxwsjgxmndk80xdd8.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%2F8qllxwsjgxmndk80xdd8.png" alt=" " width="800" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Display&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%2Fugiw8loijaqtxacev10a.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%2Fugiw8loijaqtxacev10a.png" alt=" " width="800" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Atomicity — “All or Nothing”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concept&lt;/strong&gt;: Either all statements in a transaction succeed, or none are applied&lt;br&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%2F2tqr2luobu7ey6xtfh16.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%2F2tqr2luobu7ey6xtfh16.png" alt=" " width="800" height="564"&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%2Fz971f1l2mnk2uk2595lb.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%2Fz971f1l2mnk2uk2595lb.png" alt=" " width="800" height="536"&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%2Fasnaq5d2yzgtoc1zdms7.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%2Fasnaq5d2yzgtoc1zdms7.png" alt=" " width="800" height="523"&gt;&lt;/a&gt;&lt;br&gt;
Atomicity ensures no partial updates happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency — “Valid Data Always”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concept&lt;/strong&gt;: The database should always remain in a valid state before and after a transaction.&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%2Fccvg846ik1lzdvk2df78.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%2Fccvg846ik1lzdvk2df78.png" alt=" " width="800" height="546"&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%2F2uj3ds38v6d8e42e65wj.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%2F2uj3ds38v6d8e42e65wj.png" alt=" " width="800" height="541"&gt;&lt;/a&gt;&lt;br&gt;
Consistency ensures that invalid records (like negative dues) are never stored.&lt;br&gt;
&lt;strong&gt;Isolation — “Transactions Work Independently”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Concept&lt;/strong&gt;: When multiple users perform transactions at the same time, one should not see another’s uncommitted 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%2F6gzy4sy388c014m01at7.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%2F6gzy4sy388c014m01at7.png" alt=" " width="800" height="505"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Isolation ensures accurate reads — no dirty or uncommitted data is visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Durability — “Data That Stays Forever”&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Concept&lt;/strong&gt;: Once a transaction is committed, it remains even after a crash or restart.&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%2Fsi80zum5eh0ok9e991c2.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%2Fsi80zum5eh0ok9e991c2.png" alt=" " width="800" height="563"&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%2F6y0stxcwzhyp0knw0e47.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%2F6y0stxcwzhyp0knw0e47.png" alt=" " width="800" height="556"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Property&lt;/strong&gt;     | Meaning          | SQL Feature Demonstrated&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atomicity&lt;/strong&gt;   | All or nothing   | &lt;code&gt;START TRANSACTION&lt;/code&gt; + &lt;code&gt;ROLLBACK&lt;/code&gt; &lt;br&gt;
 &lt;strong&gt;Consistency&lt;/strong&gt; | Data validity    | &lt;code&gt;CHECK&lt;/code&gt; constraint&lt;br&gt;&lt;br&gt;
 &lt;strong&gt;Isolation&lt;/strong&gt;   | No interference  | Parallel sessions&lt;br&gt;&lt;br&gt;
 &lt;strong&gt;Durability&lt;/strong&gt;  | Data persistence | &lt;code&gt;COMMIT&lt;/code&gt; survives restart        &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log Based Recovery</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 04:47:18 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/transactions-deadlocks-log-based-recovery-cno</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/transactions-deadlocks-log-based-recovery-cno</guid>
      <description>&lt;p&gt;&lt;strong&gt;Understanding Transactions, Deadlocks, and Log-Based Recovery in SQL&lt;/strong&gt;&lt;br&gt;
Working with databases involves more than just storing and retrieving data. To ensure your applications are reliable, consistent, and recoverable, you need to understand transactions, deadlocks, and log-based recovery. Let’s explore these concepts step by step using a simple Accounts table.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting Up the Database&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We’ll start with a simple table to simulate bank accounts&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%2F2yjvjvfaa4bsfjfml3bi.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%2F2yjvjvfaa4bsfjfml3bi.png" alt=" " width="800" height="523"&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%2Fb2f87i0uch4s9bclfyrp.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%2Fb2f87i0uch4s9bclfyrp.png" alt=" " width="800" height="486"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Transaction – Atomicity &amp;amp; Rollback&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine transferring 500 from Alice to Bob. Using a transaction ensures that either both changes happen, or none happen&lt;/p&gt;

&lt;p&gt;START TRANSACTION;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance - 500&lt;br&gt;
WHERE name = 'Alice';&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%2Fjnz6e19nszsscq4yhl77.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%2Fjnz6e19nszsscq4yhl77.png" alt=" " width="800" height="485"&gt;&lt;/a&gt;&lt;br&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%2Fgd8xr5i75dq6dllj0qq4.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%2Fgd8xr5i75dq6dllj0qq4.png" alt=" " width="800" height="489"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance + 500&lt;br&gt;
WHERE name = 'Bob';&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%2Fg63k6ajr14kw91ba731j.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%2Fg63k6ajr14kw91ba731j.png" alt=" " width="800" height="489"&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%2Fci7nqgrgxns20p454n2h.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%2Fci7nqgrgxns20p454n2h.png" alt=" " width="788" height="769"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Simulating Deadlocks&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Deadlocks happen when two transactions block each other. Open two SQL sessions:&lt;br&gt;
Session 1&lt;br&gt;
START TRANSACTION;&lt;br&gt;
SELECT * FROM Accounts WHERE name='Alice' FOR UPDATE;&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name='Bob';&lt;/p&gt;

&lt;p&gt;Session 2&lt;br&gt;
START TRANSACTION;&lt;br&gt;
SELECT * FROM Accounts WHERE name='Bob' FOR UPDATE;&lt;br&gt;
UPDATE Accounts SET balance = balance - 100 WHERE name='Alice';&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%2Fp152ucakhrvggfl2g9qu.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%2Fp152ucakhrvggfl2g9qu.png" alt=" " width="800" height="484"&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;br&gt;
Deadlocks occur when two transactions wait for each other indefinitely. Always design transactions to acquire locks in the same order to prevent them.&lt;/p&gt;

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

&lt;p&gt;Most modern databases like MySQL (binary logs) or PostgreSQL (WAL) automatically log all transactions. This allows you to undo operations if needed.&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%2Fhpohlc7bux4fjpsgz8fj.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%2Fhpohlc7bux4fjpsgz8fj.png" alt=" " width="800" height="579"&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%2F3wn4j7f79zbc5m6fjufu.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%2F3wn4j7f79zbc5m6fjufu.png" alt=" " width="800" height="693"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Transactions ensure that operations are atomic and consistent.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deadlocks can happen when multiple transactions compete for resources; detect and prevent carefully.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Log-based recovery guarantees that your database can undo or redo transactions for durability and consistency.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>beginners</category>
      <category>sql</category>
    </item>
    <item>
      <title>Indexing,Hashing, and Query</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 04:30:42 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/indexinghashing-and-query-23hc</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/indexinghashing-and-query-23hc</guid>
      <description>&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%2Ftfe9pr4ky18epcj9z40c.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%2Ftfe9pr4ky18epcj9z40c.png" alt=" " width="800" height="665"&gt;&lt;/a&gt;&lt;br&gt;
NSERT INTO Students VALUES&lt;br&gt;
(101, 'Arun', 'CSBS', 8.5),&lt;br&gt;
(102, 'Mathan', 'ECE', 8.8),&lt;br&gt;
(103, 'Karthik', 'MECH', 6.9),&lt;br&gt;
(104, 'Hareesh', 'CSE', 9.1),&lt;br&gt;
(105, 'Ravi', 'EEE', 7.2),&lt;br&gt;
(106, 'Srivishal', 'CSBS', 8.8),&lt;br&gt;
(107, 'Vignesh', 'IT', 8.0),&lt;br&gt;
(108, 'Harish', 'CSE', 9.3),&lt;br&gt;
(109, 'Deepak', 'ECE', 7.5),&lt;br&gt;
(110, 'Nidheesh', 'CSBS', 9.0),&lt;br&gt;
(111, 'Pradeep', 'MECH', 6.8),&lt;br&gt;
(112, 'Lokhitha', 'EEE', 7.6),&lt;br&gt;
(113, 'Raj', 'CSBS', 8.7),&lt;br&gt;
(114, 'Divya', 'IT', 8.4),&lt;br&gt;
(115, 'Saravanan', 'CSE', 9.2),&lt;br&gt;
(116, 'Monika', 'ECE', 7.9),&lt;br&gt;
(117, 'Ganesh', 'MECH', 6.7),&lt;br&gt;
(118, 'Kavya', 'CSBS', 9.1),&lt;br&gt;
(119, 'Surya', 'EEE', 7.3),&lt;br&gt;
(120, 'Anitha', 'IT', 8.2);&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%2Fw3dcbvyqbu2aile0owdx.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%2Fw3dcbvyqbu2aile0owdx.png" alt=" " width="642" height="725"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a B-Tree Index on roll_no&lt;br&gt;
CREATE INDEX idx_rollno ON Students(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%2Fee5qungxmnxa7csjzq6q.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%2Fee5qungxmnxa7csjzq6q.png" alt=" " width="800" height="639"&gt;&lt;/a&gt;&lt;br&gt;
Query Using B-Tree Index&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students WHERE roll_no = 110;&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%2Ft7cz5su1mmjfzv6fdtm9.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%2Ft7cz5su1mmjfzv6fdtm9.png" alt=" " width="800" height="643"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Create a B+ Tree Index on cgpa&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students WHERE cgpa &amp;gt; 8.0;&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%2Fcpej2h6zujyyedmdd4ly.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%2Fcpej2h6zujyyedmdd4ly.png" alt=" " width="800" height="663"&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%2Fu990wb1c4smke3uaesbv.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%2Fu990wb1c4smke3uaesbv.png" alt=" " width="800" height="655"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Query Using Hash Index&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students WHERE dept = '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%2Fngfis0n4mltkq8nxwca3.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%2Fngfis0n4mltkq8nxwca3.png" alt=" " width="800" height="666"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>CRUD Operation in MongoDB</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Mon, 06 Oct 2025 03:56:39 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/crud-operation-in-mongodb-bk6</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/crud-operation-in-mongodb-bk6</guid>
      <description>&lt;p&gt;Create (Insert):-&lt;/p&gt;

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

&lt;p&gt;We cannot start by inserting 5 student records into our students collection together. We can create each student as separate document.&lt;/p&gt;

&lt;p&gt;Code:-&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S001",&lt;br&gt;
name: "Harshitha",&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;&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%2Frw6tylq6dorb7m2esefv.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%2Frw6tylq6dorb7m2esefv.png" alt=" " width="772" height="625"&gt;&lt;/a&gt;&lt;br&gt;
{&lt;br&gt;
student_id: "S002",&lt;br&gt;
name: "Madhummitha",&lt;br&gt;
age: 21,&lt;br&gt;
department: "CSBS",&lt;br&gt;
year: 3,&lt;br&gt;
cgpa: 8.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%2Fbpay48glfqgt4z17t4vy.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%2Fbpay48glfqgt4z17t4vy.png" alt=" " width="800" height="361"&gt;&lt;/a&gt;&lt;br&gt;
{&lt;br&gt;
student_id: "S003",&lt;br&gt;
name: "Lokhitha",&lt;br&gt;
age: 20,&lt;br&gt;
department: "MI",&lt;br&gt;
year: 3,&lt;br&gt;
cgpa: 8&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S004",&lt;br&gt;
name: "Hareesh",&lt;br&gt;
age: 22,&lt;br&gt;
department: "IT",&lt;br&gt;
year: 3,&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%2Fes147kri6nig2b628f6l.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%2Fes147kri6nig2b628f6l.png" alt=" " width="800" height="298"&gt;&lt;/a&gt;&lt;br&gt;
{&lt;br&gt;
student_id: "S005",&lt;br&gt;
name: "Dhaaraneesh",&lt;br&gt;
age: 20,&lt;br&gt;
department: "CIVIL",&lt;br&gt;
year: 2,&lt;br&gt;
cgpa: 8.8&lt;br&gt;
}&lt;br&gt;
{&lt;br&gt;
student_id: "S006",&lt;br&gt;
name: "Harish",&lt;br&gt;
age: 22,&lt;br&gt;
department: "CSE",&lt;br&gt;
year: 3,&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%2Fq2v102eiq9qfxljea0f1.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%2Fq2v102eiq9qfxljea0f1.png" alt=" " width="800" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;READ(QUERY)&lt;/p&gt;

&lt;p&gt;Find all students with CGPA &amp;gt; 8.&lt;/p&gt;

&lt;p&gt;db.students.find({ cgpa: { $gt: 8 } })&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%2Fogvbiux3h65fbcso7wtw.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%2Fogvbiux3h65fbcso7wtw.png" alt=" " width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find students belonging to the Computer Science department.&lt;/p&gt;

&lt;p&gt;db.students.find({ department: "CSE" })&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%2Flxxu4lyyhz7119cmvfuq.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%2Flxxu4lyyhz7119cmvfuq.png" alt=" " width="800" height="357"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;UPDATE&lt;/p&gt;

&lt;p&gt;Update the CGPA of a specific student.&lt;/p&gt;

&lt;p&gt;{ "student_id": "S005" }&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%2F6wy8ljsk5ni66ouhbyev.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%2F6wy8ljsk5ni66ouhbyev.png" alt=" " width="800" height="290"&gt;&lt;/a&gt;&lt;br&gt;
Delete:-&lt;/p&gt;

&lt;p&gt;Delete one student record by student_id.&lt;/p&gt;

&lt;p&gt;{ "student_id": "S004" }&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%2Fnm59iqwagegjqd8ml5y1.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%2Fnm59iqwagegjqd8ml5y1.png" alt=" " width="800" height="348"&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%2Fx7hvipwjit8ek0ib6073.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%2Fx7hvipwjit8ek0ib6073.png" alt=" " width="800" height="330"&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%2Fatauzi9jcl4xhc4uci56.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%2Fatauzi9jcl4xhc4uci56.png" alt=" " width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:-&lt;/p&gt;

&lt;p&gt;In this blog, we explored how to perform CRUD operations in MongoDB using a real-world example of a student database. Starting from inserting records, querying based on conditions, updating multiple documents, and finally deleting specific records – we’ve covered the foundation of working with MongoDB.&lt;/p&gt;

&lt;p&gt;CRUD operations form the building blocks of every application, whether you’re managing users in a website, products in an e-commerce app, or students in a college system.&lt;/p&gt;

&lt;p&gt;Thanks to Mr.&lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for encouraging us in exploring new paths in technology and gain knowledge.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>mongodb</category>
      <category>database</category>
    </item>
    <item>
      <title>assignment using db.io</title>
      <dc:creator>Harish T</dc:creator>
      <pubDate>Wed, 27 Aug 2025 11:53:25 +0000</pubDate>
      <link>https://dev.to/harish_t_aa27d59c9c2493a5/assignment-using-dbio-21fg</link>
      <guid>https://dev.to/harish_t_aa27d59c9c2493a5/assignment-using-dbio-21fg</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%2Fkm4cktpg4v2z6fluyo8j.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%2Fkm4cktpg4v2z6fluyo8j.jpg" alt=" " width="800" height="506"&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%2Feq7nfeqvuluhfozlges8.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%2Feq7nfeqvuluhfozlges8.jpg" alt=" " width="800" height="485"&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%2Fskm1fsifccunl0dytnga.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%2Fskm1fsifccunl0dytnga.jpg" alt=" " width="800" height="458"&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%2Fcbpjm54xsdpppnzmtqfp.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%2Fcbpjm54xsdpppnzmtqfp.jpg" alt=" " width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>database</category>
    </item>
  </channel>
</rss>
