Database problem – Lesson 4

Few days ago I got a series of RDBMS related problems for practice. I thought that I should solve them and return. After write some code I change my idea and now I am sharing them with all of my readers. It is always best to write a blog post than mail. The blog post is public and you can share your ideas publicly and if needed you can share the post link to some one privately.

This is a very simple problem and though you can work with any RDBMS, I am using Microsoft SQL Server here. Feel free to download the code from GitHub and give comments or contribute.

1. Create table named ‘Products1’ with the following attributes.
   SerialNumber (primary key), Name, Rate, Quantity and Vender

   Now add some data into the 'Products1' table.

   SerialNumber  Name        Rate  Quantity  Vendor
        1        TV          2300     55     Sony
        2        HDD         2500     30     LG
        3        COMPUTER    18000    15     HCL
        4        MICRO OVEN  5000     15     IFB  

2. Create another table 'Products2' with the following attributes.
   SerialNumber (foreign key), Name, Quantity, Vendor

   Now add some data into the 'Products2' table.

   SerialNumber  Name       Quantity  Vendor
        1        CD Player    150     Sony
        2        DVD Player    80     LG
        3        iPOD          55     Panasonic

3. Create relationship between 'Products1' and 'Products2'.
4. Add the data of 'Name', 'Quantity' and 'Vendor' 
   from 'Products2' to 'Products1'.
5. Add the data of 'SerialNumber' and 'Name' only from 'Products1'
   to 'Product2' whose 'Rate' is greater than 15000.

I have created the solution code in four parts. Each part is responsible for a specific job.

USE [master]
GO

CREATE DATABASE Lession4Db ON PRIMARY
(
    NAME = N'Lession4Db',
    FILENAME = N'C:\Lession4\Lession4Db.mdf',
    SIZE = 3MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 10%
)
LOG ON
(
    NAME = N'Lession4DbLog',
    FILENAME = N'C:\Lession4\Lession4DbLog.ldf',
    SIZE = 2MB,
    MAXSIZE = UNLIMITED,
    FILEGROWTH = 10%
)
GO
USE [Lession4Db]
GO

CREATE TABLE Products1
(
    SerialNumber INT NOT NULL IDENTITY(1, 1),
    Product VARCHAR(20) NOT NULL,
    Rate DECIMAL(10, 2) NULL,
    Quantity INT NOT NULL,
    Vendor VARCHAR(15) NOT NULL,

    CONSTRAINT pkProducts1 PRIMARY KEY (SerialNumber)
)
GO

CREATE TABLE Products2
(
    Product VARCHAR(20) NOT NULL,
    Quantity INT NULL,
    Vendor VARCHAR(15) NULL,

    SerialNumber INT NOT NULL,

    CONSTRAINT fkProducts2WithProducts1 FOREIGN KEY (SerialNumber) REFERENCES Products1 (SerialNumber)
)
GO
USE [Lession4Db]
GO

INSERT INTO Products1 (Product, Rate, Quentity, Vendor)
VALUES ('TV', 23000, 55, 'Sony'),
       ('HDD', 2500, 30, 'LG'),
       ('Computer', 18000, 15, 'HCL'),
       ('Micro oven', 5000, 15, 'IFB')
GO

INSERT INTO Products2 (Product, Quantity, Vendor, SerialNumber)
VALUES ('CD player', 150, 'Sony', 1),
       ('DVD player', 80, 'LG', 2),
       ('Ipod', 35, 'Panasonic', 3)
GO
USE [Lession4Db]
GO

-- Answer to question 4.
INSERT INTO Products1 (Product, Quantity, Vendor)
SELECT Product, Quantity, Vendor
FROM Products2
GO

-- Answer to question 5.
INSERT INTO Products2 (Product, SerialNumber)
SELECT Product, SerialNumber
FROM Products1
WHERE Rate > 15000
GO

Please follow this code on GitHub here.

3 thoughts on “Database problem – Lesson 4

  1. Ayesha

    It’s really good to see the problems solved in different way. But I have a question. Where is lesson 1,2 ,3????

    Like

    Reply
    1. Arnab Roy Chowdhury Post author

      I am getting this series from one of my friend who has started to learn MS Access. The supply of question from my friend was not in ascending order.

      Like

      Reply
  2. Arnab Roy Chowdhury Post author

    This problem has no dependency on a particular RDBMS like MS Access or MS SQL Server. You can say that this is a domain specific problem which can be solved with any technology. For example I have done with MS SQL Server in this case.

    Like

    Reply

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s