<?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: ABITHA N 24CB001</title>
    <description>The latest articles on DEV Community by ABITHA N 24CB001 (@abitha_n24cb001_9847d321).</description>
    <link>https://dev.to/abitha_n24cb001_9847d321</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%2F3485651%2Fd97e3014-4ad7-44ff-8ce5-7d4a801954f4.png</url>
      <title>DEV Community: ABITHA N 24CB001</title>
      <link>https://dev.to/abitha_n24cb001_9847d321</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/abitha_n24cb001_9847d321"/>
    <language>en</language>
    <item>
      <title>Amazon EC2 in Cloud Computing: Features, Use Cases, and Pricing</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Thu, 18 Dec 2025 14:53:29 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/amazon-ec2-in-cloud-computing-features-use-cases-and-pricing-11hc</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/amazon-ec2-in-cloud-computing-features-use-cases-and-pricing-11hc</guid>
      <description>&lt;p&gt;📌&lt;strong&gt;Overview of service:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 (Elastic Compute Cloud) provides virtual servers, called instances, that allow users to run applications in the cloud without owning physical hardware. With EC2, developers can quickly launch servers, configure them as needed, and scale them up or down based on demand.&lt;/p&gt;

&lt;p&gt;EC2 removes the need for upfront hardware investment and gives full control over computing resources.&lt;/p&gt;

&lt;p&gt;⭐&lt;strong&gt;Key Features of Amazon EC2:&lt;/strong&gt;&lt;br&gt;
  Some important features of Amazon EC2 are:&lt;br&gt;
    ● Scalable compute capacity – increase or decrease instances anytime&lt;br&gt;
    ● Multiple instance types – optimized for compute, memory, or storage&lt;br&gt;
    ● Flexible operating systems – supports Linux, Windows, and more&lt;br&gt;
    ● High availability – deploy instances across multiple Availability Zones&lt;br&gt;
    ● Security – integrated with IAM, security groups, and key pairs&lt;/p&gt;

&lt;p&gt;🗂️&lt;strong&gt;AWS Category / Cloud Domain:&lt;/strong&gt;&lt;br&gt;
    * Amazon EC2 belongs to the Compute category in AWS.&lt;br&gt;
    * Cloud Domain: Virtual Servers / Compute Infrastructure&lt;/p&gt;

&lt;p&gt;🔄&lt;strong&gt;Where Amazon EC2 Fits in the Cloud / DevOps Lifecycle:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 is used throughout the application lifecycle:&lt;br&gt;
    ● Development – test and build applications&lt;br&gt;
    ● Deployment – host web servers and backend services&lt;br&gt;
    ● Scaling – handle increased traffic using auto scaling&lt;br&gt;
    ● Operations – monitor and maintain running applications&lt;br&gt;
    ● Disaster Recovery – launch instances from backups when needed&lt;/p&gt;

&lt;p&gt;💻&lt;strong&gt;Programming Languages &amp;amp; Access Methods:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 can be accessed using:&lt;br&gt;
    ● AWS Management Console&lt;br&gt;
    ● AWS CLI&lt;br&gt;
    ● AWS SDKs, such as:&lt;br&gt;
    ● Python (Boto3)&lt;br&gt;
    ● Java&lt;br&gt;
    ● JavaScript (Node.js)&lt;br&gt;
    ● C#&lt;br&gt;
    ● REST APIs&lt;br&gt;
These options allow easy automation and integration with DevOps tools.&lt;/p&gt;

&lt;p&gt;💰&lt;strong&gt;Pricing Model:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 follows a pay-as-you-go pricing model. Pricing depends on:&lt;br&gt;
    ● Instance type (CPU, memory, storage)&lt;br&gt;
    ● Running time (per second or per hour)&lt;br&gt;
    ● Pricing option, such as:&lt;br&gt;
    ● On-Demand&lt;br&gt;
    ● Reserved Instances&lt;br&gt;
    ● Spot Instances&lt;br&gt;
   There is no long-term commitment for on-demand usage.&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%2Fuofmmzf9hpeif0zoegu6.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%2Fuofmmzf9hpeif0zoegu6.png" alt=" " width="800" height="484"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;✅&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
Amazon EC2 is the foundation of many cloud applications and services. Its flexibility, scalability, and wide range of configuration options make it ideal for hosting everything from small websites to large enterprise systems. Learning EC2 is a key step in understanding AWS and cloud computing.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>webdev</category>
      <category>ec2</category>
      <category>aws</category>
    </item>
    <item>
      <title>Atlassian Bamboo in the DevSecOps Periodic Table</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Thu, 18 Dec 2025 14:20:53 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/atlassian-bamboo-in-the-devsecops-periodic-table-3c2l</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/atlassian-bamboo-in-the-devsecops-periodic-table-3c2l</guid>
      <description>&lt;p&gt;DevSecOps focuses on integrating development, security, and operations into a single continuous workflow. One of the key tools that supports this workflow is Atlassian Bamboo, a popular CI/CD tool that appears in the DevSecOps Periodic Table.&lt;/p&gt;

&lt;p&gt;This blog provides a quick overview of Atlassian Bamboo, its features, and how it fits into DevOps and DevSecOps practices.&lt;/p&gt;

&lt;p&gt;🔍&lt;strong&gt;Overview of the tool:&lt;/strong&gt; &lt;br&gt;
Atlassian Bamboo is a Continuous Integration and Continuous Deployment (CI/CD) server developed by Atlassian. It automates the process of building, testing, and deploying applications, helping development teams deliver software efficiently and reliably.&lt;/p&gt;

&lt;p&gt;Bamboo is tightly integrated with other Atlassian tools such as Jira and Bitbucket, making it a strong choice for teams already using the Atlassian ecosystem.&lt;/p&gt;

&lt;p&gt;⭐&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;br&gt;
      ● Automated build, test, and deployment pipelines&lt;br&gt;
      ● Seamless integration with Jira and Bitbucket&lt;br&gt;
      ● Built-in deployment projects&lt;br&gt;
      ● Support for multiple build agents&lt;br&gt;
      ● Test result tracking and reporting&lt;br&gt;
      ● Role-based access control&lt;/p&gt;

&lt;p&gt;🔄&lt;strong&gt;How It Fits into DevOps / DevSecOps:&lt;/strong&gt;&lt;br&gt;
In the DevOps lifecycle, Atlassian Bamboo plays a crucial role in:&lt;br&gt;
● Build&lt;br&gt;
● Test&lt;br&gt;
● Release&lt;br&gt;
● Deploy&lt;br&gt;
From a DevSecOps perspective, Bamboo helps by enabling:&lt;br&gt;
● Automated security and quality checks in pipelines&lt;br&gt;
● Controlled and auditable deployment workflows&lt;br&gt;
● Integration with security scanning and testing tools&lt;br&gt;
● This ensures that security is embedded early and continuously throughout the software delivery process.&lt;/p&gt;

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

&lt;h1&gt;
  
  
  Java (core implementation)
&lt;/h1&gt;

&lt;p&gt;Supports projects written in:&lt;br&gt;
● Java&lt;br&gt;
● Python&lt;br&gt;
● JavaScript&lt;br&gt;
● NET&lt;br&gt;
● PHP&lt;/p&gt;

&lt;p&gt;🏢&lt;strong&gt;Parent Company:&lt;/strong&gt;&lt;br&gt;
● Atlassian Corporation&lt;br&gt;
● An Australian software company known for tools like Jira, Confluence and         Bitbucket.&lt;/p&gt;

&lt;p&gt;💰&lt;strong&gt;Open Source or Paid?&lt;/strong&gt;&lt;br&gt;
Atlassian Bamboo is a commercial CI/CD tool.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;❌ Not open source&lt;/li&gt;
&lt;li&gt;✅ Paid tool
Offers a free trial, but requires a license for long-term use.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devops</category>
      <category>devsecops</category>
      <category>programming</category>
      <category>learning</category>
    </item>
    <item>
      <title>MONGODB</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 07:21:25 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/mongodb-23ap</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/mongodb-23ap</guid>
      <description>&lt;p&gt;I decided to use MongoDB for building my blog. As I have never worked with MongoDB before, I still have to figure out how to get everything to work. So, the only thing left to do now is getting started with MongoDB. How do we set it up, add users, and create our database.&lt;/p&gt;

&lt;p&gt;First, lets download the community server which is free and open source. I will be using the Windows version for my desktop and this article. After installing the software, I also installed mongosh since I am an avid command line user. After adding mongosh to my PATH variablesIt is halfway when trying to boot the server again, that I figured that using mongosh might not have been the brightest of ideas. MongoDB is already new to me and using beta software that does not support all commands yet is not making things any easier. So, I switched to the legacy mongo shell, since the documentation is up to date for that. I managed to boot the server again and logging into my database!Creating a Database&lt;br&gt;
I got my authentication ready, the final step now is to create a database. You can easily create a new database in MongoDB with the use  command. If the database doesn't exist yet, it creates it. Keep in mind though that MongoDB will save the database only when you put data in it. Until then, it is not saved and does not show up when using the show dbs command.&lt;/p&gt;

&lt;p&gt;With MongoDB running on my desktop, I can finally start with a little proof of concept. I will use that proof of concept to figure out how to connect to MongoDB and add my first set of data using Spring Boot. That should allow me to get a better grip on the technologies to start implementing it for the actual project. You know... less hacky and a bit more clean. However, that is for another post!&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%2F3bmv1qqq9q6c3fny6fk6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bmv1qqq9q6c3fny6fk6.jpg" alt=" " width="800" height="378"&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%2Fr2u1yeh1i3yreniyvqpn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr2u1yeh1i3yreniyvqpn.jpg" alt=" " width="800" height="381"&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%2Fxr1f0vznpfvvfrwaz2dy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxr1f0vznpfvvfrwaz2dy.jpg" alt=" " width="800" height="378"&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%2F48em7ch1g7gp5m5zlubm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48em7ch1g7gp5m5zlubm.jpg" alt=" " width="800" height="380"&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%2Fdr41g7oir24ljgegtba9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdr41g7oir24ljgegtba9.jpg" alt=" " width="800" height="376"&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%2Fh5rlxelrt5ycctjrdgsc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5rlxelrt5ycctjrdgsc.jpg" alt=" " width="800" height="376"&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%2F9zovn9tt64subci3u7xb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9zovn9tt64subci3u7xb.jpg" alt=" " width="800" height="377"&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%2F0gntxnzion0ah0lbsa2o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0gntxnzion0ah0lbsa2o.jpg" alt=" " width="800" height="372"&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%2Frs6njb1hmhk8m15tj0f6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frs6njb1hmhk8m15tj0f6.jpg" alt=" " width="800" height="501"&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%2F9pomkzb1jakteeykmek0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9pomkzb1jakteeykmek0.jpg" alt=" " width="800" height="526"&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%2Fsatpisx2b36fituqk5ys.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsatpisx2b36fituqk5ys.jpg" alt=" " width="800" height="332"&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%2Fshuwnxc0md5qubakphtn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fshuwnxc0md5qubakphtn.jpg" alt=" " width="800" height="296"&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%2Fmavb1xgkq2vuahkhrtzv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmavb1xgkq2vuahkhrtzv.jpg" alt=" " width="800" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Transactions, Deadlocks &amp; Log-Based Recovery</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 07:11:05 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/transactions-deadlocks-log-based-recovery-346n</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/transactions-deadlocks-log-based-recovery-346n</guid>
      <description>&lt;p&gt;**Databases are powerful because they ensure data integrity even when multiple users access the system at the same time. This is managed through transactions, deadlock detection, and log-based recovery.&lt;/p&gt;

&lt;p&gt;In this blog, I demonstrate these concepts using a single Accounts table in Oracle Live SQL.**&lt;/p&gt;

&lt;p&gt;📌 Schema Setup&lt;br&gt;
We first create a table to simulate account balances:&lt;br&gt;
CREATE TABLE Accounts (&lt;br&gt;
acc_no INT PRIMARY KEY,&lt;br&gt;
name VARCHAR2(50),&lt;br&gt;
balance INT&lt;br&gt;
);&lt;/p&gt;

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

&lt;p&gt;COMMIT;&lt;/p&gt;

&lt;p&gt;1️⃣ Transaction – Atomicity &amp;amp; Rollback&lt;br&gt;
Goal: Transfer ₹500 from Alice to Bob. Rollback before commit to ensure no partial update.&lt;br&gt;
-- Start transaction&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance - 500&lt;br&gt;
WHERE name = 'Alice';&lt;/p&gt;

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

&lt;p&gt;-- Rollback the transaction&lt;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;-- Check balances (should be unchanged)&lt;br&gt;
SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;✅ Balances remain:&lt;/p&gt;

&lt;p&gt;Alice → 1000&lt;br&gt;
Bob → 1500&lt;/p&gt;

&lt;p&gt;Lesson: Atomicity ensures that either all operations in a transaction succeed, or none do.&lt;/p&gt;

&lt;p&gt;2️⃣ Deadlock Simulation&lt;br&gt;
Goal: Simulate a deadlock between two sessions.&lt;br&gt;
Session 1: Lock Alice’s account and try to update Bob’s.&lt;br&gt;
Session 2: Lock Bob’s account and try to update Alice’s.&lt;/p&gt;

&lt;p&gt;🔥 Oracle detects circular wait → deadlock → one session is rolled back automatically.&lt;br&gt;
Lesson: Deadlocks can occur when two transactions wait on each other’s locks. DBMS automatically resolves them.&lt;/p&gt;

&lt;p&gt;3️⃣ Log-Based Recovery&lt;br&gt;
Goal: Show that updates are tracked for recovery using logs.&lt;br&gt;
-- Start transaction&lt;br&gt;
UPDATE Accounts SET balance = balance + 1000 WHERE name = 'Alice';&lt;/p&gt;

&lt;p&gt;-- Rollback&lt;br&gt;
ROLLBACK;&lt;/p&gt;

&lt;p&gt;-- Verify&lt;br&gt;
SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;✅ Even after rollback, balances are restored, demonstrating undo capability via internal logs.&lt;br&gt;
Note: In Oracle Live SQL, redo/undo logs are internal. The rollback proves that log-based recovery works.&lt;/p&gt;

&lt;p&gt;🎯 Summary&lt;br&gt;
Through these demos, I explored:&lt;br&gt;
✅ Atomicity &amp;amp; Rollback – all-or-nothing transactions&lt;br&gt;
✅ Deadlocks – isolation and conflict resolution&lt;br&gt;
✅ Log-Based Recovery – durability and undo operations&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 guiding us to try these experiments hands-on in Oracle Live SQL.&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%2Fo2628tedau7yw4cqhlu4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2628tedau7yw4cqhlu4.jpg" alt=" " width="800" height="340"&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%2Fg4r4aivemeuo8ve348iz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg4r4aivemeuo8ve348iz.jpg" alt=" " width="800" height="325"&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%2Fckwl7pw7ftdau6me3nyc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fckwl7pw7ftdau6me3nyc.jpg" alt=" " width="800" height="321"&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%2Fqpcj4uqgazba5v59gvt4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqpcj4uqgazba5v59gvt4.jpg" alt=" " width="800" height="363"&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%2Fxd22mo9ospuet6hfo955.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxd22mo9ospuet6hfo955.jpg" alt=" " width="800" height="329"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>tutorial</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Database Hashing</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 07:03:19 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/database-hashing-35i3</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/database-hashing-35i3</guid>
      <description>&lt;p&gt;I started my writing journey on Hashnode, but I've been wanting to expand my audience by widely publishing articles across the interwebs. I discovered dev.to as another great platform to share developer-related content.Dev.to has dedicated support for posting to the community from RSS. Additionally, dev.to supports canonical linking to protect SEO rankings. Luckily, Hashnode provides an RSS feed so republishing content from Hashnode onto dev.to is easy and fast.&lt;/p&gt;

&lt;p&gt;You can find your Hashnode RSS example, my. You can also find it linked on your blog page. See the arrow in the screenshot below for the location. After creating a dev.to account, open the settings and head to the Extensions tab. Under the Extensions tab, you will find Publishing to DEV Community from RSS. Simply copy your Hashnode RSS feed into the RSS Feed URL field and hit Save Feed Settings. After a few seconds, your Hashnode articles will appear as drafts in the dev.to dashboard.&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%2Fxzgo95p8ztn1ykmcxi59.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxzgo95p8ztn1ykmcxi59.jpg" alt=" " width="800" height="340"&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%2Fm30cakbovhpgq5br9lsa.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm30cakbovhpgq5br9lsa.jpg" alt=" " width="800" height="329"&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%2Fjr35qw8y6wcd2uu61wfl.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjr35qw8y6wcd2uu61wfl.jpg" alt=" " width="800" height="325"&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%2Frl2xxgxy44bd1hn8d6yr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frl2xxgxy44bd1hn8d6yr.jpg" alt=" " width="800" height="363"&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%2Fw7j9twup0fizfndfhzml.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw7j9twup0fizfndfhzml.jpg" alt=" " width="800" height="321"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devto</category>
      <category>productivity</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Understanding ACID Properties in SQL with Examples</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 06:46:49 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/understanding-acid-properties-in-sql-with-examples-4263</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/understanding-acid-properties-in-sql-with-examples-4263</guid>
      <description>&lt;p&gt;ACID properties — Atomicity, Consistency, Isolation, Durability — ensure that database transactions are reliable, safe, and predictable. Let’s explore them with a practical Accounts table.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Sample Accounts Table
CREATE TABLE Accounts (
acc_no INT PRIMARY KEY,
name VARCHAR2(50),
balance INT CHECK (balance &amp;gt;= 0) -- enforce positive balance
);&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Insert sample data&lt;br&gt;
INSERT INTO Accounts VALUES (101, 'Alice', 5000);&lt;br&gt;
INSERT INTO Accounts VALUES (102, 'Bob', 3000);&lt;br&gt;
INSERT INTO Accounts VALUES (103, 'Charlie', 7000);&lt;/p&gt;

&lt;p&gt;COMMIT;&lt;/p&gt;

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

&lt;p&gt;Definition: Either all operations in a transaction succeed, or none do.&lt;/p&gt;

&lt;p&gt;Scenario: Transfer 1000 from Alice to Bob, but simulate a failure midway.&lt;/p&gt;

&lt;p&gt;-- Start transaction&lt;br&gt;
BEGIN&lt;br&gt;
-- Deduct 1000 from Alice&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance - 1000&lt;br&gt;
WHERE acc_no = 101;&lt;/p&gt;

&lt;p&gt;-- Simulate error (e.g., divide by zero)&lt;br&gt;
-- This will cause the transaction to fail&lt;br&gt;
-- Uncomment the following line to simulate failure&lt;br&gt;
-- DECLARE x NUMBER := 1/0; END;&lt;/p&gt;

&lt;p&gt;-- Add 1000 to Bob&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance + 1000&lt;br&gt;
WHERE acc_no = 102;&lt;/p&gt;

&lt;p&gt;COMMIT; -- Will not reach here if error occurs&lt;br&gt;
EXCEPTION&lt;br&gt;
WHEN OTHERS THEN&lt;br&gt;
ROLLBACK; -- Ensures no partial update&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('Transaction failed, rolled back.');&lt;br&gt;
END;&lt;br&gt;
/&lt;br&gt;
✅ After rollback, balances remain unchanged — Atomicity is maintained.&lt;/p&gt;

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

&lt;p&gt;Definition: Transactions must leave the database in a valid state.&lt;/p&gt;

&lt;p&gt;Scenario: Try inserting a negative balance.&lt;/p&gt;

&lt;p&gt;-- This will fail due to the CHECK constraint&lt;br&gt;
INSERT INTO Accounts VALUES (104, 'David', -500);&lt;/p&gt;

&lt;p&gt;The database rejects this, ensuring Consistency.&lt;/p&gt;

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

&lt;p&gt;Definition: Concurrent transactions should not interfere with each other.&lt;/p&gt;

&lt;p&gt;Scenario: Two sessions:&lt;/p&gt;

&lt;p&gt;Session 1: Update Alice’s balance&lt;/p&gt;

&lt;p&gt;UPDATE Accounts&lt;br&gt;
SET balance = balance + 2000&lt;br&gt;
WHERE acc_no = 101;&lt;br&gt;
-- Do not commit yet&lt;/p&gt;

&lt;p&gt;Session 2: Read Alice’s balance&lt;/p&gt;

&lt;p&gt;SELECT balance FROM Accounts WHERE acc_no = 101;&lt;/p&gt;

&lt;p&gt;Session 2 will not see the uncommitted change (depending on isolation level, default is READ COMMITTED).&lt;/p&gt;

&lt;p&gt;This prevents dirty reads — demonstrating Isolation.&lt;/p&gt;

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

&lt;p&gt;Definition: Once a transaction is committed, data persists even after a crash.&lt;/p&gt;

&lt;p&gt;-- Commit a transaction&lt;br&gt;
UPDATE Accounts&lt;br&gt;
SET balance = balance + 1000&lt;br&gt;
WHERE acc_no = 102;&lt;/p&gt;

&lt;p&gt;COMMIT;&lt;/p&gt;

&lt;p&gt;Restart the database.&lt;/p&gt;

&lt;p&gt;Run:&lt;br&gt;
SELECT * FROM Accounts;&lt;/p&gt;

&lt;p&gt;Changes persist — Durability is guaranteed.&lt;/p&gt;

&lt;p&gt;Summary Table&lt;br&gt;
ACID Property Example Action&lt;br&gt;
Atomicity Transfer money → rollback on error&lt;br&gt;
Consistency CHECK constraint prevents negative balance&lt;br&gt;
Isolation Concurrent reads/writes don’t interfere&lt;br&gt;
Durability Committed changes persist after DB restart&lt;/p&gt;

&lt;p&gt;💡Tip: Try changing isolation levels (READ COMMITTED, SERIALIZABLE) to observe how concurrent transactions behave differently.&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%2F0vyzhlq0okuccju1lja2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0vyzhlq0okuccju1lja2.jpg" alt=" " width="800" height="367"&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%2F76kasz7c4l1y4wtns1ok.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76kasz7c4l1y4wtns1ok.jpg" alt=" " width="800" height="377"&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%2Fw3m8vqsy6ggwyqmcc5hr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fw3m8vqsy6ggwyqmcc5hr.jpg" alt=" " width="800" height="329"&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%2Fctw5x7z5c02shzovd33q.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fctw5x7z5c02shzovd33q.jpg" alt=" " width="800" height="377"&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%2F9v002oq9srhvnt9wcq4t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9v002oq9srhvnt9wcq4t.jpg" alt=" " width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>beginners</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Database cursor amd trigger</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 06:32:27 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/database-cursor-amd-trigger-3ofp</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/database-cursor-amd-trigger-3ofp</guid>
      <description>&lt;p&gt;A cursor in a Database Management System (DBMS) is a special control structure used to traverse and manipulate the rows in a result set one at a time. While standard SQL operations are typically set-based and act on all rows simultaneously, a cursor enables row-by-row processing, making it ideal for scenarios that require sequential logic, conditional operations, or custom computations on each individual row. Cursors are especially useful in complex business workflows where fine-grained control over data handling is necessary.&lt;/p&gt;

&lt;p&gt;Step 1: Create Employee Table&lt;br&gt;
CREATE TABLE Employee ( Emp_ID NUMBER PRIMARY KEY, Emp_Name VARCHAR2(50), Salary NUMBER );&lt;/p&gt;

&lt;p&gt;Step 2: Insert Sample Data&lt;br&gt;
INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (1, 'Ramesh', 60000); INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (2, 'Suresh', 45000); INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (3, 'Anita', 75000); INSERT INTO Employee (Emp_ID, Emp_Name, Salary) VALUES (4, 'Kavya', 50000);&lt;/p&gt;

&lt;p&gt;Step 3: Create and Process Cursor&lt;br&gt;
OPEN emp_cursor; LOOP FETCH emp_cursor INTO v_EmpName, v_Salary; EXIT WHEN emp_cursor%NOTFOUND; DBMS_OUTPUT.PUT_LINE('Employee: ' || v_EmpName || ', Salary: ₹' || v_Salary); END LOOP; CLOSE emp_cursor; END;&lt;/p&gt;

&lt;p&gt;DBMS_OUTPUT.PUT_LINE prints each employee’s name and salary.&lt;/p&gt;

&lt;p&gt;DEFINITION OF TRIGGER IN DBMS&lt;/p&gt;

&lt;p&gt;A trigger in DBMS is a special stored procedure that automatically executes in response to events like INSERT, UPDATE, or DELETE on a table or view. It’s commonly used to enforce business rules, maintain data integrity, and log changes without manual intervention.&lt;/p&gt;

&lt;p&gt;Step 1: Create Students Table&lt;br&gt;
CREATE TABLE Students ( Student_ID NUMBER PRIMARY KEY, Student_Name VARCHAR2(50), Course VARCHAR2(50) );&lt;/p&gt;

&lt;p&gt;Step 2: Create Student_Audit Table&lt;br&gt;
CREATE TABLE Student_Audit ( Audit_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY, Student_ID NUMBER, Student_Name VARCHAR2(50), Action VARCHAR2(50), Action_Time TIMESTAMP );&lt;/p&gt;

&lt;p&gt;Step 3: Create AFTER INSERT Trigger&lt;br&gt;
CREATE OR REPLACE TRIGGER trg_after_student_insert AFTER INSERT ON Students FOR EACH ROW BEGIN INSERT INTO Student_Audit (Student_ID, Student_Name, Action, Action_Time) VALUES (:NEW.Student_ID, :NEW.Student_Name, 'INSERT', SYSTIMESTAMP); END;&lt;/p&gt;

&lt;p&gt;Step 4: Test Trigger&lt;br&gt;
INSERT INTO Students (Student_ID, Student_Name, Course) VALUES (1, 'Ravi', 'Computer Science'); INSERT INTO Students (Student_ID, Student_Name, Course) VALUES (2, 'Meena', 'Electrical Engineering');&lt;/p&gt;

&lt;p&gt;Step 5: Verify Audit Table&lt;br&gt;
SELECT * FROM Student_Audit;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F973296xsj7pqt5uemqyc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F973296xsj7pqt5uemqyc.jpg" alt=" " width="800" height="375"&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%2F0uqnfwrbjvk604bbn5gj.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0uqnfwrbjvk604bbn5gj.jpg" alt=" " width="800" height="378"&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%2Fy6ek82qncokqeeclbkq3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6ek82qncokqeeclbkq3.jpg" alt=" " width="800" height="334"&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%2Fgnxd2gwj873a22jyl1nt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgnxd2gwj873a22jyl1nt.jpg" alt=" " width="800" height="367"&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%2Ff0tnlzzgweywcghmt22b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff0tnlzzgweywcghmt22b.jpg" alt=" " width="800" height="377"&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%2Fz0h7uifok1jwd8geqdaw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz0h7uifok1jwd8geqdaw.jpg" alt=" " width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>oracle</category>
      <category>tutorial</category>
      <category>database</category>
      <category>sql</category>
    </item>
    <item>
      <title>Database normalization</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Tue, 07 Oct 2025 06:20:06 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/database-normalization-169c</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/database-normalization-169c</guid>
      <description>&lt;p&gt;Database normalization is the process of structuring a relational database to reduce redundancy and improve data integrity.&lt;br&gt;
In this blog, we'll normalize a student-course-instructor dataset from Unnormalized Form 1NF ← 2NF ←&lt;/p&gt;

&lt;p&gt;3NF, and implement it in SQL.&lt;/p&gt;

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

&lt;p&gt;The initial unnormalized table includes details of students, their courses, instructors, and corresponding grades.Step 2: Identifying Anomalies&lt;/p&gt;

&lt;p&gt;Insertion anomaly: A new course cannot&lt;/p&gt;

&lt;p&gt;be added unless it is linked to a student.&lt;/p&gt;

&lt;p&gt;Update anomaly: Modifying a course&lt;/p&gt;

&lt;p&gt;name requires updating it in several rows.&lt;/p&gt;

&lt;p&gt;Deletion anomaly: Removing a student&lt;/p&gt;

&lt;p&gt;may also remove valuable course details if that student was the only enrollee.&lt;/p&gt;

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

&lt;p&gt;Rule: Eliminate repeating groups, ensure atomic values.&lt;/p&gt;

&lt;p&gt;So, we split multi-valued attributes into separate rows:Step 2: Identifying Anomalies&lt;/p&gt;

&lt;p&gt;Insertion anomaly: A new course cannot&lt;/p&gt;

&lt;p&gt;be added unless it is linked to a student.&lt;/p&gt;

&lt;p&gt;Update anomaly: Modifying a course&lt;/p&gt;

&lt;p&gt;name requires updating it in several rows.&lt;/p&gt;

&lt;p&gt;Deletion anomaly: Removing a student&lt;/p&gt;

&lt;p&gt;may also remove valuable course details if that student was the only enrollee.1 First Normal Form (1NF)&lt;/p&gt;

&lt;p&gt;Rule: Eliminate repeating groups, ensure atomic values.&lt;/p&gt;

&lt;p&gt;So, we split multi-valued attributes into separate rows:SQL Table in 1 NF,&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students_1NF (&lt;/p&gt;

&lt;p&gt;Student_ID INT,&lt;/p&gt;

&lt;p&gt;Student_Name VARCHAR2(100),&lt;/p&gt;

&lt;p&gt;Course_ID INT,&lt;/p&gt;

&lt;p&gt;Course_Name VARCHAR2(100),&lt;/p&gt;

&lt;p&gt;Instructor VARCHAR2(100),&lt;/p&gt;

&lt;p&gt;Grade CHAR(2),&lt;/p&gt;

&lt;p&gt;PRIMARY KEY (Student_ID, Course_ID) );2 Second Normal Form (2NF)&lt;/p&gt;

&lt;p&gt;Rule: Remove partial dependency → non-key attributes should depend on thewhole primary key.&lt;/p&gt;

&lt;p&gt;Here, student_id depends on student info, course_id depends on course info, and instructor depends on the course.&lt;/p&gt;

&lt;p&gt;So, we split into three tables:&lt;/p&gt;

&lt;p&gt;SQL Create Tables (2NF):&lt;/p&gt;

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

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

&lt;p&gt;CREATE TABLE Enrollments ( StudentID VARCHAR2(10), CourseID VARCHAR2(10),PRIMARY KEY (StudentID, CourseID), FOREIGN KEY (StudentID) REFERENCES Student(StudentID), FOREIGN KEY (CourseID) REFERENCES Course (CourseID) );3 Third Normal Form (3NF)&lt;/p&gt;

&lt;p&gt;Rule: Remove transitive dependenciesnon-key attributes depending on other non-key attributes).&lt;/p&gt;

&lt;p&gt;Here, instructor_phone depends on instructor, not on course_id. So we separate Instructor data:&lt;/p&gt;

&lt;p&gt;SQL Create Tables (3NF):&lt;/p&gt;

&lt;p&gt;REATE TABLE Instructors ( InstructorID VARCHAR2(10) PRIMARY KEY, InstructorName VARCHAR2(100), InstructorPhone VARCHAR2(15)&lt;/p&gt;

&lt;p&gt;);&lt;/p&gt;

&lt;p&gt;CREATE TABLE Courses3NF ( CourseID VARCHAR2(10) PRIMARY KEY, CourseName VARCHAR2(100), InstructorID VARCHAR2(10), FOREIGN KEY (InstructorID) REFERENCES Instructor(InstructorID) );CREATE TABLE Students3NF ( StudentID VARCHAR2(10) PRIMARY KEY, StudentName VARCHAR2(100) );&lt;/p&gt;

&lt;p&gt;CREATE TABLE Enrollments3NF ( StudentID VARCHAR2(10), CourseID VARCHAR2(10), PRIMARY KEY (StudentID, CourseID), FOREIGN KEY (StudentID) REFERENCES Student3NF(StudentID), FOREIGN KEY (CourseID) REFERENCES Course3NF(CourseID) );Step 6: Insert Sample Data&lt;/p&gt;

&lt;p&gt;Instructors&lt;/p&gt;

&lt;p&gt;INSERT INTO Instructor VALUES ('101', 'Dr.&lt;/p&gt;

&lt;p&gt;Kumar', '9876543210');&lt;/p&gt;

&lt;p&gt;INSERT INTO Instructor VALUES ('102', 'Dr.&lt;/p&gt;

&lt;p&gt;Mehta', '9123456780');&lt;/p&gt;

&lt;p&gt;INSERT INTO Instructor VALUES ('103', 'Dr.&lt;/p&gt;

&lt;p&gt;Rao', '9988776655');&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Course3NF VALUES ('C101', 'DBMS', '101');&lt;/p&gt;

&lt;p&gt;INSERT INTO Course3NF VALUES ('C102',&lt;/p&gt;

&lt;p&gt;'Data Mining', '102');&lt;/p&gt;

&lt;p&gt;INSERT INTO Course3NF VALUES ('C103', 'ΑΙ', '103');&lt;/p&gt;

&lt;p&gt;Students&lt;/p&gt;

&lt;p&gt;INSERT INTO Student3NF VALUES ('S01', 'Arjun');&lt;/p&gt;

&lt;p&gt;INSERT INTO Student3NF VALUES ('S02',&lt;/p&gt;

&lt;p&gt;'Priva'):Enrollment&lt;/p&gt;

&lt;p&gt;INSERT INTO Enrollment3NF VALUES ('S01', 'C101');&lt;/p&gt;

&lt;p&gt;INSERT INTO Enrollment3NF VALUES ('S01', 'C102');&lt;/p&gt;

&lt;p&gt;INSERT INTO Enrollment3NF VALUES ('S02', 'C101');&lt;/p&gt;

&lt;p&gt;INSERT INTO Enrollment3NF VALUES ('S03', 'C103');Step 7: Query with JOINS&lt;/p&gt;

&lt;p&gt;SELECT s.StudentName, c.CourseName, i.InstructorName&lt;/p&gt;

&lt;p&gt;FROM Enrollment3NF e&lt;/p&gt;

&lt;p&gt;JOIN Student3NF s ON e. StudentID =s.StudentID&lt;/p&gt;

&lt;p&gt;JOIN Course3NF c ON e. CourseID = c.CourselD&lt;/p&gt;

&lt;p&gt;JOIN Instructor i ON c.InstructorID = i.InstructorID;** Wrap Up**&lt;/p&gt;

&lt;p&gt;We started with an unnormalized table and step-by-step applied:&lt;/p&gt;

&lt;p&gt;1NF ← Removed repeating groups&lt;/p&gt;

&lt;p&gt;2NF ← Removed partial dependencies&lt;/p&gt;

&lt;p&gt;3NF ← Removed transitive dependencies&lt;/p&gt;

&lt;p&gt;Result&lt;/p&gt;

&lt;p&gt;A clean, normalized database3NF&lt;/p&gt;

&lt;p&gt;← Removed transitive dependencies&lt;/p&gt;

&lt;p&gt;← Result A clean, normalized database with reduced redundancy, better integrity, and easier queries&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;SQL #Oracle&lt;/p&gt;

&lt;h1&gt;
  
  
  DBMS
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DatabaseNormalization
&lt;/h1&gt;

&lt;h1&gt;
  
  
  1NF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  2NF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  3NF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  BCNF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  4NF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  5NF
&lt;/h1&gt;

&lt;h1&gt;
  
  
  DataModeling
&lt;/h1&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%2Fr8sj84vkksl651u2vdzs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8sj84vkksl651u2vdzs.jpg" alt=" " width="800" height="347"&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%2Fo7t4egpgmv8dkn6ontke.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo7t4egpgmv8dkn6ontke.jpg" alt=" " width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>database</category>
      <category>computerscience</category>
      <category>sql</category>
    </item>
    <item>
      <title>Student-Course Management Database</title>
      <dc:creator>ABITHA N 24CB001</dc:creator>
      <pubDate>Mon, 08 Sep 2025 11:07:38 +0000</pubDate>
      <link>https://dev.to/abitha_n24cb001_9847d321/student-course-management-kao</link>
      <guid>https://dev.to/abitha_n24cb001_9847d321/student-course-management-kao</guid>
      <description>&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`In this blog post,I created a simple Student-Course Management Database, step by step, using Oracle Live SQL.What This Project Includes
 *Creating STUDENTS, COURSES, and ENROLLMENTS tables
*Inserting data
Adding constraints (e.g., PRIMARY KEY, CHECK)
*Querying data with SELECT
*Altering tables to add new columns

 1: Creating Tables
CREATE TABLE Students (
  StudentID NUMBER PRIMARY KEY,
  Name VARCHAR2(50) NOT NULL,
  Dept VARCHAR2(30),
  DOB DATE,
  Email VARCHAR2(50) UNIQUE
);

CREATE TABLE Courses (
  CourseID NUMBER PRIMARY KEY,
  CourseName VARCHAR2(50) NOT NULL,
  Credits NUMBER(2)
);

CREATE TABLE Enrollments (
  EnrollmentID NUMBER PRIMARY KEY,
  StudentID NUMBER REFERENCES Students(StudentID),
  CourseID NUMBER REFERENCES Courses(CourseID),
  Grade CHAR(2)
);


This gives us three connected tables:
STUDENTS with student details
COURSES listing the available courses
ENROLLMENTS to track who enrolled in what course and their grades

✍️ Step 2: Inserting Student Data
INSERT INTO Students (StudentID, Name, Dept, DOB, Email)
VALUES (1, 'HARINI', 'Computer Science', TO_DATE('3/15/2007', 'MM/DD/YYYY'), 'harini16cs@gmail.com');

INSERT INTO Students (StudentID, Name, Dept, DOB, Email)
VALUES (2, 'DIVYA', 'AIDS', TO_DATE('11/22/2007', 'MM/DD/YYYY'), 'divya12ad@gmail.com');

INSERT INTO Students (StudentID, Name, Dept, DOB, Email)
VALUES (3, 'DIKSHA', 'IT', TO_DATE('7/9/2008', 'MM/DD/YYYY'), 'diksha11it@gmail.com');

🧠 Step 3: Modifying Tables – Add a Phone Number Column
ALTER TABLE Students
ADD PhoneNo VARCHAR2(10);


This command added a new column to store student phone numbers.

🛡️ Step 4: Adding Constraints – Validating Credits
ALTER TABLE Courses
ADD CHECK (Credits BETWEEN 1 AND 5);

This ensures that no course is added with 0 or more than 5 credits — a simple yet important data validation rule.

📘 Step 5: Inserting Courses
INSERT INTO Courses (CourseID, CourseName, Credits)
VALUES (101, 'MACHINE LEARNING', 3);

INSERT INTO Courses (CourseID, CourseName, Credits)
VALUES (102, 'OPERATING SYSTEMS', 4);

INSERT INTO Courses (CourseID, CourseName, Credits)
VALUES (103, 'Data Structures', 5);

🔍 Step 6: Querying Data

Let’s get all student information including the new PhoneNo column:

SELECT StudentID, Name, Dept, DOB, Email, PhoneNo
FROM Students;

Output Example:

STUDENTID   NAME    DEPT    DOB EMAIL   PHONENO
1   HARINI  Computer Science    3/15/2007   harini16cs@gmail.com
    (null)
2   DIVYA   AIDS    11/22/2007  divya12ad@gmail.com
    (null)
3   DIKSHA  IT  7/9/2008    diksha11it@gmail.com
    (null)

Note: I haven’t added phone numbers yet, so they appear as null.`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fhcz21refm2ul56imbcam.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhcz21refm2ul56imbcam.jpg" alt=" " width="800" height="400"&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%2Fmxkupbd813u66tujc9kn.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxkupbd813u66tujc9kn.jpg" alt=" " width="800" height="400"&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%2F675b73o91dgcsfmzft2t.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F675b73o91dgcsfmzft2t.jpg" alt=" " width="800" height="401"&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%2Fwym1d527qflke7pc3f54.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwym1d527qflke7pc3f54.jpg" alt=" " width="800" height="402"&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%2Fcemd5ygjl1hnax5mqq2l.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcemd5ygjl1hnax5mqq2l.jpg" alt=" " width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

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