dbms
-
Upload
suraj-singh -
Category
Documents
-
view
538 -
download
3
Transcript of 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’
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:
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
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),
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
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
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.
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
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
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
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
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.
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:
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
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
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.
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:
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.