dbms

22
Database Management System Homework-2 Submitted By: Name: Suraj Kumar Singh Section: E - 3004 Roll_No: RE3004B77 Group: 2 Course_code: 1604 Subject_code: CAP301 Date_Of_Submission: 20/09/2010 Submitted To:

Transcript of dbms

Page 1: dbms

Database Management System

Homework-2

Submitted By:

Name: Suraj Kumar Singh

Section: E - 3004

Roll_No: RE3004B77

Group: 2

Course_code: 1604

Subject_code: CAP301

Date_Of_Submission: 20/09/2010

Submitted To:

Mr. Sartaj Singh

PART ‘A’

Page 2: dbms

Q1:-> Consider the insurance database where the primary keys are underlined . Construct the following SQL queries for this relational database.

(a)Find the total number of people who owned cars that were involved in accidents in 1989.(b)Add a new accident to the database; assume any values for required attributes.(c)Delete the mazla belonging to ”john Smith”.

Insurance databasePerson ( driverid, name, address)Car (license, model, year)Accident (reportnumber , date, location)Owns(driverid, license)Participated(driverid, car, reportno, damageamount)

Ans:- (a) select count(*) from owns where participated.driverid=owns.driverid and participated.reportno=accident.reportno and accident.date between 1-jan-1989 and 31-dec-1989;

(b) Insert into accident values(05,’18-mar-1989’,’delhi’);

(c) Delete from car where car.license=owns.license and owns.driverid=person.driverid and person.name=’john smith’;

Q2:-> Explain the various formats for inserting the records into the database table?

Ans: There are three formats for inserting the records into the database.

The first form doesn't specify the column names where the data will be inserted, only their values:

Syntax:

Page 3: dbms

INSERT INTO table_name

VALUES (value1, value2, value3,...)

Example:

We have the following "Persons" table:

P_Id FirstName LastName Address City1 Amit Sharmna  NULL ludhiana2 Raju shriwastav phagwara jalandhar3 Prashant Singh  NULL jammu

INSERT INTO Persons VALUES (3,’Mohan’, ‘Mishra’, ‘Phagwara’,’Jalandhar’);

P_Id FirstName LastName Address City1 Amit Sharmna  NULL Ludhiana2 Raju shriwastav phagwara Jalandhar3 Prashant Singh  NULL Jammu4 Mohan Mishra phagwara Jalandhar

The second form specifies both the column names and the values to be inserted:

Syntax:

INSERT INTO table_name (column1, column2, column3,...)VALUES (value1, value2, value3,...)

Example:

INSERT INTO Persons (P_Id, FirstName, LastName, Address, City)VALUES (5, 'Ramesh', 'Ghosh', ‘Rohini’, ‘Delhi’)

P_Id FirstName LastName Address City1 Amit Sharmna  NULL Ludhiana2 Raju Shriwastav phagwara Jalandhar

Page 4: dbms

3 Prashant Singh  NULL Jammu4 Mohan Mishra phagwara Jalandhar5 Ramesh Ghosh Rohini Delhi

The Third form is multiple value/records in one single query insert into database:

INSERT INTO Persons (P_Id, FirstName, LastName, Address, City)VALUES

VALUES (1, 'Ramesh', 'Ghosh', ‘Rohini’, ‘Delhi’)VALUES (2, 'Raju', 'singh', ‘phagwara’, ‘jalandhar’)VALUES (3, 'mohan', 'mishra', ‘NULL’, ‘ludhiana’)VALUES (4, 'prahant', 'Ghosh', ‘NULL’, ‘jalandhar’)

Q3:-> Give an SQL schema definition for the employee database. Choose an appropriate domain for each attribute and an appropriate primary key for each relation schema.Employee DatabaseEmployee(employeename, street, city)Works(employeename, companyname,salary)Company(companyname, city)Manages(employeename, managertime)

Ans:- create table Employee(employeename char(20) not null, Street varchar2(30), City char(30), Primary key (employeename))

Create table works(employeename char(20) not null, Companyname char(15), Salary number(6), Primary key (employeename))

Create table company ( companyname char(15) not null, City char(30),

Page 5: dbms

Primary key (companyname))

Create table Manages (employeename char(15) not null, Managetime varchar(15),

Primary key (employeename))

Q4:-> Describe the following terms by giving its importance with example.(a) null value (b)group by clause (c)joins(d) views (e) complex queries (f)where and order by clause

Ans:

(a) NULL VALUE

If a column in a table is optional, we can insert a new record or update an existing record without adding a value to this column. This means that the field will be saved with a NULL value.

NULL values are treated differently from other values.

NULL is used as a placeholder for unknown or inapplicable values.

Note: It is not possible to compare NULL and 0; they are not equivalent.

P_Id FirstName LastName Address City1 Amit Sharmna  NULL Ludhiana2 Raju shriwastav Phagwara Jalandhar3 Prashant Singh  NULL Jammu

Page 6: dbms

Suppose that the "Address" column in the "Persons" table is optional. This means that if we insert a record with no value for the "Address" column, the "Address" column will be saved with a NULL value.

It is not possible to test for NULL values with comparison operators, such as =, <, or <>.

We will have to use the IS NULL and IS NOT NULL operators to check the NULL values.

Example: SELECT FirstName, LastName, Address FROM PersonsWHERE Address IS NULL

SELECT FirstName, LastName, Address FROM PersonsWHERE Address IS NOT NULL

(b) GROUP BY

GROUP BY clause: -This clause is an optional clause of select command. It is used to group similar rows together to produce one summary row of query output for each group. These also arrange the rows in order in the query result.

The syntax is: -Select <column list> from <table name> GROUP BY <COLUMN_NAME>;8

Writing a query for grouping the amount And showing total quantity in the MARKETTING table shown as below:

Cus_name billno Amount

RANI 12002 2000VINA 3300 5000NITU 1022 2500

KINNI 1022 1011LILA 3300 2000

Select amount sum(amount) “Total amount” from MARKETTING GROUP BY billno.; 8

billno Total amount

Page 7: dbms

12002 20003300 70001022 3511

(c) JOIN

The SQL JOIN clause is used whenever we have to select data from 2 or more tables.

To be able to use SQL JOIN clause to extract data from 2 or more tables, we need a relationship between certain columns in these tables.

We have two tables customers and sales.

CustomerID FirstName LastName Email DOB Phone1 Ajay Gupta [email protected] 2/4/1968 626 222-22222 Mohan Sharma [email protected] 4/4/1974 323 455-45453 Raju Paul [email protected] 5/24/1978 416 323-32324 vikash Agarwal [email protected] 20/10/1980 416 323-8888

Customers:

Sales:

CustomerID Date SaleAmount2 5/6/2004 100.22 1 5/7/2004 99.95 3 5/7/2004 122.953 5/13/2004 100.004 5/22/2004 555.55

In these two tables column “CustomerId” is common that we can extract information from both tables by matching their CustomerID columns.

Page 8: dbms

Example:

SELECT Customers.FirstName, Customers.LastName, SUM(Sales.SaleAmount) AS SalesPerCustomerFROM Customers, SalesWHERE Customers.CustomerID = Sales.CustomerIDGROUP BY Customers.FirstName, Customers.LastName 

FirstName LastName SalesPerCustomersAjay Gupta 99.95Mohan Sharma 100.22Raju Paul 122.95Vikash Agarwal 555.55

Types of JOIN

Inner join Outer join Cross join

1. Inner join: Inner join is the default type of join, it will produces the result set, which contains matched rows only. 

Syntax: select * from table1<innerjoin>table2 Simply we can specify Join also. In place of inner join

Syntax: select * from table1<join>table2 

2. Outer join: Outer join produces the results, which contains matched rows and unmatched rows. 

Outer join is further classified as three types. They are 1.left outer join 2.right outer join 3.full outer join.

a. Left outer join: Left outer join produces the results, which contains all the rows from left table and matched rows from right table. 

Syntax: select * from table1<leftouterjoin>table2 

Page 9: dbms

b. Right outer join: Right outer join produces the result set, which contains all the rows from right table and matched rows from left table. 

Syntax: select * from table1<right outer join>table2 

c. Full outer join: Full outer join produces the result set, which contains all the rows from left table and all the rows from right table. 

Syntax: select * from table1<fullouterjoin>table2 

3. Cross join: A join without having any condition is known as cross join, in cross join every row in first table is joins with every row in second table. Cross join is nothing but Cartesian product.

Syntax: select * from table1<cross join>table2 

(d) VIEW

A relation that is not of the conceptual model but is made visible to a user as a “virtual relation” is called a view.

A view is defined using the create view statement which has the form

create view v as < query expression >

where <query expression> is any legal SQL expression. The view name is represented by v.

Once a view is defined, the view name can be used to refer to the virtual relation that the view generates.

CREATE VIEW V_CustomerAS SELECT First_Name, Last_Name, CountryFROM Customer

FirstName LastName Country

Page 10: dbms

Ajay Gupta IndiaMohan Sharma U.S.ARaju Paul LondonVikash Agarwal Australia

(e) Complex query:-complex queries are often hard or impossible to write as a single sql block or a union/intersection/difference of sQL blocks. (An sQL block consisL of a single select from- where statement, possibly with group by and having clauses.). The two ways of composing multiple sql- blocks to express a=complex query: derivedrelations and the with clause

syntax:-Select……From (select…..

From…..Where……)

Where……

(f) Where Clause

WHERE clause : The where clause of select command is used to specify a search condition. This clause tells SQL to rewrite only certain row of data that fulfills the specified condition.

The syntax is :

Select <column list> from <table name> where <search condition>;8

Select amount from MARKETTING table whose amount<=2500.

Cus_name billno amount

Page 11: dbms

RANI 12002 2000VINA 3300 5000NITU 1022 2500

KINNI 1022 1011LILA 3300 2000

:Select *from MARKETTING where amount<=2500; 8

Cus_name billno amount

RANI 12002 2000NITU 1022 2500

KINNI 1022 1011LILA 3300 2000

(f) ORDER BY

The ORDER BY keyword is used to sort the results by a specified column.

The ORDER BY keyword sorts the records in ascending order by default.

If we want to sort the records in a descending order, we can use the DESC keyword.

Syntax:

SELECT column_name(s)FROM table_nameORDER BY column_name(s) ASC|DESC

Example:

Ascending order

Select *from Marketing order by amount;

Cus_name billno amoun

Page 12: dbms

tKINNI 1022 1011RANI 12002 2000LILA 3300 2000NITU 1022 2500VINA 3300 5000

Descending order

Select *from Marketing order by amount DESC;

Cus_name billno amount

VINA 3300 5000NITU 1022 2500LILA 3300 2000

RANI 12002 2000KINNI 1022 1011

PART “B”

Q1:-> Explain when we use before triggers and after triggers statements in the database?

Ans:A trigger is a statement that is executed automatically by the system as a side effect of a modification to the database.

Page 13: dbms

To design a trigger mechanism, we must: Specify the conditions under which the trigger is to be

executed. Specify the actions to be taken when the trigger

executes.

Before Triggers

The BEFORE triggers execute the trigger action before the triggering statement (INSERT/DELTE/UPDATE) is executed. The BEFORE triggers are commonly used in the following situations :For example,a) BEFORE UPDATE trigger on Items table can be allowed to be completed if only there exists a corresponding record for the Delivery table for a particular item. That is, if only an item has been delivered then its stock quality can be updated otherwise this update operation would not be allowed to complete at all. b) When specific column values need to be delivered before completing a triggering INSERT or UPDATE statement. For example, a BEFORE INSERT trigger on the student table may be used to assign a value for the primary key column BEFORE a new record is inserted into this table. This trigger is activated upon the INSERT operation into the student table and the trigger actions are executed BEFORE the INSERT itself is performed.

After Triggers

An AFTER trigger is activated after the event for which it is defined, is executed. That is, AFTER triggers execute the trigger action after the triggering statement is executed. The AFTER triggers are used when you want the triggering statement to complete before executing the trigger action.For example, an AFTER DELETE trigger on Student table deletes corresponding records of deleted Student’s rollno from Marks table. This AFTER DELTE trigger on student table can be allowed to execute only after a student record(s) has been successfully deleted. There is no point deleting corresponding marks records of a student unless its record in the student table has been successfully deleted.

Q2:-> Discuss insertion, deletion and modification anomalies .why are they considered bad? Illustrate with the help of example?

Ans:

Page 14: dbms

Insert Anomalies

An insertion anomaly occurs when we are unable to insert a tuple into a table. Such a situation can arise when the value of primary key is not known. As per the entity integrity rule, the primary key cannot have null value. Therefore, the value/s corresponding to primary key attribute/s of the tuple must be assigned before inserting the tuple. If these values are unknown, the tuple cannot be inserted into the table.

Stu_No Stu_Name Address Course_ID Course_Name Instructor1001 Amit Jalandhar Cap302 Operating_System Mrs. Jasleen1002 Vikash Chandighar Cap301 Data_base Mr.Sartaj

Singh1003 Sumit ludhiana Cap303 Financial_Management Mrs.

Manpreet Kaur

1004 Rahul Jammu Cap301 Data_base Mr.Sartaj Singh

1005 Vijay Chandighar Cap303 Financial_Management Mrs. Manpreet Kaur

Let the primary key of the above database be (Stu_No, Course_ID), then if we want to add new course the database Then we have to insert course_ID, Course_Name and instructor and leave the column stu_N0, Name, address as NULL. That is not possible Because Stu_no is primary key which have some constraint.

Delete Anomalies

In case of a deletion anomaly, the deletion of a tuple causes problems in the database.This can happen when we delete a tuple, which contains an important piece of information,and the tuple being the last one in the table containing the information. With the deletion of the tuple the important piece of information also gets removed from the database.

Stu_No Stu_Name Address Course_ID Course_Name Instructor1001 Amit Jalandhar Cap302 Operating_System Mrs. Jasleen1002 Vikash Chandighar Cap301 Data_base Mr.Sartaj

Singh1003 Sumit ludhiana Cap303 Financial_Management Mrs.

Manpreet Kaur

Page 15: dbms

1004 Rahul Jammu Cap301 Data_base Mr.Sartaj Singh

1005 Vijay Chandighar Cap303 Financial_Management Mrs. Manpreet Kaur

If we delete the tuple corresponding to stu_no 1001 doing Cap302, we will loose relevant information about course Cap302 (course_name, instructor) if the student 1001 was the only student enrolled in that course.

Modification Anomalies

An modification anomaly occurs when we have a lot of redundancy in our data. Due to redundancy, data updating becomes cumbersome. If we have to update one attribute value, which is occurring a number of times, we have to search for every occurrence of that value and then change it. The anomalies will be further elaborated when we discuss the normal forms Before we proceed with discussion on normalization it would be useful to understand the concept of dependencies.

Stu_No Stu_Name Address Course_ID Course_Name Instructor1001 Amit Jalandhar Cap302 Operating_System Mrs. Jasleen1002 Vikash Chandighar Cap301 Data_base Mr.Sartaj Singh

1003 Sumit ludhiana Cap303 Financial_Management Mrs. Manpreet Kaur

1004 Rahul Jammu Cap301 Data_base Mr.Sartaj Singh

1005 Vijay Chandighar Cap303 Financial_Management Mrs. Manpreet Kaur

In STU_DETAIL, if we want to change the name of Instructor of Cource_ID cap301 then it will update all the all the tuples in the table,but some reason all the tuples are not updated, we might have a database that gives two names of instructor for subject cap301.

Q3:->What is functional dependency? What are the possible sources of information that defines the functional

Page 16: dbms

dependencies that hold among the attributes of relation schema?

Ans: Functional Dependency (F.D) – Functional dependency represents semantic association between attributes. If a value of an attribute A determines the value of another attribute B, we say B is functionally dependent on A. This is denoted by A => B and read as “A determines B” and A is called the determinant

• For any two tuples t1 and t2 in any relation instance r(R): If t1[X]= t2[X], then t1[Y]= t2[Y] X is a candidate key of R ⇒ X→ Y for any subset Y of R

• X→ Y holds if whenever two tuples have the same value for X, they must have the same value for Y

• FDs are derived from the real-world constrains on the attributes

• Social security number determines employee name SSN → ENAME

• Project number determines project name and location PNUMBER →{PNAME, PLOCATION}

Lat a set F of functional dependencies, there are certain other functional dependencies that are logically implied by F.

For example: If A ® B and B ® C, then we can infer that A ® C

The set of all functional dependencies logically implied by F is the closure of F.We denote the closure of F by F+.F+ is a superset of F.

Page 17: dbms

Q4:-> What is multivalued dependency? What type of constraint does it specify? When does it arise?

Ans:Multi-valued Dependency—Multi-valued dependency refers to m:n (many-to-many) relationships. We say multi-valued dependency exists between two data items when one value of the first data item gives a collection of values of the second data item i.e., it multi-determines the second data items.

Dependency between attributes (for example, A, B, and C) in a relation, such that for each value of A there is a set of values for B and a set of values for C. However, set of values for B and C are independent of each other.

MVD between attributes A, B, and C in a relation using the following notation:

A B A C

Eid Language Skill100 English Teaching100 Kurdish Politic100 English Politic100 Kurdish Teaching200 Arabic Singing

In the above table ,B and C are dependent to A but B and C are independent to each other.

specifies the following constraint on any relation r of R: if twotuples t1 and t2 exist in r such that t1[X] = t2[X] then t3 and t4 should also exist in r withthe following propertiest3[x] = t4[X] = t1[X] = t2[X]t3[Y] = t1[Y] and t4[Y] = t2[Y]t3[Z] = t2[Z] and t4[Z] = t1[Z]where [Z = (R-(X U Y)) ]

Q5:->Define join dependencies and 5th normal form? Why is 5NF also known as project –join normal form(PJNF)?

Ans:

Page 18: dbms

Join Dependency—If we decompose a relation into smaller relations and the join of the smaller relations does not give us tuples as in the parent relation, we say the relation has join dependency.

Fifth normal form (5NF and also PJ/NF) requires that there are no non-trivial join dependencies that do not follow from the key constraints. A table is said to be in the 5NF if and only if it is in 4NF and every join dependency in it is implied by the candidate keys.

Q6:->Define boyce– Codd normal form. How does it differ from 3NF ? why is it considered as stronger form of 3NF ?

Ans: Boyce-Codd normal form (or BCNF) is a normal form used in database normalization. Itis a slightly stronger version of the third normal form (3NF). A table is in Boyce-Coddnormal form if and only if, for every one of its non-trivial functional dependencies X →Y, X is a superkey—that is, X is either a candidate key or a superset thereof.Only in rare cases does a 3NF table not meet the requirements of BCNF. A 3NF tablewhich does not have multiple overlapping candidate keys is guaranteed to be in BCNF. Boyce-codd Normal Form (BCNF)A Table is in BCNF if and only if every determinantis a candidate key. BCNF is a stronger form of 3NF.

• Difference between 3NF and BCNF is that for a functional dependency A ® B, 3NF allows this dependency in a relation if B is a primary-key attribute and A is not a candidate key.

• Whereas, BCNF insists that for this dependency to remain in a relation, A must be a candidate key.

• Every relation in BCNF is also in 3NF. However, relation in 3NF may not be in BCNF.