<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: HARINI SRI K A 24CB016</title>
    <description>The latest articles on Forem by HARINI SRI K A 24CB016 (@harini_srika24cb016_1a).</description>
    <link>https://forem.com/harini_srika24cb016_1a</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%2F3451028%2Fd67b03d7-8cfb-4bf2-993a-8fe89c7b07b1.png</url>
      <title>Forem: HARINI SRI K A 24CB016</title>
      <link>https://forem.com/harini_srika24cb016_1a</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/harini_srika24cb016_1a"/>
    <language>en</language>
    <item>
      <title>AWS Service: Amazon Honeycode</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Fri, 19 Dec 2025 09:06:16 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/aws-service-amazon-honeycode-4c4m</link>
      <guid>https://forem.com/harini_srika24cb016_1a/aws-service-amazon-honeycode-4c4m</guid>
      <description>&lt;p&gt;&lt;strong&gt;Amazon Honeycode&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Honeycode is a beginner-friendly AWS service that allows users to build applications without writing code. It is especially useful for business teams and students who want to create simple apps quickly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Service Overview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Honeycode is a no-code application development service that enables users to build web and mobile apps using simple spreadsheets and visual components. It removes the need for complex programming and infrastructure management.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;No-code app development platform&lt;/li&gt;
&lt;li&gt;Spreadsheet-based data model&lt;/li&gt;
&lt;li&gt;Visual app builder for web and mobile&lt;/li&gt;
&lt;li&gt;Built-in integration with AWS services&lt;/li&gt;
&lt;li&gt;Secure user access and permissions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;AWS Category / Cloud Domain&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Category: Application Development&lt;/li&gt;
&lt;li&gt;Cloud Domain: Low-Code / No-Code, Business Applications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Where It Fits in the Cloud / DevOps Lifecycle&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Honeycode fits into the Application Development phase of the cloud lifecycle.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rapid app development without DevOps overhead&lt;/li&gt;
&lt;li&gt;Ideal for internal tools and workflows&lt;/li&gt;
&lt;li&gt;Reduces development and deployment time&lt;/li&gt;
&lt;li&gt;Requires minimal infrastructure management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Programming Language / Access Methods&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No programming language required&lt;/li&gt;
&lt;li&gt;Access via Web browser and mobile apps&lt;/li&gt;
&lt;li&gt;Uses spreadsheet-style formulas for logic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pricing Mode&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free tier: Limited users and storage&lt;/li&gt;
&lt;li&gt;Paid model: Pay per user per month&lt;/li&gt;
&lt;li&gt;Pricing based on number of app users&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Why Amazon Honeycode Matters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Amazon Honeycode empowers non-developers to create applications quickly, reducing dependency on engineering teams and accelerating digital transformation.&lt;/p&gt;

&lt;p&gt;Amazon Honeycode is a simple yet powerful AWS service for building applications without coding. It is ideal for students, business teams, and organizations looking for fast and easy app development.&lt;br&gt;
Thank You &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir!!&lt;/p&gt;

</description>
      <category>aws</category>
      <category>beginners</category>
      <category>tooling</category>
    </item>
    <item>
      <title>DevSecOps Periodic Table</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Fri, 19 Dec 2025 08:51:28 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/devsecops-periodic-table-12do</link>
      <guid>https://forem.com/harini_srika24cb016_1a/devsecops-periodic-table-12do</guid>
      <description>&lt;p&gt;&lt;strong&gt;Harness in the DevSecOps Periodic Table&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Overview of the Tool&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Harness is a modern CI/CD and DevSecOps platform that helps teams automate software delivery with speed, reliability, and security. It focuses on continuous delivery, cloud cost management, and security testing.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;Continuous Integration (CI) &amp;amp; Continuous Delivery (CD)&lt;/li&gt;
&lt;li&gt;Automated deployments with rollback support&lt;/li&gt;
&lt;li&gt;Built-in security testing (SAST, DAST, SCA)&lt;/li&gt;
&lt;li&gt;Cloud cost management &amp;amp; optimization&lt;/li&gt;
&lt;li&gt;GitOps and pipeline-as-code support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;How It Fits into DevOps / DevSecOps&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Harness plays a key role in DevSecOps by integrating security checks directly into CI/CD pipelines. It ensures faster deployments while continuously validating code quality, security, and compliance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programming Language&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Java (core backend)&lt;/li&gt;
&lt;li&gt;Uses YAML for pipeline configuration&lt;/li&gt;
&lt;li&gt;Supports applications written in any language&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Parent Company&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Harness Inc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source or Paid&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Paid (Enterprise Tool)&lt;/li&gt;
&lt;li&gt;Offers free/community tiers with limited features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Harness simplifies secure software delivery by combining automation, security, and intelligence in one DevSecOps platform.&lt;br&gt;
Thankyou &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Getting Hands-on with MongoDB: CRUD Operations for College Students</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sun, 05 Oct 2025 18:51:07 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/getting-hands-on-with-mongodb-crud-operations-for-college-students-1elf</link>
      <guid>https://forem.com/harini_srika24cb016_1a/getting-hands-on-with-mongodb-crud-operations-for-college-students-1elf</guid>
      <description>&lt;p&gt;Working with databases is an essential skill for any developer. Recently, I explored MongoDB, a popular NoSQL database, by performing basic CRUD (Create, Read, Update, Delete) operations using a simple students collection. Here’s a walkthrough of my learning journey.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The Students Collection Schema&lt;br&gt;
{&lt;br&gt;
"student_id": "S001",&lt;br&gt;
"name": "Santhosh",&lt;br&gt;
"age": 20,&lt;br&gt;
"department": "CSBS",&lt;br&gt;
"year": 2,&lt;br&gt;
"cgpa": 9&lt;br&gt;
}&lt;br&gt;
db.students.insertMany([&lt;br&gt;
{ "student_id": "S001", "name": "Santhosh", "age": 20, "department": "CSBS", "year": 2, "cgpa": 9 },&lt;br&gt;
{ "student_id": "S002", "name": "Ananya", "age": 19, "department": "CSE", "year": 1, "cgpa": 8.5 },&lt;br&gt;
{ "student_id": "S003", "name": "Rohit", "age": 21, "department": "ECE", "year": 3, "cgpa": 7.8 },&lt;br&gt;
{ "student_id": "S004", "name": "Priya", "age": 22, "department": "CSE", "year": 3, "cgpa": 9.2 },&lt;br&gt;
{ "student_id": "S005", "name": "Kiran", "age": 20, "department": "ME", "year": 2, "cgpa": 6.9 }&lt;br&gt;
]);&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Reading (Querying) Data&lt;br&gt;
db.students.find().pretty();&lt;br&gt;
db.students.find({ "cgpa": { $gt: 8 } }).pretty();&lt;br&gt;
db.students.find({ "department": "CSE" }).pretty();&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Updating Data&lt;br&gt;
db.students.updateOne(&lt;br&gt;
{ "student_id": "S002" },&lt;br&gt;
{ $set: { "cgpa": 9.0 } }&lt;br&gt;
);&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;db.students.updateMany(&lt;br&gt;
  { "year": 3 },&lt;br&gt;
  { $inc: { "year": 1 } }&lt;br&gt;
);&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Deleting Data&lt;br&gt;
db.students.deleteOne({ "student_id": "S005" });&lt;br&gt;
db.students.deleteMany({ "cgpa": { $lt: 7.5 } });&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Exporting the Collection&lt;br&gt;
MongoDB Atlas makes exporting simple:&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Go to Collections → students → Export Collection.&lt;/p&gt;

&lt;p&gt;Choose JSON or CSV format to save your 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%2Fn1hlnei9dwappc4ex69b.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%2Fn1hlnei9dwappc4ex69b.png" alt=" " width="800" height="352"&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%2Fhwpnvduecnwp6xuymdgv.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%2Fhwpnvduecnwp6xuymdgv.png" alt=" " width="800" height="336"&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%2Fg10m1z61bixko1necqnl.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%2Fg10m1z61bixko1necqnl.png" alt=" " width="800" height="356"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Working with MongoDB through this hands-on CRUD exercise was a great learning experience. I learned how to create, read, update, and delete documents in a NoSQL database, and how MongoDB’s flexible schema makes managing real-world data simple and efficient. Using MongoDB Atlas also made it easy to visualize the data and perform operations in a cloud environment.&lt;/p&gt;

&lt;p&gt;This exercise strengthened my understanding of database concepts and gave me confidence to work with NoSQL databases in future projects.&lt;br&gt;
thank you sir@santhoshnc !!!!&lt;/p&gt;

</description>
      <category>database</category>
      <category>mongodb</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>SQL Indexing, Hashing &amp; Query Optimization</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:42:21 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/sql-indexing-hashing-query-optimization-1b89</link>
      <guid>https://forem.com/harini_srika24cb016_1a/sql-indexing-hashing-query-optimization-1b89</guid>
      <description>&lt;p&gt;When working with large databases, query performance becomes critical. Retrieving data without optimization can be slow. This is where indexes come into play.&lt;/p&gt;

&lt;p&gt;In this blog, we will explore:&lt;/p&gt;

&lt;p&gt;B-Tree Index for primary key lookups&lt;/p&gt;

&lt;p&gt;B+ Tree Index for range queries&lt;/p&gt;

&lt;p&gt;Hash Index for equality searches&lt;/p&gt;

&lt;p&gt;We will use a Students table with sample data and see how different indexes improve query performance.&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    roll_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    dept VARCHAR(10),&lt;br&gt;
    cgpa DECIMAL(3,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%2F6ereyakzyx45kyvjp5lo.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%2F6ereyakzyx45kyvjp5lo.png" alt=" " width="800" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (roll_no, name, dept, cgpa) VALUES&lt;br&gt;
(101, 'Alice', 'CSBS', 8.5),&lt;br&gt;
(102, 'Bob', 'ECEN', 7.9),&lt;br&gt;
...&lt;br&gt;
(120, 'Tom', 'ECEN', 7.4);&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%2Fg87snaw3vock1bfx34xc.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%2Fg87snaw3vock1bfx34xc.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;B-Tree Index on roll_no&lt;/strong&gt;&lt;br&gt;
CREATE INDEX idx_roll_no ON Students(roll_no);&lt;br&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%2F6s4dm774fl9yhgat3y0h.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%2F6s4dm774fl9yhgat3y0h.png" alt=" " width="800" height="431"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;B+ Tree Index on cgpa&lt;/strong&gt;&lt;br&gt;
CREATE INDEX idx_cgpa ON Students(cgpa);&lt;br&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%2Fbu6046fwz4r414hy03rv.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%2Fbu6046fwz4r414hy03rv.png" alt=" " width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Hash Index on dept&lt;/strong&gt;&lt;br&gt;
CREATE INDEX idx_dept_hash ON Students(dept);&lt;br&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%2Fcmqd41r9i74xb8r76bqg.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%2Fcmqd41r9i74xb8r76bqg.png" alt=" " width="800" height="546"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this blog, we:&lt;/p&gt;

&lt;p&gt;Created a Students table with sample records&lt;/p&gt;

&lt;p&gt;Applied B-Tree, B+ Tree, and Hash indexes&lt;/p&gt;

&lt;p&gt;Ran queries to demonstrate performance improvement&lt;br&gt;
Thank you &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir !!!&lt;/p&gt;

</description>
      <category>database</category>
      <category>performance</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log-Based Recovery in SQL</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sun, 05 Oct 2025 17:21:07 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/transactions-deadlocks-log-based-recovery-in-sql-3ief</link>
      <guid>https://forem.com/harini_srika24cb016_1a/transactions-deadlocks-log-based-recovery-in-sql-3ief</guid>
      <description>&lt;p&gt;Databases are at the heart of almost every application. To ensure reliability, developers need to understand transactions, deadlocks, and log-based recovery. In this blog, we’ll explore these concepts using a simple Accounts table.&lt;br&gt;
CREATE TABLE Accounts (&lt;br&gt;
    acc_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR(50),&lt;br&gt;
    balance INT&lt;br&gt;
) ENGINE=InnoDB;&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES&lt;br&gt;
(1, 'Alice', 1000),&lt;br&gt;
(2, 'Bob', 1500),&lt;br&gt;
(3, 'Charlie', 2000);&lt;br&gt;
&lt;strong&gt;Transactions&lt;/strong&gt;&lt;br&gt;
-- Start transaction&lt;br&gt;
BEGIN;&lt;/p&gt;

&lt;p&gt;-- Deduct 500 from Alice&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance - 500&lt;br&gt;
WHERE name = 'Alice';&lt;/p&gt;

&lt;p&gt;-- Add 500 to Bob&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance + 500&lt;br&gt;
WHERE name = 'Bob';&lt;/p&gt;

&lt;p&gt;-- Rollback before commit&lt;br&gt;
ROLLBACK;&lt;br&gt;
SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy5bmaov5755sj641qxls.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%2Fy5bmaov5755sj641qxls.png" alt=" " width="800" height="564"&gt;&lt;/a&gt;&lt;br&gt;
*&lt;em&gt;Deadlock Simulation&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
BEGIN;&lt;/p&gt;

&lt;p&gt;-- Lock Alice's account&lt;br&gt;
UPDATE Accounts SET balance = balance + 100 WHERE name='Alice';&lt;/p&gt;

&lt;p&gt;-- Try updating Bob's account (will wait if Session 2 locks it)&lt;br&gt;
UPDATE Accounts SET balance = balance - 100 WHERE name='Bob';&lt;br&gt;
BEGIN;&lt;/p&gt;

&lt;p&gt;-- Lock Bob's account&lt;br&gt;
UPDATE Accounts SET balance = balance - 50 WHERE name='Bob';&lt;/p&gt;

&lt;p&gt;-- Try updating Alice's account (will wait if Session 1 locks it)&lt;br&gt;
UPDATE Accounts SET balance = balance + 50 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%2Fphq8ccv3nqrsmc415hmd.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%2Fphq8ccv3nqrsmc415hmd.png" alt=" " width="800" height="479"&gt;&lt;/a&gt;&lt;br&gt;
At this point, both sessions are waiting on each other → deadlock.&lt;/p&gt;

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

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance + 200&lt;br&gt;
WHERE name='Charlie';&lt;/p&gt;

&lt;p&gt;ROLLBACK;&lt;br&gt;
SHOW BINLOG EVENTS;&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%2F7wcs1duoupkvsck1h5ui.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%2F7wcs1duoupkvsck1h5ui.png" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Transactions provide atomicity, ensuring all-or-nothing updates.&lt;/p&gt;

&lt;p&gt;Deadlocks can occur in concurrent sessions; modern DBMS detect and resolve them.&lt;/p&gt;

&lt;p&gt;Logs enable rollback and recovery, keeping databases consistent and reliable.&lt;br&gt;
THANK YOU &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiding us!!!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>ACID Properties with SQL Transactions</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sun, 05 Oct 2025 16:36:00 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/acid-properties-with-sql-transactions-4l73</link>
      <guid>https://forem.com/harini_srika24cb016_1a/acid-properties-with-sql-transactions-4l73</guid>
      <description>&lt;p&gt;Databases need to be reliable, consistent, and crash-proof. This is where ACID properties — Atomicity, Consistency, Isolation, and Durability — come in.&lt;/p&gt;

&lt;p&gt;In this post, we’ll demonstrate ACID properties using an Accounts table in Oracle SQL.&lt;br&gt;
DROP TABLE Accounts PURGE;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Accounts (&lt;br&gt;
    acc_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR2(50),&lt;br&gt;
    balance INT CHECK (balance &amp;gt;= 0)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES (101, 'Arjun', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (102, 'Sneha', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (103, 'Kiran', 7000);&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;DROP TABLE Accounts PURGE;&lt;/p&gt;

&lt;p&gt;CREATE TABLE Accounts (&lt;br&gt;
    acc_no INT PRIMARY KEY,&lt;br&gt;
    name VARCHAR2(50),&lt;br&gt;
    balance INT CHECK (balance &amp;gt;= 0)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;INSERT INTO Accounts VALUES (101, 'Arjun', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (102, 'Sneha', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (103, 'Kiran', 7000);&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F06zv28zcms0u3lwhsjh9.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%2F06zv28zcms0u3lwhsjh9.png" alt=" " width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Atomicity&lt;/strong&gt;&lt;br&gt;
SET SERVEROUTPUT ON;&lt;/p&gt;

&lt;p&gt;BEGIN&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE('--- Atomicity Test ---');&lt;br&gt;
    SAVEPOINT start_trans;&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;UPDATE Accounts SET balance = balance - 1000 WHERE acc_no = 101;
UPDATE Accounts SET balance = balance + 1000 WHERE acc_no = 102;

ROLLBACK TO start_trans;

FOR rec IN (SELECT * FROM Accounts ORDER BY acc_no) LOOP
    DBMS_OUTPUT.PUT_LINE(rec.acc_no || ' - ' || rec.name || ' : ' || rec.balance);
END LOOP;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

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

&lt;p&gt;&lt;strong&gt;2.Consistency&lt;/strong&gt;&lt;br&gt;
BEGIN&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE('--- Consistency Test ---');&lt;br&gt;
    INSERT INTO Accounts VALUES (104, 'Meena', -2000);&lt;br&gt;
EXCEPTION&lt;br&gt;
    WHEN OTHERS THEN&lt;br&gt;
        DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM);&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%2Fdkav6zpzr0bl7wbbkfi1.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%2Fdkav6zpzr0bl7wbbkfi1.png" alt=" " width="800" height="377"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Isolation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;BEGIN;&lt;br&gt;
UPDATE Accounts SET balance = balance - 500 WHERE acc_no = 103;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Durability&lt;/strong&gt;&lt;br&gt;
BEGIN&lt;br&gt;
    DBMS_OUTPUT.PUT_LINE('--- Durability Test ---');&lt;br&gt;
    UPDATE Accounts SET balance = balance + 200 WHERE acc_no = 102;&lt;br&gt;
    COMMIT;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

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

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

&lt;p&gt;ACID properties ensure that database transactions are safe, reliable, and consistent, even in case of failures or concurrent operations.&lt;br&gt;
They are the backbone of all transactional databases.&lt;/p&gt;

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

</description>
      <category>oracle</category>
      <category>database</category>
      <category>tutorial</category>
      <category>sql</category>
    </item>
    <item>
      <title>Cursor + Trigger — SQL Practice</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sun, 05 Oct 2025 15:42:02 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/cursor-trigger-sql-practice-ko8</link>
      <guid>https://forem.com/harini_srika24cb016_1a/cursor-trigger-sql-practice-ko8</guid>
      <description>&lt;p&gt;In this post, we’ll explore two powerful SQL concepts — Cursors and Triggers — with complete examples that you can run directly in Oracle LiveSQL.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CURSOR&lt;/strong&gt; — Process Cursor with Condition&lt;br&gt;
 Problem Statement:&lt;/p&gt;

&lt;p&gt;Create a cursor that displays employee names whose salary is greater than 50,000 from the Employee table.&lt;br&gt;
CREATE TABLE Employee (&lt;br&gt;
    EmpID NUMBER PRIMARY KEY,&lt;br&gt;
    EmpName VARCHAR2(100),&lt;br&gt;
    Salary NUMBER(10,2)&lt;br&gt;
);&lt;br&gt;
INSERT INTO Employee VALUES (1, 'Arjun', 45000);&lt;br&gt;
INSERT INTO Employee VALUES (2, 'Sneha', 52000);&lt;br&gt;
INSERT INTO Employee VALUES (3, 'Kiran', 60000);&lt;br&gt;
INSERT INTO Employee VALUES (4, 'Meena', 48000);&lt;br&gt;
COMMIT;&lt;br&gt;
SET SERVEROUTPUT ON;&lt;/p&gt;

&lt;p&gt;DECLARE&lt;br&gt;
    v_EmpName Employee.EmpName%TYPE;&lt;br&gt;
    v_Salary  Employee.Salary%TYPE;&lt;br&gt;
    CURSOR emp_cursor IS&lt;br&gt;
        SELECT EmpName, Salary&lt;br&gt;
        FROM Employee&lt;br&gt;
        WHERE Salary &amp;gt; 50000;&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;em&gt;TRIGGER *&lt;/em&gt;— AFTER INSERT Trigger (Student Table)&lt;br&gt;
Problem Statement:&lt;/p&gt;

&lt;p&gt;Whenever a new student is added to the Students table, automatically insert a log entry into the Student_Audit table to keep track of the registration.&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID NUMBER PRIMARY KEY,&lt;br&gt;
    StudentName VARCHAR2(100),&lt;br&gt;
    Course VARCHAR2(100)&lt;br&gt;
);&lt;br&gt;
CREATE TABLE Student_Audit (&lt;br&gt;
    AuditID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br&gt;
    StudentID NUMBER,&lt;br&gt;
    StudentName VARCHAR2(100),&lt;br&gt;
    ActionTaken VARCHAR2(100),&lt;br&gt;
    ActionDate DATE&lt;br&gt;
);&lt;br&gt;
CREATE OR REPLACE TRIGGER trg_AfterStudentInsert&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, ActionTaken, ActionDate)&lt;br&gt;
    VALUES (:NEW.StudentID, :NEW.StudentName, 'New Student Registered', SYSDATE);&lt;br&gt;
END;&lt;br&gt;
INSERT INTO Students (StudentID, StudentName, Course)&lt;br&gt;
VALUES (1, 'Harini', 'Computer Science');&lt;br&gt;
COMMIT;&lt;br&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%2Fg5raf1xp85anee4nl25t.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%2Fg5raf1xp85anee4nl25t.png" alt=" " width="800" height="550"&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%2Fhz3ikcdkmjg9lkdbt65i.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%2Fhz3ikcdkmjg9lkdbt65i.png" alt=" " width="800" height="402"&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%2F2za09pa6rhwoqdj8qsfk.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%2F2za09pa6rhwoqdj8qsfk.png" alt=" " width="800" height="381"&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%2Frxhja7er8v8a8ja2nswy.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%2Frxhja7er8v8a8ja2nswy.png" alt=" " width="800" height="380"&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%2Fhk9wyjre29e5ikl1xi4n.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%2Fhk9wyjre29e5ikl1xi4n.png" alt=" " width="800" height="381"&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%2Fv4bxgyjlj4y92wzp9zms.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%2Fv4bxgyjlj4y92wzp9zms.png" alt=" " width="800" height="378"&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%2F9sq9jzm6j310y5btujun.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%2F9sq9jzm6j310y5btujun.png" alt=" " width="800" height="518"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;br&gt;
Cursors help process data row by row, while triggers automatically perform actions when data changes.&lt;br&gt;
Together, they make SQL more powerful by combining control and automation in database operations.&lt;br&gt;
Thank you &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiding me!!!!&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>database</category>
      <category>sql</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>"Database Normalization Explained: 1NF 3NF with SQL Example"</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Sat, 04 Oct 2025 14:12:57 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/database-normalization-explained-1nf-3nf-with-sql-example-1532</link>
      <guid>https://forem.com/harini_srika24cb016_1a/database-normalization-explained-1nf-3nf-with-sql-example-1532</guid>
      <description>&lt;p&gt;Database normalization is the process of organizing data to reduce redundancy and improve data integrity. In this tutorial, we’ll go step-by-step from &lt;strong&gt;Unnormalized Table → 1NF → 2NF → 3NF&lt;/strong&gt;, and implement it using &lt;strong&gt;MySQL&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;We’ll also write a &lt;strong&gt;JOIN query&lt;/strong&gt; to display students along with their courses and instructors.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Insertion Anomaly:&lt;/strong&gt; Cannot add a new course without assigning it to a student.  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Update Anomaly:&lt;/strong&gt; If an instructor’s phone number changes, multiple rows must be updated.
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Deletion Anomaly:&lt;/strong&gt; Removing a student could delete information about the course and instructor.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Rule: Each column should have &lt;strong&gt;atomic values&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;Our table already satisfies 1NF.  &lt;/p&gt;

&lt;p&gt;CREATE TABLE StudentCourses_1NF (&lt;br&gt;
    StudentName VARCHAR(50),&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    Instructor VARCHAR(50),&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;Rule: Must be in 1NF, and remove partial dependencies.&lt;/p&gt;

&lt;p&gt;CourseName, Instructor, InstructorPhone depend only on CourseID.&lt;/p&gt;

&lt;p&gt;StudentName depends only on the student.&lt;br&gt;
-- Students Table&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID INT PRIMARY KEY AUTO_INCREMENT,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Courses Table&lt;br&gt;
CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    Instructor VARCHAR(50),&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Enrollments Table (linking students to courses)&lt;br&gt;
CREATE TABLE Enrollments (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;Rule: Must be in 2NF, and remove transitive dependencies.&lt;/p&gt;

&lt;p&gt;InstructorPhone depends on Instructor.&lt;/p&gt;

&lt;p&gt;Move instructors to a separate table.&lt;br&gt;
-- Students Table&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
    StudentID INT PRIMARY KEY AUTO_INCREMENT,&lt;br&gt;
    StudentName VARCHAR(50)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Instructors Table&lt;br&gt;
CREATE TABLE Instructors (&lt;br&gt;
    InstructorID INT PRIMARY KEY AUTO_INCREMENT,&lt;br&gt;
    InstructorName VARCHAR(50),&lt;br&gt;
    InstructorPhone VARCHAR(15)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Courses Table&lt;br&gt;
CREATE TABLE Courses (&lt;br&gt;
    CourseID VARCHAR(10) PRIMARY KEY,&lt;br&gt;
    CourseName VARCHAR(50),&lt;br&gt;
    InstructorID INT,&lt;br&gt;
    FOREIGN KEY (InstructorID) REFERENCES Instructors(InstructorID)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;-- Enrollments Table&lt;br&gt;
CREATE TABLE Enrollments (&lt;br&gt;
    StudentID INT,&lt;br&gt;
    CourseID VARCHAR(10),&lt;br&gt;
    PRIMARY KEY (StudentID, CourseID),&lt;br&gt;
    FOREIGN KEY (StudentID) REFERENCES Students(StudentID),&lt;br&gt;
    FOREIGN KEY (CourseID) REFERENCES Courses(CourseID)&lt;br&gt;
);&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Insert Sample Data
-- Insert Students
INSERT INTO Students (StudentName) VALUES
('Arjun'),
('Priya'),
('Kiran');&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;-- Insert Instructors&lt;br&gt;
INSERT INTO Instructors (InstructorName, InstructorPhone) VALUES&lt;br&gt;
('Dr. Kumar', '9876543210'),&lt;br&gt;
('Dr. Mehta', '9123456780'),&lt;br&gt;
('Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;-- Insert Courses&lt;br&gt;
INSERT INTO Courses (CourseID, CourseName, InstructorID) VALUES&lt;br&gt;
('C101', 'DBMS', 1),&lt;br&gt;
('C102', 'Data Mining', 2),&lt;br&gt;
('C103', 'AI', 3);&lt;/p&gt;

&lt;p&gt;-- Insert Enrollments&lt;br&gt;
INSERT INTO Enrollments (StudentID, CourseID) VALUES&lt;br&gt;
(1, 'C101'),&lt;br&gt;
(1, 'C102'),&lt;br&gt;
(2, 'C101'),&lt;br&gt;
(3, 'C103');&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;JOIN Query to List Students, Courses &amp;amp; Instructors
SELECT 
s.StudentName,
c.CourseName,
i.InstructorName,
i.InstructorPhone
FROM Enrollments e
JOIN Students s ON e.StudentID = s.StudentID
JOIN Courses c ON e.CourseID = c.CourseID
JOIN Instructors i ON c.InstructorID = i.InstructorID;&lt;/li&gt;
&lt;/ol&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%2Fo83xmp1xh5jpp7q4w3xa.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%2Fo83xmp1xh5jpp7q4w3xa.png" alt=" " width="800" height="416"&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%2F4emrfj73vk4jnhh7q2xk.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%2F4emrfj73vk4jnhh7q2xk.png" alt=" " width="800" height="343"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Normalization reduces redundancy and prevents anomalies.&lt;/p&gt;

&lt;p&gt;1NF: Remove repeating groups&lt;/p&gt;

&lt;p&gt;2NF: Remove partial dependencies&lt;/p&gt;

&lt;p&gt;3NF: Remove transitive dependencies&lt;/p&gt;

&lt;p&gt;Using MySQL and JOINs, we can fetch combined data efficiently.&lt;/p&gt;

&lt;p&gt;This approach ensures a clean, scalable database structure, ready for real-world applications.&lt;br&gt;
Thank you &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; sir for guiding mee!!!!&lt;/p&gt;

</description>
      <category>database</category>
      <category>tutorial</category>
      <category>mysql</category>
      <category>sql</category>
    </item>
    <item>
      <title>COLLEGE STUDENT AND COURSES MANAGEMENT SYSTEMS</title>
      <dc:creator>HARINI SRI K A 24CB016</dc:creator>
      <pubDate>Fri, 22 Aug 2025 09:03:50 +0000</pubDate>
      <link>https://forem.com/harini_srika24cb016_1a/college-student-and-courses-management-systems-5h6o</link>
      <guid>https://forem.com/harini_srika24cb016_1a/college-student-and-courses-management-systems-5h6o</guid>
      <description>&lt;p&gt;I am  build a basic College student and Student-Course Enrollment system using Oracle SQL. &lt;br&gt;
we are performing the below operations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create tables&lt;/li&gt;
&lt;li&gt;Insert data&lt;/li&gt;
&lt;li&gt;Alter tables&lt;/li&gt;
&lt;li&gt;Add constraints&lt;/li&gt;
&lt;li&gt;Run simple queries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Step 1: Create Tables&lt;/p&gt;

&lt;p&gt;sql&lt;br&gt;
Students Table&lt;br&gt;
CREATE TABLE Students (&lt;br&gt;
  StudentID NUMBER PRIMARY KEY,&lt;br&gt;
  Name 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;/p&gt;

&lt;p&gt;Courses Table&lt;br&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)&lt;br&gt;
);&lt;/p&gt;

&lt;p&gt;Enrollments Table&lt;br&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;/p&gt;

&lt;p&gt;Step 2: Insert Sample Data&lt;br&gt;
sql&lt;br&gt;
Copy code&lt;br&gt;
-- Insert Students&lt;br&gt;
INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (1, 'Divi', 'CB', TO_DATE('3/15/2007', 'MM-DD-YYYY'), '&lt;a href="mailto:divi.cb@example.com"&gt;divi.cb@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (2, 'Harini', 'CB', TO_DATE('11/22/2006', 'MM-DD-YYYY'), '&lt;a href="mailto:harini.cb@example.com"&gt;harini.cb@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;INSERT INTO Students (StudentID, Name, Dept, DOB, Email)&lt;br&gt;
VALUES (3, 'Diksha', 'CB', TO_DATE('7/9/2006', 'MM-DD-YYYY'), '&lt;a href="mailto:diksha.cb@example.com"&gt;diksha.cb@example.com&lt;/a&gt;');&lt;/p&gt;

&lt;p&gt;Insert Courses&lt;br&gt;
INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (101, 'DBMS', 3);&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (102, 'OS', 4);&lt;/p&gt;

&lt;p&gt;INSERT INTO Courses (CourseID, CourseName, Credits)&lt;br&gt;
VALUES (103, 'Data Structures', 5);&lt;/p&gt;

&lt;p&gt;-- Commit changes&lt;br&gt;
COMMIT;&lt;/p&gt;

&lt;p&gt;Step 3: Modify Table and Add Constraint&lt;br&gt;
sql&lt;br&gt;
Copy code&lt;br&gt;
-- Add phone number to Students&lt;br&gt;
ALTER TABLE Students&lt;br&gt;
ADD PhoneNo VARCHAR2(10);&lt;/p&gt;

&lt;p&gt;-- Add check constraint to Courses&lt;br&gt;
ALTER TABLE Courses&lt;br&gt;
ADD CHECK (Credits BETWEEN 1 AND 5);&lt;/p&gt;

&lt;p&gt;Step 4: Query the Data&lt;br&gt;
sql&lt;br&gt;
Copy code&lt;br&gt;
-- Show student names in uppercase and email length&lt;br&gt;
SELECT&lt;br&gt;
  UPPER(Name) AS Student_Name,&lt;br&gt;
  LENGTH(Email) AS Email_Length&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;-- Show all courses&lt;br&gt;
SELECT CourseID, CourseName, Credits&lt;br&gt;
FROM Courses;&lt;/p&gt;

&lt;p&gt;Show all students&lt;br&gt;
SELECT StudentID, Name, Dept, DOB, Email, PhoneNo&lt;br&gt;
FROM Students;&lt;/p&gt;

&lt;p&gt;Summary&lt;br&gt;
In this post, we built a simple database using Oracle SQL:&lt;/p&gt;

&lt;p&gt;Created 3 tables&lt;/p&gt;

&lt;p&gt;Inserted sample data&lt;/p&gt;

&lt;p&gt;Added a column and constraint&lt;/p&gt;

&lt;p&gt;Ran a few basic queries&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%2Fj891kbbio81e2xc5ud1g.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%2Fj891kbbio81e2xc5ud1g.png" alt=" " width="800" height="388"&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%2Fluyenlsau8c5m0u9lku0.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%2Fluyenlsau8c5m0u9lku0.png" alt=" " width="800" height="425"&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%2Fbkqg6lg9t6lsq7l57mod.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%2Fbkqg6lg9t6lsq7l57mod.png" alt=" " width="800" height="564"&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%2F5mtw110dhpabf1erqqkl.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%2F5mtw110dhpabf1erqqkl.png" alt=" " width="800" height="420"&gt;&lt;/a&gt;&lt;br&gt;
Thank you &lt;a class="mentioned-user" href="https://dev.to/santhoshnc"&gt;@santhoshnc&lt;/a&gt; for guiding and supporting me!!&lt;/p&gt;

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