<?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: Kausi Tarun</title>
    <description>The latest articles on DEV Community by Kausi Tarun (@kausi_tarun_77e6874368465).</description>
    <link>https://dev.to/kausi_tarun_77e6874368465</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%2F3450980%2F4f51ed1a-1754-409a-ae9b-e416249a77bd.png</url>
      <title>DEV Community: Kausi Tarun</title>
      <link>https://dev.to/kausi_tarun_77e6874368465</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kausi_tarun_77e6874368465"/>
    <language>en</language>
    <item>
      <title>AWS Analytics Services</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Thu, 18 Dec 2025 15:46:09 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/aws-analytics-services-64b</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/aws-analytics-services-64b</guid>
      <description>&lt;p&gt;🔹 AWS Analytics Services&lt;/p&gt;

&lt;p&gt;1️⃣ Amazon Redshift&lt;/p&gt;

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

&lt;p&gt;Amazon Redshift is a fully managed, petabyte-scale cloud data warehouse service used for fast SQL-based analytics on large datasets.&lt;/p&gt;

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

&lt;p&gt;Columnar storage&lt;/p&gt;

&lt;p&gt;1.Massively Parallel Processing (MPP)&lt;/p&gt;

&lt;p&gt;2.High-performance SQL queries&lt;/p&gt;

&lt;p&gt;3.Integration with S3, Glue, QuickSight&lt;/p&gt;

&lt;p&gt;4.Redshift Spectrum for querying S3 data&lt;/p&gt;

&lt;p&gt;5.Automated backups and scaling&lt;/p&gt;

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

&lt;p&gt;1.Analytics&lt;/p&gt;

&lt;p&gt;2.Data Warehousing&lt;/p&gt;

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

&lt;p&gt;1.Data analytics &amp;amp; business intelligence&lt;/p&gt;

&lt;p&gt;2.Reporting and decision-making stage&lt;/p&gt;

&lt;p&gt;3.Used after data ingestion and ETL processes&lt;/p&gt;

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

&lt;p&gt;1.SQL&lt;/p&gt;

&lt;p&gt;2.AWS Console&lt;/p&gt;

&lt;p&gt;3.AWS CLI&lt;/p&gt;

&lt;p&gt;4.JDBC / ODBC&lt;/p&gt;

&lt;p&gt;5.SDKs (Python, Java, etc.)&lt;/p&gt;

&lt;p&gt;🔸 Pricing Model&lt;/p&gt;

&lt;p&gt;1.Pay for node type and number of nodes&lt;/p&gt;

&lt;p&gt;2.On-demand or Reserved instances&lt;/p&gt;

&lt;p&gt;3.Separate charges for storage and Spectrum queries&lt;/p&gt;

&lt;p&gt;2️⃣ Amazon Athena&lt;/p&gt;

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

&lt;p&gt;Amazon Athena is a serverless interactive query service that allows you to analyze data directly in Amazon S3 using standard SQL.&lt;/p&gt;

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

&lt;p&gt;1.Serverless (no infrastructure management)&lt;/p&gt;

&lt;p&gt;2.Query data directly from S3&lt;/p&gt;

&lt;p&gt;3.Supports structured and semi-structured data&lt;/p&gt;

&lt;p&gt;4.Integrates with AWS Glue Data Catalog&lt;/p&gt;

&lt;p&gt;5.Fast ad-hoc querying&lt;/p&gt;

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

&lt;p&gt;1.Analytics&lt;/p&gt;

&lt;p&gt;2.Serverless Data Query&lt;/p&gt;

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

&lt;p&gt;1.Ad-hoc analysis&lt;/p&gt;

&lt;p&gt;2.Log analysis and monitoring&lt;/p&gt;

&lt;p&gt;3.Quick insights without ETL&lt;/p&gt;

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

&lt;p&gt;1.SQL&lt;/p&gt;

&lt;p&gt;2.AWS Console&lt;/p&gt;

&lt;p&gt;3.AWS CLI&lt;/p&gt;

&lt;p&gt;4.SDKs (Python, Java, etc.)&lt;/p&gt;

&lt;p&gt;5.JDBC / ODBC&lt;/p&gt;

&lt;p&gt;🔸 Pricing Model&lt;/p&gt;

&lt;p&gt;1.Pay per query&lt;/p&gt;

&lt;p&gt;2.Charged per TB of data scanned&lt;/p&gt;

&lt;p&gt;3.No infrastructure or cluster cost&lt;/p&gt;

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

&lt;p&gt;Redshift is best for large-scale analytics and BI workloads.&lt;/p&gt;

&lt;p&gt;Athena is best for quick, serverless SQL queries on S3 data.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Google Kubernetes Engine</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Thu, 18 Dec 2025 15:34:56 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/google-kubernetes-engine-25cb</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/google-kubernetes-engine-25cb</guid>
      <description>&lt;p&gt;🔹 Tool Name: Google Kubernetes Engine (GKE)&lt;/p&gt;

&lt;p&gt;1️⃣ Overview of the Tool&lt;/p&gt;

&lt;p&gt;Google Kubernetes Engine (GKE) is a managed Kubernetes service provided by Google Cloud. It helps you deploy, manage, and scale containerized applications using Kubernetes without managing the underlying infrastructure.&lt;/p&gt;

&lt;p&gt;2️⃣ Key Features&lt;/p&gt;

&lt;p&gt;1.Managed Kubernetes control plane&lt;/p&gt;

&lt;p&gt;2.Automatic scaling (Horizontal &amp;amp; Vertical Pod Autoscaling)&lt;/p&gt;

&lt;p&gt;3.Integrated security (IAM, Workload Identity)&lt;/p&gt;

&lt;p&gt;4.Automated upgrades and patching&lt;/p&gt;

&lt;p&gt;5.Monitoring and logging with Google Cloud Operations&lt;/p&gt;

&lt;p&gt;6.Support for multi-cluster and hybrid deployments&lt;/p&gt;

&lt;p&gt;3️⃣ How It Fits into DevOps / DevSecOps&lt;/p&gt;

&lt;p&gt;DevOps:&lt;/p&gt;

&lt;p&gt;1.Enables CI/CD pipelines for containerized applications&lt;/p&gt;

&lt;p&gt;2.Automates deployment, scaling, and rollback&lt;/p&gt;

&lt;p&gt;DevSecOps:&lt;/p&gt;

&lt;p&gt;1.Built-in security policies and access control&lt;/p&gt;

&lt;p&gt;2.Image vulnerability scanning&lt;/p&gt;

&lt;p&gt;2.Network policies and secrets management&lt;/p&gt;

&lt;p&gt;4.Compliance and audit logging&lt;/p&gt;

&lt;p&gt;4️⃣ Programming Languages Used / Supported&lt;/p&gt;

&lt;p&gt;GKE itself is built on Go (Golang), but it supports applications written in:&lt;/p&gt;

&lt;p&gt;1.Java&lt;/p&gt;

&lt;p&gt;2.Python&lt;/p&gt;

&lt;p&gt;3.JavaScript (Node.js)&lt;/p&gt;

&lt;p&gt;4.Ruby, PHP, etc.&lt;/p&gt;

&lt;p&gt;5️⃣ Parent Company&lt;/p&gt;

&lt;p&gt;1.Parent Company: Google&lt;/p&gt;

&lt;p&gt;2.Platform: Google Cloud Platform (GCP)&lt;/p&gt;

&lt;p&gt;6️⃣ Open Source or Paid&lt;/p&gt;

&lt;p&gt;1.Kubernetes: Open Source&lt;/p&gt;

&lt;p&gt;2.GKE: Paid (Managed Service)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You pay for cluster management and underlying  cloud resources &lt;/li&gt;
&lt;li&gt;Free tier available for experimentation(limited)&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;GKE is a managed Kubernetes service by Google that simplifies container orchestration and enhances DevOps and DevSecOps workflows through automation, scalability, and built-in security features.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>googlecloud</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>MongoDB</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 15:16:49 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/mongodb-4mc5</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/mongodb-4mc5</guid>
      <description>&lt;p&gt;Introduction to MongoDB&lt;/p&gt;

&lt;p&gt;MongoDB is a NoSQL (Non-Relational) database that stores data in a flexible, document-oriented format called BSON (Binary JSON). It is widely used for modern applications that require scalability, flexibility, and high performance.&lt;/p&gt;

&lt;p&gt;🧩 Key Features of MongoDB&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Document-Oriented Storage&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Data is stored in documents (similar to JSON objects).&lt;/p&gt;

&lt;p&gt;Each document contains key–value pairs, making it more flexible than traditional row-column structures.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Schema-less&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Unlike SQL databases, MongoDB does not require a fixed schema.&lt;/p&gt;

&lt;p&gt;Documents in the same collection can have different fields and structures.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Collections and Databases&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A database contains multiple collections.&lt;/p&gt;

&lt;p&gt;A collection contains multiple documents.&lt;br&gt;
(Equivalent of table → collection, and row → document in SQL.)&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Scalability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Supports horizontal scaling using sharding, allowing data to be distributed across multiple servers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Replication and High Availability&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;MongoDB uses replica sets for automatic failover and data redundancy.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Rich Query Language&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Supports powerful queries, filtering, aggregation, and indexing for performance optimization.&lt;/p&gt;

&lt;p&gt;⚙️ Basic MongoDB Structure&lt;/p&gt;

&lt;p&gt;SQL Term    MongoDB Equivalent&lt;/p&gt;

&lt;p&gt;Database    Database&lt;br&gt;
Table   Collection&lt;br&gt;
Row Document&lt;br&gt;
Column  Field&lt;br&gt;
Primary Key _id field (auto-generated)&lt;/p&gt;

&lt;p&gt;🚀 Advantages of MongoDB&lt;/p&gt;

&lt;p&gt;Flexible data model&lt;/p&gt;

&lt;p&gt;High performance and scalability&lt;/p&gt;

&lt;p&gt;Easy integration with programming languages (like Python, Java, Node.js, etc.)&lt;/p&gt;

&lt;p&gt;Ideal for big data, real-time analytics, and cloud applications&lt;/p&gt;

&lt;p&gt;Schema (Collection: students)&lt;br&gt;
Each student document should follow the structure below:&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;/p&gt;

&lt;p&gt;1️⃣ Create (Insert)&lt;br&gt;
Insert at least 5 student records into the students collection.&lt;/p&gt;

&lt;p&gt;2️⃣ Read (Query)&lt;br&gt;
Display all student records.&lt;/p&gt;

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

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

&lt;p&gt;3️⃣ Update&lt;br&gt;
Update the CGPA of a specific student.&lt;/p&gt;

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

&lt;p&gt;4️⃣ Delete&lt;br&gt;
Delete one student record by student_id.&lt;/p&gt;

&lt;p&gt;Delete all students having CGPA &amp;lt; 7.5.&lt;br&gt;
Deliverables&lt;br&gt;
MongoDB queries (insert, find, update, delete.&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%2Flpf11vkaxlmvgi1heogz.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%2Flpf11vkaxlmvgi1heogz.jpg" alt=" " width="800" height="492"&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%2F0h8jws2ylpz1kpf5h9in.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%2F0h8jws2ylpz1kpf5h9in.jpg" alt=" " width="800" height="379"&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%2Fgwo6s36i1q5pbxkiwke6.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%2Fgwo6s36i1q5pbxkiwke6.jpg" alt=" " width="800" height="375"&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%2Fdbwu9ew7tabmz7nksjuk.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%2Fdbwu9ew7tabmz7nksjuk.jpg" alt=" " width="800" height="360"&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%2F2ucklz5azdv6nm8bba5t.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%2F2ucklz5azdv6nm8bba5t.jpg" alt=" " width="800" height="397"&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%2F82auf438gqhq3bl67hhs.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%2F82auf438gqhq3bl67hhs.jpg" alt=" " width="800" height="406"&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%2F9czsh4rkya9brlaz0qug.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%2F9czsh4rkya9brlaz0qug.jpg" alt=" " width="800" height="358"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;MongoDB is a powerful database solution designed for handling large volumes of unstructured or semi-structured data efficiently. Its flexibility, scalability, and ease of use make it a popular choice for modern web and mobile applications.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Acid Property with SQL Transactions</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:48:11 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/acid-property-with-sql-transactions-3c62</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/acid-property-with-sql-transactions-3c62</guid>
      <description>&lt;p&gt;🔷 Introduction to ACID Properties in SQL Transactions&lt;/p&gt;

&lt;p&gt;In SQL databases, a transaction is a sequence of one or more SQL operations (like INSERT, UPDATE, or DELETE) executed as a single unit of work.&lt;br&gt;
To ensure the reliability and consistency of data, transactions must follow the ACID properties.&lt;/p&gt;

&lt;p&gt;1.Create a table Accounts(acc_no INT PRIMARY KEY, name VARCHAR(50), balance INT). Insert 3 sample rows.&lt;/p&gt;

&lt;p&gt;2.Atomicity: Start a transaction that transfers money. Rollback midway → ensure no partial update remains.&lt;/p&gt;

&lt;p&gt;3.Consistency: Try inserting a record with negative balance → should be rejected.&lt;/p&gt;

&lt;p&gt;4.Isolation: Run two sessions at once – one updating, the other reading → observe isolation.&lt;/p&gt;

&lt;p&gt;Durability: Commit a transaction → restart DB → ensure data persists.&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%2Fchq6f9nr5kuyyz7whzq9.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%2Fchq6f9nr5kuyyz7whzq9.jpg" alt=" " width="800" height="431"&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%2Fzh3cb8c9s4eawau4oe8r.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%2Fzh3cb8c9s4eawau4oe8r.jpg" alt=" " width="800" height="408"&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%2Fel9ubkdm5knku3bqqcox.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%2Fel9ubkdm5knku3bqqcox.jpg" alt=" " width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>DBMS - Transactions,Deadlocks &amp; Log-based Recovery</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:36:04 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/dbms-transactionsdeadlocks-log-based-recovery-4b24</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/dbms-transactionsdeadlocks-log-based-recovery-4b24</guid>
      <description>&lt;p&gt;Working with databases is not just about storing data — it’s about ensuring reliability, atomicity, and consistency, especially when multiple users or processes are involved. In this post, we’ll explore three important concepts using a simple Accounts table:&lt;/p&gt;

&lt;p&gt;✅ Transactions &amp;amp; Rollback (Atomicity)&lt;/p&gt;

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

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

&lt;p&gt;Setup: The Accounts Table&lt;/p&gt;

&lt;p&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;
);&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%2F3ti29xr2zdw05xc5zj1p.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%2F3ti29xr2zdw05xc5zj1p.jpg" alt=" " width="800" height="435"&gt;&lt;/a&gt;&lt;br&gt;
INSERT INTO CustomerAccounts VALUES (1, 'Emily', 1000);&lt;br&gt;
INSERT INTO CustomerAccounts VALUES (2, 'Bobby', 1500);&lt;br&gt;
INSERT INTO CustomerAccounts VALUES (3, 'Caleb', 2000);&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%2Fclwtlnxd7aho9brx5kjv.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%2Fclwtlnxd7aho9brx5kjv.jpg" alt=" " width="800" height="349"&gt;&lt;/a&gt;&lt;br&gt;
SELECT * FROM CustomerAccounts;&lt;/p&gt;

&lt;p&gt;Transaction – Atomicity &amp;amp; Rollback&lt;/p&gt;

&lt;p&gt;Transactions ensure all-or-nothing execution. Let’s try transferring 500 from Emily to Bobby, but roll it back midway.&lt;/p&gt;

&lt;p&gt;Deduct 500 from Emily&lt;/p&gt;

&lt;p&gt;UPDATE CustomerAccounts&lt;br&gt;
SET balance = balance - 500&lt;br&gt;
WHERE name = 'Emily';&lt;/p&gt;

&lt;p&gt;Add 500 to Bobby&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 transaction&lt;/p&gt;

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

&lt;p&gt;Deadlocks occur when two transactions wait on each other’s locks. Let’s simulate with two sessions:&lt;/p&gt;

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

&lt;p&gt;-- Lock Emily&lt;br&gt;
UPDATE Accounts SET balance = balance - 100 WHERE name = 'Emily';&lt;br&gt;
-- Do NOT commit&lt;/p&gt;

&lt;p&gt;Session 2:&lt;br&gt;
-- Lock Bobby&lt;br&gt;
UPDATE CustomerAccounts SET balance = balance - 200 WHERE name = 'Bobby';&lt;br&gt;
-- Do NOT commit&lt;/p&gt;

&lt;p&gt;Continuing Session 1&lt;br&gt;
-- Try updating Bobby (held by Session2)&lt;br&gt;
UPDATE CustomerAccounts SET balance = balance + 100 WHERE name = 'Bobby';&lt;/p&gt;

&lt;p&gt;Continuing Session 2&lt;br&gt;
-- Try updating Emily (held by Session 1)&lt;br&gt;
UPDATE CustomerAccounts SET balance = balance + 200 WHERE name = 'Emily';&lt;/p&gt;

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

&lt;p&gt;Modern DBMSs use logs (MySQL → Binary Log, PostgreSQL → WAL) to ensure durability and rollback safety.&lt;/p&gt;

&lt;p&gt;-- Update Caleb&lt;br&gt;
UPDATE CustomerAccounts SET balance = balance + 300 WHERE name = 'Caleb';&lt;/p&gt;

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

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

&lt;p&gt;In this tutorial, we covered:&lt;/p&gt;

&lt;p&gt;Transactions &amp;amp; Rollback → Ensures atomicity&lt;/p&gt;

&lt;p&gt;Deadlock Simulation → Shows concurrency pitfalls&lt;/p&gt;

&lt;p&gt;Log-Based Recovery → Demonstrates how databases ensure durability&lt;/p&gt;

&lt;p&gt;These concepts form the backbone of ACID properties in relational databases.&lt;/p&gt;

</description>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
      <category>computerscience</category>
    </item>
    <item>
      <title>Indexing ,Hashing &amp; Query Optimization in DBMS</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:22:46 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/indexing-hashing-query-optimization-in-dbms-271p</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/indexing-hashing-query-optimization-in-dbms-271p</guid>
      <description>&lt;p&gt;Databases handle massive data efficiently using indexes and hashing. Instead of scanning entire tables, indexes act like the index of a book, making lookups faster.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll build a Students table, create B-Tree, B+Tree, and Hash indexes, and run queries to see their effect.&lt;/p&gt;

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

&lt;p&gt;📖 Key Definitions&lt;br&gt;
🔹 Indexing&lt;/p&gt;

&lt;p&gt;Indexing is a technique to speed up data retrieval from a database. Instead of scanning the whole table, the database uses an index (like a book index) to locate the rows quickly.&lt;/p&gt;

&lt;p&gt;B-Tree Index&lt;/p&gt;

&lt;p&gt;A B-Tree (Balanced Tree) index stores keys in a sorted order, allowing logarithmic time searches. It is efficient for:&lt;/p&gt;

&lt;p&gt;B+ Tree Index&lt;/p&gt;

&lt;p&gt;A B+ Tree is a variation of the B-Tree where all values are stored in the leaf nodes, and internal nodes only store keys for navigation.&lt;/p&gt;

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

&lt;p&gt;A Hash Index uses a hashing function to map keys (like dept) into buckets.&lt;/p&gt;

&lt;p&gt;Query Optimization&lt;/p&gt;

&lt;p&gt;The process of minimising query execution time by leveraging indexes and writing efficient SQL statements.&lt;/p&gt;

&lt;p&gt;Step 1: Create Students Table&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students1 (&lt;br&gt;
roll_no INT PRIMARY KEY,&lt;br&gt;
name VARCHAR2(50),&lt;br&gt;
dept VARCHAR2(20),&lt;br&gt;
cgpa NUMBER(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%2Fwdmr6tmmp8sy20xp8gmg.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%2Fwdmr6tmmp8sy20xp8gmg.jpg" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;br&gt;
Inserting Sample Records&lt;/p&gt;

&lt;p&gt;INSERT INTO Students1 VALUES (101, 'Ana', 'CSBS', 8.5);&lt;br&gt;
INSERT INTO Students1 VALUES (102, 'Paul', 'CSBS', 7.8);&lt;br&gt;
INSERT INTO Students1 VALUES (103, 'Kevin', 'ECE', 9.0);&lt;br&gt;
INSERT INTO Students1 VALUES (104, 'Angelin', 'ME', 8.2);&lt;br&gt;
INSERT INTO Students1 VALUES (105, 'Vanessa', 'CSBS', 8.8);&lt;br&gt;
INSERT INTO Students1 VALUES (106, 'Ria', 'ECE', 7.5);&lt;br&gt;
INSERT INTO Students1 VALUES (107, 'Samuel', 'ME', 8.7);&lt;br&gt;
INSERT INTO Students1 VALUES (108, 'Noah', 'CSBS', 6.9);&lt;br&gt;
INSERT INTO Students1 VALUES (109, 'Marin', 'ECE', 8.0);&lt;br&gt;
INSERT INTO Students1 VALUES (110, 'Joseph', 'CSBS', 9.2);&lt;br&gt;
INSERT INTO Students1 VALUES (111, 'Trinita', 'ME', 7.9);&lt;br&gt;
INSERT INTO Students1 VALUES (112, 'Ryan', 'CSBS', 8.3);&lt;br&gt;
INSERT INTO Students1 VALUES (113, 'Daniel', 'ECE', 9.1);&lt;br&gt;
INSERT INTO Students1 VALUES (114, 'Kane', 'ME', 7.7);&lt;br&gt;
INSERT INTO Students1 VALUES (115, 'Isha', 'CSBS', 8.6);&lt;br&gt;
INSERT INTO Students1 VALUES (116, 'Sarah', 'ECE', 8.4);&lt;br&gt;
INSERT INTO Students1 VALUES (117, 'Merlin', 'ME', 8.0);&lt;br&gt;
INSERT INTO Students1 VALUES (118, 'James', 'CSBS', 7.6);&lt;br&gt;
INSERT INTO Students1 VALUES (119, 'Page', 'ECE', 8.9);&lt;br&gt;
INSERT INTO Students1 VALUES (120, 'Reynolds', 'ME', 8.1);&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%2Fr3b41hny1fiw42pqj4dc.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%2Fr3b41hny1fiw42pqj4dc.jpg" alt=" " width="800" height="370"&gt;&lt;/a&gt;&lt;br&gt;
B-Tree Index on roll_no&lt;br&gt;
Most DBMSs use B-Trees to index numeric/ordered columns.&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_roll_no ON Students1(roll_no);&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feeblkb1uygkfcwluwbda.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%2Feeblkb1uygkfcwluwbda.jpg" alt=" " width="800" height="364"&gt;&lt;/a&gt;&lt;br&gt;
Query with Index&lt;br&gt;
This fetches details of roll_no = 110 in O(log n) instead of scanning all rows.&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students1 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%2Fcu7tt0cgoz50ox5rm954.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%2Fcu7tt0cgoz50ox5rm954.jpg" alt=" " width="800" height="373"&gt;&lt;/a&gt;&lt;br&gt;
B+ Tree Index on CGPA&lt;br&gt;
B+ Trees are used for range queries, making them perfect for CGPA lookups.&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_cgpa ON Students1(cgpa);&lt;/p&gt;

&lt;p&gt;Query&lt;br&gt;
Display all students with a CGPA&amp;gt; 8.0&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students1 WHERE cgpa &amp;gt; 8.0;&lt;/p&gt;

&lt;p&gt;Hash Index on dept&lt;br&gt;
Hashing is great for exact matches (not ranges).&lt;/p&gt;

&lt;p&gt;CREATE INDEX idx_dept ON Students1(dept);&lt;/p&gt;

&lt;p&gt;Query&lt;br&gt;
Retrieve all students from the CSBS department&lt;/p&gt;

&lt;p&gt;SELECT * FROM Students1 WHERE dept = 'CSBS';&lt;/p&gt;

&lt;p&gt;In this tutorial, we explored:&lt;/p&gt;

&lt;p&gt;B-Tree Index → Fast lookup by roll_no&lt;/p&gt;

&lt;p&gt;B+Tree Index → Efficient range queries (CGPA &amp;gt; 8.0)&lt;/p&gt;

&lt;p&gt;Hash Index → Quick equality checks (dept = CSBS)&lt;/p&gt;

&lt;p&gt;Indexes make queries 10x–100x faster, but they also consume storage &amp;amp; slow down inserts/updates. Use them wisely for query optimization!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Cursor and Trigger in DBMS</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 14:03:19 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/cursor-and-trigger-in-dbms-f08</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/cursor-and-trigger-in-dbms-f08</guid>
      <description>&lt;p&gt;When working with databases, sometimes we need to process records row by row (using Cursors) or automatically respond to events (using Triggers).&lt;/p&gt;

&lt;p&gt;When working with databases, sometimes we need to process records row by row (using Cursors) or automatically respond to events (using Triggers).&lt;/p&gt;

&lt;p&gt;In this tutorial, we’ll:&lt;/p&gt;

&lt;p&gt;✅ Create a Cursor that fetches employees with a salary &amp;gt; 50,000&lt;/p&gt;

&lt;p&gt;✅ Build an AFTER-INSERT Trigger to maintain a student audit log&lt;/p&gt;

&lt;p&gt;🔹 Cursor&lt;/p&gt;

&lt;p&gt;A cursor is a pointer that lets you process query results row by row instead of all at once. Useful when applying conditions or logic to each record.&lt;/p&gt;

&lt;p&gt;Step 1: Employee Cursor Example&lt;/p&gt;

&lt;p&gt;Let’s create a cursor to display employee names with salary &amp;gt; 50,000.&lt;/p&gt;

&lt;p&gt;Step i: Create Employee Table&lt;/p&gt;

&lt;p&gt;CREATE TABLE Employees (&lt;br&gt;
Emp_ID NUMBER PRIMARY KEY,&lt;br&gt;
Emp_Name VARCHAR2(50),&lt;br&gt;
Salary NUMBER&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%2Fxalp1o9525o6czskema7.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%2Fxalp1o9525o6czskema7.jpg" alt=" " width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step ii: Insert Sample Data&lt;/p&gt;

&lt;p&gt;INSERT INTO Employees (Emp_ID, Emp_Name, Salary) VALUES (1, 'Renner', 60000);&lt;br&gt;
INSERT INTO Employees (Emp_ID, Emp_Name, Salary) VALUES (2, 'Samuel', 45000);&lt;br&gt;
INSERT INTO Employees (Emp_ID, Emp_Name, Salary) VALUES (3, 'Ana',&lt;br&gt;
75000);&lt;br&gt;
INSERT INTO Employees (Emp_ID, Emp_Name, Salary) VALUES (4, 'Kylie', 50000);&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%2Fwkbbncbw4j2fer161qhi.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%2Fwkbbncbw4j2fer161qhi.jpg" alt=" " width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step iii: Cursor Implementation&lt;/p&gt;

&lt;p&gt;DECLARE&lt;br&gt;
CURSOR emp_cursor IS&lt;br&gt;
SELECT Emp_Name, Salary FROM Employees WHERE Salary &amp;gt; 50000;&lt;br&gt;
v_EmpName Employees.Emp_Name%TYPE;&lt;br&gt;
v_Salary Employees.Salary%TYPE;&lt;br&gt;
BEGIN&lt;br&gt;
OPEN emp_cursor;&lt;br&gt;
LOOP&lt;br&gt;
FETCH emp_cursor INTO v_EmpName, v_Salary;&lt;br&gt;
EXIT WHEN emp_cursor%NOTFOUND;&lt;br&gt;
DBMS_OUTPUT.PUT_LINE('Employees: ' || v_EmpName || ', Salary: ₹' || v_Salary);&lt;br&gt;
END LOOP;&lt;br&gt;
CLOSE emp_cursor;&lt;br&gt;
END;&lt;br&gt;
/&lt;/p&gt;

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

&lt;p&gt;A trigger is a stored program that automatically runs when a specific event occurs (like INSERT, UPDATE, or DELETE).&lt;/p&gt;

&lt;p&gt;Step 2:AFTER INSERT Trigger&lt;/p&gt;

&lt;p&gt;We’ll now create a Students table and a Students_Audit table to keep track of new registrations.&lt;/p&gt;

&lt;p&gt;Step i: Create Students Table&lt;/p&gt;

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

&lt;p&gt;CREATE TABLE Students_Audit (&lt;br&gt;
Audit_ID NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,&lt;br&gt;
Student_ID NUMBER,&lt;br&gt;
Student_Name VARCHAR2(50),&lt;br&gt;
Action VARCHAR2(50),&lt;br&gt;
Action_Time TIMESTAMP&lt;br&gt;
);&lt;br&gt;
Step iii: Create AFTER INSERT Trigger(Trigger Implementation)&lt;/p&gt;

&lt;p&gt;CREATE OR REPLACE TRIGGER trg_after_student_insert&lt;br&gt;
AFTER INSERT ON Students2&lt;br&gt;
FOR EACH ROW&lt;br&gt;
BEGIN&lt;br&gt;
INSERT INTO Students_Audit (Student_ID, Student_Name, Action, Action_Time)&lt;br&gt;
VALUES (:NEW.Student_ID, :NEW.Student_Name, 'INSERT', SYSTIMESTAMP);&lt;br&gt;
END;&lt;br&gt;
/&lt;br&gt;
Test the Trigger&lt;br&gt;
Step iv: Verify Audit Table&lt;/p&gt;

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

&lt;p&gt;INSERT INTO Students2 (Student_ID, Student_Name, Course) VALUES (1, 'Renner', 'Computer Science');&lt;br&gt;
INSERT INTO Students2 (Student_ID, Student_Name, Course) VALUES (2, 'Martin', 'Mechanical Engineering');&lt;/p&gt;

&lt;p&gt;In this tutorial, we learned:&lt;/p&gt;

&lt;p&gt;Cursor → Process query results row by row&lt;/p&gt;

&lt;p&gt;Trigger → Automatically log student registrations after insert&lt;/p&gt;

&lt;p&gt;These features add power and automation to SQL programming!&lt;/p&gt;

</description>
      <category>sql</category>
      <category>tutorial</category>
      <category>database</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Database Normalisation</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Wed, 08 Oct 2025 11:10:55 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/database-normalisation-2lbp</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/database-normalisation-2lbp</guid>
      <description>&lt;p&gt;&lt;strong&gt;Database Normalisation&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Database normalization is the process of structuring a relational database to reduce redundancy and improve data integrity.&lt;/p&gt;

&lt;p&gt;In this blog, we’ll normalize a student-course-instructor dataset from Unnormalized Form → 1NF → 2NF → 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.&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%2Fcwu8ppbmray995rwy44x.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%2Fcwu8ppbmray995rwy44x.jpg" alt=" " width="800" height="229"&gt;&lt;/a&gt;&lt;br&gt;
Step 2: Identifying Anomalies&lt;/p&gt;

&lt;p&gt;Insertion anomaly: A new course cannot be added unless it is linked to a student.&lt;/p&gt;

&lt;p&gt;Update anomaly: Modifying a course name requires updating it in several rows.&lt;/p&gt;

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

&lt;p&gt;*&lt;em&gt;First Normal Form (1NF)&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Rule: Eliminate repeating groups, ensure atomic values.&lt;/p&gt;

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

&lt;p&gt;1.SQL Table in 1 NF,&lt;/p&gt;

&lt;p&gt;CREATE TABLE Students_1NF (&lt;br&gt;
Student_ID INT,&lt;br&gt;
Student_Name VARCHAR2(100),&lt;br&gt;
Course_ID INT,&lt;br&gt;
Course_Name VARCHAR2(100),&lt;br&gt;
Instructor VARCHAR2(100),&lt;br&gt;
Grade CHAR(2),&lt;br&gt;
PRIMARY KEY (Student_ID, Course_ID)&lt;br&gt;
);&lt;br&gt;
2.Second Normal Form (2NF)&lt;/p&gt;

&lt;p&gt;Rule: Remove partial dependency → non-key attributes should depend on the whole 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;br&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 (&lt;br&gt;
StudentID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
StudentName VARCHAR2(100)&lt;br&gt;
);&lt;/p&gt;

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

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

&lt;p&gt;Rule: Remove transitive dependencies (non-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 (&lt;br&gt;
InstructorID VARCHAR2(10) PRIMARY KEY,&lt;br&gt;
InstructorName VARCHAR2(100),&lt;br&gt;
InstructorPhone VARCHAR2(15)&lt;br&gt;
);&lt;/p&gt;

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

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

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

&lt;p&gt;-- Instructors&lt;br&gt;
INSERT INTO Instructor VALUES ('I01', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Instructor VALUES ('I02', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Instructor VALUES ('I03', 'Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;-- Courses&lt;br&gt;
INSERT INTO Course3NF VALUES ('C101', 'DBMS', 'I01');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C102', 'Data Mining', 'I02');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C103', 'AI', 'I03');&lt;/p&gt;

&lt;p&gt;-- Students&lt;br&gt;
INSERT INTO Student3NF VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;-- Enrollment&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C102');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S02', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S03', 'C103');&lt;br&gt;
Step 6: Insert Sample Data&lt;/p&gt;

&lt;p&gt;-- Instructors&lt;br&gt;
INSERT INTO Instructor VALUES ('I01', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Instructor VALUES ('I02', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Instructor VALUES ('I03', 'Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;-- Courses&lt;br&gt;
INSERT INTO Course3NF VALUES ('C101', 'DBMS', 'I01');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C102', 'Data Mining', 'I02');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C103', 'AI', 'I03');&lt;/p&gt;

&lt;p&gt;-- Students&lt;br&gt;
INSERT INTO Student3NF VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;-- Enrol&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%2Fyb4b1efqkzpe6i5xxw2a.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%2Fyb4b1efqkzpe6i5xxw2a.jpg" alt=" " width="800" height="427"&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%2Fot87zk2bc2bq662m9plm.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%2Fot87zk2bc2bq662m9plm.jpg" alt=" " width="800" height="413"&gt;&lt;/a&gt;lment&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C102');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S02', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S03', 'C103');&lt;br&gt;
Step 6: Insert Sample Data&lt;/p&gt;

&lt;p&gt;-- Instructors&lt;br&gt;
INSERT INTO Instructor VALUES ('I01', 'Dr. Kumar', '9876543210');&lt;br&gt;
INSERT INTO Instructor VALUES ('I02', 'Dr. Mehta', '9123456780');&lt;br&gt;
INSERT INTO Instructor VALUES ('I03', 'Dr. Rao', '9988776655');&lt;/p&gt;

&lt;p&gt;-- Courses&lt;br&gt;
INSERT INTO Course3NF VALUES ('C101', 'DBMS', 'I01');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C102', 'Data Mining', 'I02');&lt;br&gt;
INSERT INTO Course3NF VALUES ('C103', 'AI', 'I03');&lt;/p&gt;

&lt;p&gt;-- Students&lt;br&gt;
INSERT INTO Student3NF VALUES ('S01', 'Arjun');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S02', 'Priya');&lt;br&gt;
INSERT INTO Student3NF VALUES ('S03', 'Kiran');&lt;/p&gt;

&lt;p&gt;-- Enrollment&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S01', 'C102');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S02', 'C101');&lt;br&gt;
INSERT INTO Enrollment3NF VALUES ('S03', 'C103');&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%2Fgpiy2eajx9oc6ejliuzt.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%2Fgpiy2eajx9oc6ejliuzt.jpg" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>College Management System</title>
      <dc:creator>Kausi Tarun</dc:creator>
      <pubDate>Thu, 21 Aug 2025 18:17:43 +0000</pubDate>
      <link>https://dev.to/kausi_tarun_77e6874368465/college-management-system-5198</link>
      <guid>https://dev.to/kausi_tarun_77e6874368465/college-management-system-5198</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
A college management system uses a database management system as its core to store,manage,and retrieve vast amounts of information,such as studentand staff details,academic records,admissions,fees,and attendance,etc.it demonstrates key database concepts such as queries and conclusion of the college management system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Primary Keys&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;StudentID in Students&lt;/p&gt;

&lt;p&gt;CourseID in Courses&lt;/p&gt;

&lt;p&gt;EnrollID in Enrollments&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2.Unique constraints&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Email in Students is unique.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3.Foreign keys&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;StudentID in Enrollments references Students(StudentID)&lt;/p&gt;

&lt;p&gt;CourseID in Enrollments references Courses(CourseID)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Data types&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;DOB as DATE&lt;/p&gt;

&lt;p&gt;Credits restricted to 2 digits (NUMBER(2))&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1.Composite key in Enrollments&lt;/strong&gt;&lt;br&gt;
CREATE TABLE Enrollments (&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;
    PRIMARY KEY (StudentID, CourseID)&lt;br&gt;
);&lt;br&gt;
&lt;strong&gt;2.Cascade Delete/Update&lt;/strong&gt;&lt;br&gt;
StudentID NUMBER REFERENCES Students(StudentID) ON DELETE CASCADE,&lt;br&gt;
CourseID NUMBER REFERENCES Courses(CourseID) ON DELETE CASCADE&lt;br&gt;
&lt;strong&gt;3.Check constraints&lt;/strong&gt; &lt;br&gt;
Credits NUMBER(2) CHECK (Credits &amp;gt; 0),&lt;br&gt;
Grade CHAR(2) CHECK (Grade IN ('A+', 'A', 'B+', 'B', 'C', 'D', 'F'))&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
1.DBMSs are fundamental for various applications, from simple data storage to complex data analysis and decision-making processes. &lt;br&gt;
2.They serve as the backbone for many technologies, including data science, data modeling, and machine learning. &lt;br&gt;
3.Large organizations like Google and Amazon rely heavily on DBMSs to manage their vast data stores.&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%2F8oq4ggzbpqlirly7hcry.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%2F8oq4ggzbpqlirly7hcry.jpg" alt=" " width="800" height="372"&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%2Fcrtmmypw3e60ui2ag3t1.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%2Fcrtmmypw3e60ui2ag3t1.jpg" alt=" " width="800" height="374"&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%2Fl2dxa6k5wtwh8v7a8qpq.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%2Fl2dxa6k5wtwh8v7a8qpq.jpg" alt=" " width="800" height="373"&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%2Ficect23lggv5ktvvlbz7.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%2Ficect23lggv5ktvvlbz7.jpg" alt=" " width="800" height="369"&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%2F0ekfb4axlik0ox1kogsk.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%2F0ekfb4axlik0ox1kogsk.jpg" alt=" " width="800" height="374"&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%2Ftwu8l7xhlnz5u333khw8.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%2Ftwu8l7xhlnz5u333khw8.jpg" alt=" " width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

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