<?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: Sugesh </title>
    <description>The latest articles on DEV Community by Sugesh  (@sugesh_appu_54958a343aaf5).</description>
    <link>https://dev.to/sugesh_appu_54958a343aaf5</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%2F3450719%2Fd763098e-d652-49e4-9b00-b7c9497e6c1b.png</url>
      <title>DEV Community: Sugesh </title>
      <link>https://dev.to/sugesh_appu_54958a343aaf5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/sugesh_appu_54958a343aaf5"/>
    <language>en</language>
    <item>
      <title>CRUD OPERATIONS IN MONGODB</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Wed, 08 Oct 2025 10:35:41 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/crud-operations-in-mongodb-10nl</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/crud-operations-in-mongodb-10nl</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MongoDB is one of the most popular NoSQL databases used by developers today for building modern, scalable applications. Unlike traditional relational databases, MongoDB stores data in flexible JSON-like documents, making it easier to work with real-world scenarios.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How to insert multiple documents into a collection&lt;/p&gt;

&lt;p&gt;How to read and filter records using queries&lt;/p&gt;

&lt;p&gt;How to update documents (single &amp;amp; multiple)&lt;/p&gt;

&lt;p&gt;How to delete documents based on conditions&lt;/p&gt;

&lt;p&gt;How CRUD fits into real-world development&lt;/p&gt;

&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: "S002",&lt;br&gt;
name: "Jaswant",&lt;br&gt;
age: 20,&lt;br&gt;
department: "CSE",&lt;br&gt;
year: 1,&lt;br&gt;
cgpa: 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S001",&lt;br&gt;
name: "jai surya",&lt;br&gt;
age: 23,&lt;br&gt;
department: "CSE",&lt;br&gt;
year: 3,&lt;br&gt;
cgpa: 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S001",&lt;br&gt;
name: "sugesh",&lt;br&gt;
age: 21,&lt;br&gt;
department: "CSBS",&lt;br&gt;
year: 2,&lt;br&gt;
cgpa: 8&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S004",&lt;br&gt;
name: "prian",&lt;br&gt;
age: 24,&lt;br&gt;
department: "CSE",&lt;br&gt;
year: 3,&lt;br&gt;
cgpa: 9&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;{&lt;br&gt;
student_id: "S005",&lt;br&gt;
name: "raksanth",&lt;br&gt;
age: 23,&lt;br&gt;
department: "CSBS",&lt;br&gt;
year: 4,&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%2Fqbhrofezenh8mk3bam08.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%2Fqbhrofezenh8mk3bam08.png" alt=" " width="800" height="420"&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%2Fge1h6tph41p78rl4dlnk.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%2Fge1h6tph41p78rl4dlnk.png" alt=" " width="800" height="420"&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%2F17kf4klnpmsv44516x47.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%2F17kf4klnpmsv44516x47.png" alt=" " width="800" height="420"&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%2Fs1obj6z359flju1jujps.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%2Fs1obj6z359flju1jujps.png" alt=" " width="800" height="420"&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%2F9506kb7zid6ttjzl2yfo.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%2F9506kb7zid6ttjzl2yfo.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read (Query):-&lt;/p&gt;

&lt;p&gt;Display all student records.&lt;/p&gt;

&lt;p&gt;Fetch all students: {}&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%2Fs8kuibcwv16k2lgautv0.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%2Fs8kuibcwv16k2lgautv0.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&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%2Ftc5g13o0ee4itbgxgw0x.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%2Ftc5g13o0ee4itbgxgw0x.png" alt=" " width="800" height="420"&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%2Fzfd85l1psf9ztm8dbjap.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%2Fzfd85l1psf9ztm8dbjap.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;update:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Increase the year of study for all 3rd year students by 1.&lt;/p&gt;

&lt;p&gt;{ "year": 3 }&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%2F1f5269qkotw5zmubfqtk.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%2F1f5269qkotw5zmubfqtk.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delete:-&lt;/strong&gt;&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%2F5ekmxevy1grxr6qkuiso.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%2F5ekmxevy1grxr6qkuiso.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:-&lt;/strong&gt;&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;This step-by-step approach gave me a solid understanding of how a database schema works in real-world academic systems&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiding and motivating us.&lt;/p&gt;

</description>
      <category>nosql</category>
      <category>mongodb</category>
      <category>database</category>
      <category>jquery</category>
    </item>
    <item>
      <title>DBMS – Transactions, Deadlocks &amp; Log-Based Recovery</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Sat, 04 Oct 2025 08:58:13 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/dbms-transactions-deadlocks-log-based-recovery-3c4j</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/dbms-transactions-deadlocks-log-based-recovery-3c4j</guid>
      <description>&lt;p&gt;In &lt;strong&gt;DBMS – Transactions, Deadlocks &amp;amp; Log-Based Recovery&lt;/strong&gt;, you’ll study how transactions ensure data consistency, how deadlocks occur when multiple transactions block each other, and how log-based recovery helps the system restore data after crashes or failures.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create Table and Insert Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Bank_Account (&lt;br&gt;
    Acc_No INT PRIMARY KEY,&lt;br&gt;
    Acc_Name VARCHAR(50),&lt;br&gt;
    Balance DECIMAL(10,2)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Bank_Account (Acc_No, Acc_Name, Balance) VALUES&lt;br&gt;
(101, 'Alice', 5000.00),&lt;br&gt;
(102, 'Bob', 3000.00),&lt;br&gt;
(103, 'Charlie', 7000.00),&lt;br&gt;
(104, 'Diana', 4500.00);&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%2Fxfd9j7p0lsd03t4idez8.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%2Fxfd9j7p0lsd03t4idez8.png" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Transaction – Atomicity &amp;amp; Rollback&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Task:&lt;/strong&gt; Start a transaction to transfer ₹1000 from Alice (Acc_No 101) to Bob (Acc_No 102).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Deduct ₹1000 from Alice’s account.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deduct 1000 from Alice&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance - 1000 &lt;br&gt;
WHERE Acc_No = 101;&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%2Fu01uo8or3i0k6x53kogr.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%2Fu01uo8or3i0k6x53kogr.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Add 1000 to Bob&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance + 1000 &lt;br&gt;
WHERE Acc_No = 102;&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%2F9933w8k72uwrxdcz1wni.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%2F9933w8k72uwrxdcz1wni.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;RollBack Trtansaction:&lt;/strong&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%2Fylyywtrcs6d1p9m3fteh.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%2Fylyywtrcs6d1p9m3fteh.png" alt=" " width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Session 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lock Alice's row (Acc_No = 101)&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance - 500 &lt;br&gt;
WHERE Acc_No = 101;&lt;/p&gt;

&lt;p&gt;Now try to update Bob (but Bob is already locked by Session 2)&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance + 500 &lt;br&gt;
WHERE Acc_No = 102;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Session 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Lock Bob's row (Acc_No = 102)&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance - 300 &lt;br&gt;
WHERE Acc_No = 102;&lt;/p&gt;

&lt;p&gt;Now try to update Alice (but Alice is already locked by Session 1)&lt;/p&gt;

&lt;p&gt;UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance + 300 &lt;br&gt;
WHERE Acc_No = 101;&lt;/p&gt;

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

&lt;p&gt;Start the transaction&lt;br&gt;
START TRANSACTION;&lt;/p&gt;

&lt;p&gt;Deduct from Alice&lt;br&gt;
UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance - 6000 &lt;br&gt;
WHERE Acc_No = 101;&lt;/p&gt;

&lt;p&gt;Add to Bob&lt;br&gt;
UPDATE Bank_Account &lt;br&gt;
SET Balance = Balance + 6000 &lt;br&gt;
WHERE Acc_No = 102;&lt;/p&gt;

&lt;p&gt;Commit if success&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;Rollback if failure&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%2Flzfua65jthnowmxvf6pf.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%2Flzfua65jthnowmxvf6pf.png" alt=" " width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Transactions:&lt;/strong&gt; ensure the ACID properties (Atomicity, Consistency, Isolation, Durability).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atomicity &amp;amp; Rollback:&lt;/strong&gt; guarantee that either all operations of a transaction happen, or none happen.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Deadlocks:&lt;/em&gt; occur when two or more transactions wait for each other’s locked resources → DBMS resolves it by aborting one transaction.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; Sir for guidance throughout this assignment.&lt;/p&gt;

</description>
      <category>anonymous</category>
      <category>database</category>
      <category>performance</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Cursor and Trigger in DBMS</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Fri, 03 Oct 2025 17:26:00 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/cursor-and-trigger-in-dbms-2h31</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/cursor-and-trigger-in-dbms-2h31</guid>
      <description>&lt;p&gt;&lt;strong&gt;cursor in dbms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In DBMS, a &lt;strong&gt;cursor&lt;/strong&gt; is a pointer that allows row-by-row processing of the result set of a query, enabling traversal, retrieval, and manipulation of records one at a time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;example&lt;/strong&gt;: the employees with salary more than ₹50,000 are Bob, Charlie, and Ethan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create Employee Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employee (&lt;br&gt;
    EmpID INT PRIMARY KEY,&lt;br&gt;
    EmpName VARCHAR(50),&lt;br&gt;
    Salary DECIMAL(10,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%2Fdoog0868wec4vehhs8uw.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%2Fdoog0868wec4vehhs8uw.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Insert the Sample Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Employee (EmpID, EmpName, Salary) VALUES&lt;br&gt;
(1, 'Alice', 50000),&lt;br&gt;
(2, 'Bob', 60000),&lt;br&gt;
(3, 'Charlie', 55000),&lt;br&gt;
(4, 'Diana', 48000),&lt;br&gt;
(5, 'Ethan', 75000);&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%2F9ptpnxabfdzv4umwloxk.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%2F9ptpnxabfdzv4umwloxk.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Declare and Process the Cursor&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DECLARE&lt;br&gt;
CURSOR emp_cursor IS&lt;br&gt;
SELECT Emp_Name, Salary FROM Employee WHERE Salary &amp;gt; 50000;&lt;br&gt;
v_EmpName Employee.Emp_Name%TYPE;&lt;br&gt;
v_Salary Employee.Salary%TYPE;&lt;br&gt;
BEGIN&lt;br&gt;
OPEN emp_cursor;&lt;br&gt;
LOOP&lt;br&gt;
FETCH emp_cursor INTO v_EmpName, v_Salary;&lt;br&gt;
EXIT WHEN emp_cursor%NOTFOUND;&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('Employee: ' || v_EmpName || ', Salary: ₹' || v_Salary);&lt;br&gt;
END LOOP;&lt;br&gt;
CLOSE emp_cursor;&lt;br&gt;
END;&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%2Fofs78clgylapkqpoyx9o.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%2Fofs78clgylapkqpoyx9o.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A cursor is used to process query results row by row, unlike normal SQL which works on the whole set at once.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The process involves declaring the cursor with a SELECT query, opening it, fetching rows one at a time, and finally closing and deallocating it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cursors are useful when you need to retrieve, display, or update individual records sequentially (e.g., showing employees with salary &amp;gt; ₹50,000).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Trigger in dbms&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In DBMS, a trigger is a special type of stored procedure that is automatically executed (fired) in response to specific events on a table, such as INSERT, UPDATE, or DELETE.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Create the Student Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Student (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50) NOT NULL,&lt;br&gt;
    Age INT,&lt;br&gt;
    Gender VARCHAR(10),&lt;br&gt;
    Department VARCHAR(50)&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%2F45buofsewsh7xrdmwlp5.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%2F45buofsewsh7xrdmwlp5.png" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create Student Audit Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Student_Audit (&lt;br&gt;
Audit_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br&gt;
Student_ID NUMBER,&lt;br&gt;
Student_Name VARCHAR2(50),&lt;br&gt;
Action VARCHAR2(50),&lt;br&gt;
Action_Time TIMESTAMP&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%2Fd7vyri742ozkyd12n590.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%2Fd7vyri742ozkyd12n590.png" alt=" " width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Create AFTER INSERT Trigger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TRIGGER trg_After Insert_Student&lt;br&gt;
ON Student&lt;br&gt;
AFTER INSERT&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
    INSERT INTO Student_Audit (StudentID, StudentName, ActionType, ActionTime)&lt;br&gt;
    SELECT &lt;br&gt;
        StudentID, &lt;br&gt;
        StudentName, &lt;br&gt;
        'INSERT', &lt;br&gt;
        GETDATE()&lt;br&gt;
    FROM Inserted;   -- 'Inserted' holds newly added rows&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%2Ficbv92obls71r1xlzu1f.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%2Ficbv92obls71r1xlzu1f.png" alt=" " width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Test Trigger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Student (StudentID, StudentName, Age, Gender, Department)&lt;br&gt;
VALUES (7, 'Grace', 20, 'Female', 'Computer Science');&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%2Fy2j2qut4oc8z90go5r3s.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%2Fy2j2qut4oc8z90go5r3s.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Verify Audit Table&lt;/strong&gt;&lt;/p&gt;

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

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

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Triggers are automatic procedures that execute when an event (INSERT, UPDATE, DELETE) occurs on a table.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;They are useful for maintaining logs, enforcing rules, and ensuring data integrity without manual intervention.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In our example, the AFTER INSERT trigger on the Student table successfully recorded every new student entry into the Student_Audit table, proving how triggers help in tracking changes automatically.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank You &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiduing us and encouraging us by giving this as assignment.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>discuss</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Database normalization</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Fri, 03 Oct 2025 16:25:34 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/database-normalization-4mb1</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/database-normalization-4mb1</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Database normalization is the process of organizing data in a database to reduce duplication and improve consistency. It ensures each piece of information is stored only once and in the right place, making the database easier to manage and update without errors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Base Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A base table is a table in a database that physically stores the data and is not derived from any other table or view.&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%2Ful8mgo9zn68n9om77qk0.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%2Ful8mgo9zn68n9om77qk0.png" alt=" " width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Identifying Anomalies&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Insertion anomaly&lt;/strong&gt; – You can’t add new data without also adding unnecessary or duplicate information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Update anomaly&lt;/strong&gt; – If data stored in multiple places changes, you must update all copies, or inconsistencies occur.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Deletion anomaly&lt;/strong&gt; – Deleting one piece of data accidentally removes other important information.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Step 3: First Normal Form (1NF)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;1NF (First Normal Form) means a table where all columns have atomic (indivisible) values and no repeating groups or multi-valued attributes.&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students_1NF (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    Name VARCHAR(50),&lt;br&gt;
    Course VARCHAR(50),&lt;br&gt;
    Phone VARCHAR(20),&lt;br&gt;
    PRIMARY KEY (StudentID, Course, Phone)&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%2Fc9cmeq5vcnvkyukre4ka.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%2Fc9cmeq5vcnvkyukre4ka.png" alt=" " width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Second Normal Form (2NF)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No partial dependency. This usually applies when the primary key is composite (made of multiple columns).&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students (&lt;br&gt;
StudentID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
StudentName VARCHAR2(100)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Courses (&lt;br&gt;
CourseID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
CourseName VARCHAR2(100),&lt;br&gt;
Instructor VARCHAR2(100),&lt;br&gt;
InstructorPhone VARCHAR2(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Enrollments (&lt;br&gt;
StudentID VARCHAR2(10),&lt;br&gt;
CourseID VARCHAR2(10),&lt;br&gt;
PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
FOREIGN KEY (StudentID) REFERENCES Student(StudentID),&lt;br&gt;
FOREIGN KEY (CourseID) REFERENCES Course(CourseID)&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%2Fl836bueuywwguy0gbqbb.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%2Fl836bueuywwguy0gbqbb.webp" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Third Normal Form (3NF)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;No transitive dependencies exist → non-key attributes must depend only on the primary key, not on another non-key attribute.&lt;/p&gt;

&lt;p&gt;DROP TABLE IF EXISTS Students;&lt;br&gt;
DROP TABLE IF EXISTS Departments;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Departments (&lt;br&gt;
    DepartmentID INT PRIMARY KEY,&lt;br&gt;
    DepartmentName VARCHAR(50) NOT NULL&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR(50) NOT NULL,&lt;br&gt;
    DepartmentID INT,&lt;br&gt;
    FOREIGN KEY (DepartmentID) REFERENCES Departments(DepartmentID)&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%2Fyfze2fezclui1lja8sg2.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%2Fyfze2fezclui1lja8sg2.png" alt=" " width="800" height="348"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Isert Sample Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;-- Insert into Departments&lt;br&gt;
INSERT INTO Departments (DepartmentID, DepartmentName) VALUES&lt;br&gt;
(10, 'Computer Science'),&lt;br&gt;
(20, 'Mathematics'),&lt;br&gt;
(30, 'Physics');&lt;/p&gt;

&lt;p&gt;-- Insert into Students&lt;br&gt;
INSERT INTO Students (StudentID, StudentName, DepartmentID) VALUES&lt;br&gt;
(1, 'Alice', 10),&lt;br&gt;
(2, 'Bob', 20),&lt;br&gt;
(3, 'Charlie', 10),&lt;br&gt;
(4, 'Diana', 30),&lt;br&gt;
(5, 'Ethan', 20);&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%2Frgtdj4w7gvxnysxsn8pn.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%2Frgtdj4w7gvxnysxsn8pn.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Query with JOIN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SELECT &lt;br&gt;
    s.StudentID,&lt;br&gt;
    s.StudentName,&lt;br&gt;
    d.DepartmentName&lt;br&gt;
FROM Students s&lt;br&gt;
JOIN Departments d &lt;br&gt;
    ON s.DepartmentID = d.DepartmentID;&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%2Ft40mkcssw8jey8drx89m.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%2Ft40mkcssw8jey8drx89m.png" alt=" " width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Removes redundancy and duplicate data.&lt;/p&gt;

&lt;p&gt;Ensures data consistency and accuracy.&lt;/p&gt;

&lt;p&gt;Makes databases easier to update and maintain.&lt;/p&gt;

&lt;p&gt;Improves efficiency by storing each fact only once.&lt;/p&gt;

&lt;p&gt;Allows clean data retrieval through joins.&lt;/p&gt;

&lt;p&gt;Special thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for mentoring me on database normalization concepts!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL #Oracle #DBMS #DatabaseNormalization #1NF #2NF #3NF  #DataModeling&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>productivity</category>
      <category>development</category>
      <category>mobile</category>
    </item>
    <item>
      <title>ACID Properties with SQL Transactions in DBMS</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Fri, 03 Oct 2025 14:54:02 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/acid-properties-with-sql-transactions-in-dbms-4lpa</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/acid-properties-with-sql-transactions-in-dbms-4lpa</guid>
      <description>&lt;p&gt;The ACID properties are a set of principles that ensure reliable processing of database transactions in SQL. A transaction is a sequence of one or more SQL operations (such as INSERT, UPDATE, DELETE) executed as a single logical unit of work.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create the Accounts Table and Insert the Data&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Accounts (&lt;br&gt;
AccountID INT PRIMARY KEY,&lt;br&gt;
AccountHolder VARCHAR(100) NOT NULL,&lt;br&gt;
Balance DECIMAL(10,2) NOT NULL CHECK (Balance &amp;gt;= 0)&lt;br&gt;
);&lt;br&gt;
INSERT INTO Accounts (AccountID, AccountHolder, Balance) VALUES&lt;br&gt;
(1, 'Alice', 1000.00),&lt;br&gt;
(2, 'Bob', 500.00),&lt;br&gt;
(3, 'Charlie', 2000.00);&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%2Fcvb7ayg8zcxw0lwdfmx2.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%2Fcvb7ayg8zcxw0lwdfmx2.png" alt=" " width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Atomicity:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Atomicity means a transaction is an all-or-nothing operation — either all SQL statements succeed, or none take effect.&lt;/p&gt;

&lt;p&gt;UPDATE Accounts SET balance = balance - 1000 WHERE acc_no = 101;&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%2F6mpm25okdowv57swd6i3.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%2F6mpm25okdowv57swd6i3.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Consistency ensures that a transaction brings the database from one valid state to another, maintaining all rules, constraints, and data integrity.&lt;/p&gt;

&lt;p&gt;ALTER TABLE Accounts&lt;br&gt;
ADD CONSTRAINT chk_balance CHECK (balance &amp;gt;= 0);&lt;br&gt;
INSERT INTO Accounts VALUES (104, 'David', -500);&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%2F1rjy31y6j0z1oge39koe.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%2F1rjy31y6j0z1oge39koe.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isolation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Isolation means each transaction executes as if it were the only one running, preventing interference from concurrent transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SESSION 1 :&lt;/strong&gt;&lt;br&gt;
BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance - 2000 WHERE acc_no = 103;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SESSION 2:&lt;/strong&gt;&lt;br&gt;
SELECT * FROM Accounts WHERE acc_no = 103;&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%2Fnunomf8hafn7baefyjxw.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%2Fnunomf8hafn7baefyjxw.png" alt=" " width="800" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Duriability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Durability means once a transaction is committed, its changes are permanent and survive system failures.&lt;/p&gt;

&lt;p&gt;BEGIN TRANSACTION;&lt;br&gt;
UPDATE Accounts SET balance = balance + 500 WHERE acc_no = 102;&lt;br&gt;
COMMIT;&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%2F6mpm25okdowv57swd6i3.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%2F6mpm25okdowv57swd6i3.png" alt=" " width="800" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Atomicity&lt;/strong&gt; → Ensures transactions are all-or-nothing, preventing partial updates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency&lt;/strong&gt; → Guarantees the database remains in a valid state by enforcing rules and constraints.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Isolation&lt;/strong&gt; → Keeps transactions independent, avoiding conflicts during concurrent execution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Durability&lt;/strong&gt; → Makes committed changes permanent, even in case of crashes or failures.&lt;/p&gt;

&lt;p&gt;Thanks for &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir guiding me .&lt;/p&gt;

</description>
      <category>sql</category>
      <category>discuss</category>
      <category>database</category>
      <category>performance</category>
    </item>
    <item>
      <title>Indexing, Hashing &amp; Query Optimization in DBMS</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Fri, 03 Oct 2025 12:46:12 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/indexing-hashing-query-optimization-in-dbms-37gc</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/indexing-hashing-query-optimization-in-dbms-37gc</guid>
      <description>&lt;p&gt;We will explore Transactions, Deadlocks, and Log-Based Recovery using SQL.&lt;br&gt;
We use the Accounts table as our base schema and demonstrate ACID concepts with rollback, simulate a deadlock, and discuss log-based recovery.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;definition:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indexing:&lt;/strong&gt; A database technique that improves data retrieval speed by creating auxiliary data structures on table columns.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hash Indexing:&lt;/strong&gt; An indexing method that uses a hash function to map keys to specific locations for fast equality searches.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B+ Index:&lt;/strong&gt; A balanced tree index where all data records are stored in leaf nodes, and internal nodes hold only keys for efficient range queries.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B- Index:&lt;/strong&gt; (B-Tree Index): A self-balancing tree index where keys and data can be stored in both internal and leaf nodes for balanced access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query Optimization:&lt;/strong&gt; The process of determining the most efficient way to execute a database query using indexes, statistics, and execution plans.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating the Students Table:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Student (&lt;br&gt;
    StudentID INT PRIMARY KEY,&lt;br&gt;
    FirstName VARCHAR(50),&lt;br&gt;
    LastName VARCHAR(50),&lt;br&gt;
    Age INT,&lt;br&gt;
    Gender CHAR(1),&lt;br&gt;
    Department VARCHAR(50),&lt;br&gt;
    Email VARCHAR(100) UNIQUE&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%2F3syu5xlnboexe21z90ox.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%2F3syu5xlnboexe21z90ox.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Inserting Sample Records:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Student (StudentID, FirstName, LastName, Age, Gender, Department, Email) VALUES&lt;br&gt;
(1, 'Alice', 'Johnson', 20, 'F', 'Computer Science', '&lt;a href="mailto:alice.johnson@example.com"&gt;alice.johnson@example.com&lt;/a&gt;'),&lt;br&gt;
(2, 'Bob', 'Smith', 22, 'M', 'Mechanical Engineering', '&lt;a href="mailto:bob.smith@example.com"&gt;bob.smith@example.com&lt;/a&gt;'),&lt;br&gt;
(3, 'Clara', 'Williams', 19, 'F', 'Electrical Engineering', '&lt;a href="mailto:clara.williams@example.com"&gt;clara.williams@example.com&lt;/a&gt;'),&lt;br&gt;
(4, 'David', 'Brown', 21, 'M', 'Mathematics', '&lt;a href="mailto:david.brown@example.com"&gt;david.brown@example.com&lt;/a&gt;'),&lt;br&gt;
(5, 'Eva', 'Davis', 23, 'F', 'Business Administration', '&lt;a href="mailto:eva.davis@example.com"&gt;eva.davis@example.com&lt;/a&gt;'),&lt;br&gt;
(6, 'Frank', 'Miller', 20, 'M', 'Civil Engineering', '&lt;a href="mailto:frank.miller@example.com"&gt;frank.miller@example.com&lt;/a&gt;'),&lt;br&gt;
(7, 'Grace', 'Wilson', 21, 'F', 'Computer Science', '&lt;a href="mailto:grace.wilson@example.com"&gt;grace.wilson@example.com&lt;/a&gt;'),&lt;br&gt;
(8, 'Henry', 'Moore', 22, 'M', 'Mechanical Engineering', '&lt;a href="mailto:henry.moore@example.com"&gt;henry.moore@example.com&lt;/a&gt;'),&lt;br&gt;
(9, 'Ivy', 'Taylor', 19, 'F', 'Electrical Engineering', '&lt;a href="mailto:ivy.taylor@example.com"&gt;ivy.taylor@example.com&lt;/a&gt;'),&lt;br&gt;
(10, 'Jack', 'Anderson', 24, 'M', 'Mathematics', '&lt;a href="mailto:jack.anderson@example.com"&gt;jack.anderson@example.com&lt;/a&gt;'),&lt;br&gt;
(11, 'Karen', 'Thomas', 20, 'F', 'Business Administration', '&lt;a href="mailto:karen.thomas@example.com"&gt;karen.thomas@example.com&lt;/a&gt;'),&lt;br&gt;
(12, 'Leo', 'Jackson', 21, 'M', 'Civil Engineering', '&lt;a href="mailto:leo.jackson@example.com"&gt;leo.jackson@example.com&lt;/a&gt;'),&lt;br&gt;
(13, 'Mia', 'White', 22, 'F', 'Computer Science', '&lt;a href="mailto:mia.white@example.com"&gt;mia.white@example.com&lt;/a&gt;'),&lt;br&gt;
(14, 'Noah', 'Harris', 23, 'M', 'Mechanical Engineering', '&lt;a href="mailto:noah.harris@example.com"&gt;noah.harris@example.com&lt;/a&gt;'),&lt;br&gt;
(15, 'Olivia', 'Martin', 20, 'F', 'Electrical Engineering', '&lt;a href="mailto:olivia.martin@example.com"&gt;olivia.martin@example.com&lt;/a&gt;'),&lt;br&gt;
(16, 'Paul', 'Thompson', 21, 'M', 'Mathematics', '&lt;a href="mailto:paul.thompson@example.com"&gt;paul.thompson@example.com&lt;/a&gt;'),&lt;br&gt;
(17, 'Quinn', 'Garcia', 22, 'F', 'Business Administration', '&lt;a href="mailto:quinn.garcia@example.com"&gt;quinn.garcia@example.com&lt;/a&gt;'),&lt;br&gt;
(18, 'Ryan', 'Martinez', 19, 'M', 'Civil Engineering', '&lt;a href="mailto:ryan.martinez@example.com"&gt;ryan.martinez@example.com&lt;/a&gt;'),&lt;br&gt;
(19, 'Sophia', 'Robinson', 23, 'F', 'Computer Science', '&lt;a href="mailto:sophia.robinson@example.com"&gt;sophia.robinson@example.com&lt;/a&gt;'),&lt;br&gt;
(20, 'Tom', 'Clark', 24, 'M', 'Mechanical Engineering', '&lt;a href="mailto:tom.clark@example.com"&gt;tom.clark@example.com&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%2Fjpuhrb3xhiq8dyldss16.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%2Fjpuhrb3xhiq8dyldss16.png" alt=" " width="800" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a B-Tree Index on roll_no:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_student_id&lt;br&gt;
ON Student (StudentID);&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%2F1x9jl8xnsno75a06k579.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%2F1x9jl8xnsno75a06k579.png" alt=" " width="800" height="352"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query:&lt;/strong&gt; Fetch student with Student_ID = 10;&lt;/p&gt;

&lt;p&gt;SELECT * FROM StudentWHERE StudentID = 10;&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%2Fv8kke6jf957naw060ioe.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%2Fv8kke6jf957naw060ioe.png" alt=" " width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a B+ Tree Index on age:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_student_age ON Student (Age);&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%2F3nk5qnw2ge9qdbl956v8.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%2F3nk5qnw2ge9qdbl956v8.png" alt=" " width="800" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query:&lt;/strong&gt; Display all students with age = 21;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Student WHERE Age = 21;&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%2F6cknrgjt60lthiaq2nct.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%2F6cknrgjt60lthiaq2nct.png" alt=" " width="800" height="342"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating an Index on dept for Fast Equality Search&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_student_dept ON Student (Department);&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%2Fevl1zl217xc23694lznq.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%2Fevl1zl217xc23694lznq.png" alt=" " width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Query:&lt;/strong&gt; Retrieve all students from the Computer Science department&lt;/p&gt;

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

&lt;p&gt;Steps Summary:-&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Create the Student table&lt;/strong&gt; → Defined columns like StudentID, FirstName, Age, Department, etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Insert sample records&lt;/strong&gt; → Added 20 student records for testing queries and indexing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Create a B-Tree index on StudentID&lt;/strong&gt; → Fast lookups and range queries by student ID (already exists as PK).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Query using the StudentID index&lt;/strong&gt; → Equality (=), range (BETWEEN), and sorting (ORDER BY).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Create a B+ Tree index on Age&lt;/strong&gt; → Efficient for searching students by specific age or within an age range.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;6. Query using the Age index&lt;/strong&gt; → Equality search, range queries, and ordered retrieval by age.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;7. Create an index on Department (Hash / B+ Tree)&lt;/strong&gt; → Optimized for fast equality search on departments.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;8. Query using the Department index&lt;/strong&gt; → Retrieve all students in a particular department quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;9. Note on index choice:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;B+ Tree = supports equality + range queries.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Hash Index = best for equality only.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Indexes (B-Tree, B+ Tree, and Hash) significantly improve database performance by enabling faster equality, range, and ordered queries depending on the use case.&lt;/p&gt;

&lt;p&gt;Thanks to &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; Sir for guiding me through indexing and query optimization concepts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL #Oracle #Indexing #BTree #BPlusTree #QueryOptimization #DBMS #Database&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>learning</category>
      <category>coding</category>
      <category>programming</category>
      <category>sql</category>
    </item>
    <item>
      <title>COLLEGE STUDENT &amp; COURSE MANAGEMENT SYSTEM</title>
      <dc:creator>Sugesh </dc:creator>
      <pubDate>Thu, 21 Aug 2025 16:08:58 +0000</pubDate>
      <link>https://dev.to/sugesh_appu_54958a343aaf5/college-student-course-management-system-5db</link>
      <guid>https://dev.to/sugesh_appu_54958a343aaf5/college-student-course-management-system-5db</guid>
      <description>&lt;p&gt;Managing students, courses, and enrollments is one of the most common use cases in college management systems.&lt;br&gt;
In this blog, we’ll design a Student &amp;amp; Course Management System in SQL and walk through 10 key operations: creating tables, inserting data, altering structure, defining constraints, using functions, joins, group by, views, and stored procedures.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1 – Create the Students Table
&lt;/h2&gt;

&lt;p&gt;We start by creating a Students table with basic details.&lt;br&gt;
`&lt;code&gt;CREATE TABLE Students (&lt;br&gt;
    StudentID NUMBER PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR2(50) NOT NULL,&lt;br&gt;
    Dept VARCHAR2(30),&lt;br&gt;
    DOB DATE,&lt;br&gt;
    Email VARCHAR2(50) UNIQUE&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2 – Insert Data into Students
&lt;/h2&gt;

&lt;p&gt;Let’s insert some student records:&lt;br&gt;
INSERT INTO Students (StudentID, StudentName, Dept, DOB, Email) &lt;br&gt;
VALUES (101, 'Arun Kumar', 'CSE', DATE '2004-05-10', '&lt;a href="mailto:arun.kumar@college.com"&gt;arun.kumar@college.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, StudentName, Dept, DOB, Email) &lt;br&gt;
VALUES (102, 'Priya Sharma', 'ECE', DATE '2003-11-15', '&lt;a href="mailto:priya.sharma@college.com"&gt;priya.sharma@college.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, StudentName, Dept, DOB, Email) &lt;br&gt;
VALUES (103, 'Vikram Raj', 'Mechanical', DATE '2004-01-20', '&lt;a href="mailto:vikram.raj@college.com"&gt;vikram.raj@college.com&lt;/a&gt;');&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3 – Alter Table to Add Phone Number
&lt;/h2&gt;

&lt;p&gt;We can add new columns later. Here we add a 10-digit PhoneNo.&lt;br&gt;
`&lt;code&gt;ALTER TABLE Students&lt;br&gt;
ADD PhoneNo VARCHAR2(10);&lt;br&gt;
![ ](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hsdm7wyoe8lim0ohjpkf.png)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4 – Create Courses Table
&lt;/h2&gt;

&lt;p&gt;We’ll also need a Courses table to store course information.&lt;br&gt;
&lt;code&gt;CREATE TABLE Courses (&lt;br&gt;
    CourseID NUMBER PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR2(50) NOT NULL,&lt;br&gt;
    Credits NUMBER(2) CHECK (Credits BETWEEN 1 AND 5)&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 5 – Enrollments Relationship (Many-to-Many)
&lt;/h2&gt;

&lt;p&gt;A student can enroll in many courses, and a course can have many students.&lt;br&gt;
So, we create an Enrollments table:&lt;br&gt;
&lt;code&gt;CREATE TABLE Enrollments (&lt;br&gt;
    EnrollID NUMBER PRIMARY KEY,&lt;br&gt;
    StudentID NUMBER REFERENCES Students(StudentID),&lt;br&gt;
    CourseID NUMBER REFERENCES Courses(CourseID),&lt;br&gt;
    Grade CHAR(2)&lt;br&gt;
);&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  step 6 – Using SQL Functions
&lt;/h2&gt;

&lt;p&gt;Example: display student names in uppercase and email lengths.&lt;br&gt;
`SELECT UPPER(StudentName) AS StudentName_Upper, &lt;br&gt;
       LENGTH(Email) AS Email_Length&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 7 – Aggregate Functions
&lt;/h2&gt;

&lt;p&gt;Find the average course credits and total number of students enrolled.&lt;br&gt;
S&lt;code&gt;ELECT AVG(Credits) AS AvgCourseCredits FROM Courses&lt;br&gt;
SELECT COUNT(DISTINCT StudentID) AS TotalStudentsEnrolled FROM Enrollments;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
`&lt;/p&gt;

&lt;h2&gt;
  
  
  ✅ Final Thoughts
&lt;/h2&gt;

&lt;p&gt;With these steps, we have built a Student &amp;amp; Course Management System in SQL that includes:&lt;/p&gt;

&lt;p&gt;Students table with constraints&lt;/p&gt;

&lt;p&gt;Courses table&lt;/p&gt;

&lt;p&gt;Enrollments table (many-to-many relationship)&lt;/p&gt;

&lt;p&gt;Insert, alter, and constraints&lt;/p&gt;

&lt;p&gt;Functions and aggregates&lt;/p&gt;

&lt;p&gt;Joins and group by queries&lt;/p&gt;

&lt;p&gt;Views for simplified reporting&lt;/p&gt;

&lt;p&gt;Stored procedures for automation&lt;br&gt;
Thankyou &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for teaching about this and giving it as our assignment .This assignment is helpfull for me sir!!&lt;/p&gt;

&lt;p&gt;This system forms the backbone of a college database project, and can easily be extended with Attendance, Results, or Faculty management.🚀&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%2Fhsdm7wyoe8lim0ohjpkf.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%2Fhsdm7wyoe8lim0ohjpkf.png" alt=" " width="800" height="450"&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%2Fkaloaiqw4z32zljqzp0e.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%2Fkaloaiqw4z32zljqzp0e.png" alt=" " width="" height=""&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%2Fdomypxw3h054bvt64jk7.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%2Fdomypxw3h054bvt64jk7.png" alt=" " width="800" height="450"&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%2F1ah693bzc52tcm09qnwx.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%2F1ah693bzc52tcm09qnwx.png" alt=" " width="800" height="450"&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%2Fjko8trsybj96s4ku2boy.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%2Fjko8trsybj96s4ku2boy.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

&lt;p&gt;`&lt;/p&gt;

</description>
      <category>sql</category>
      <category>programming</category>
      <category>learning</category>
      <category>tutorial</category>
    </item>
  </channel>
</rss>
