DBMS Notes Complete
DBMS Notes Complete
ON
Assistant Professor
The raw facts are called as data. The word “raw” indicates that they have not been processed.
What is information?
What is Knowledge?
DATA/INFORMATION PROCESSING:
The process of converting the data (raw facts) into meaningful information is called as data/information
processing.
Note: In business processing knowledge is more useful to make decisions for any organization.
DATA INFORMATION
1.Raw facts 1.Processed data
2. It is in unorganized form 2. It is in organized form
3. Data doesn’t help in 3. Information helps in
decision decision
making process making process
The earliest business computer systems were used to process business records and produce information.
They were generally faster and more accurate than equivalent manual systems. These systems stored groups of
records in separate files, and so they were called file processing systems.
1. File system is a collection of data. Any management with the file system, user has to write the
procedures
2. File system gives the details of the data representation and Storage of data.
The typical file-oriented system is supported by a conventional operating system. Permanent records are
stored in various files and a number of different application programs are written to extract records from and add
records to the appropriate files.
Since files and application programs are created by different programmers over a long period of time,
the files are likely to be having different formats and the programs may be written in several programming
languages. Moreover, the same piece of information may be duplicated in several places. This redundancy leads
to higher storage and access cost. In addition, it may lead to data inconsistency.
The conventional file processing environments do not allow needed data to be retrieved in a convenient
and efficient manner. Better data retrieval system must be developed for general use.
Data Isolation:
Since data is scattered in various files, and files may be in different formats, it is difficult to write new
In order to improve the overall performance of the system and obtain a faster response time, many
systems allow multiple users to update the data simultaneously. In such an environment, interaction of
concurrent updates may result in inconsistent data.
Security Problems:
Not every user of the database system should be able to access all the data. For example, in banking
system, payroll personnel need only that part of the database that has information about various bank
employees. They do not need access to information about customer accounts. It is difficult to enforce such
security constraints.
Integrity Problems:
The data values stored in the database must satisfy certain types of consistency constraints. For example,
the balance of a bank account may never fall below a prescribed amount. These constraints are enforced in the
system by adding appropriate code in the various application programs. When new constraints are added, it is
difficult to change the programs to enforce them. The problem is compounded when constraints involve several
data items for different files.
Atomicity Problem:
A computer system like any other mechanical or electrical device is subject to failure. In many
applications, it is crucial to ensure that once a failure has occurred and has been detected, the data are restored
to the consistent state existed prior to the failure.
Consider part of a savings-bank enterprise that keeps information about all customers and savings
accounts. One way to keep the information on a computer is to store it in operating system files. To allow users
to manipulate the information, the system has a number of application programs that manipulate the files,
including:
Programmers wrote these application programs to meet the needs of the bank. New application
programs are added to the system as the need arises. For example, suppose that the savings bank decides to
offer checking accounts. As a result, the bank creates new permanent files that contain information about all the
checking accounts maintained in the bank, and it may have to write new application programs to deal with
situations that do not arise in savings accounts, such as overdrafts. Thus, as time goes by, the system acquires
more files and more application programs. The system stores permanent records in various files, and it needs
different Application programs to extract records from, and add records to, the appropriate files. Before
database management systems (DBMS) came along, organizations usually stored information in such systems.
Suppose that one of the bank officers needs to find out the names of all customers who live within a
particular postal-code area. The officer asks the data-processing department to generate such a list. Because
there is no application program to generate that. The bank officer has now two choices: either obtain the list of
all customers and extract the needed information manually or ask a system programmer to write the necessary
application program. Both alternatives are obviously unsatisfactory.
3. Data Isolation:
Because data are scattered in various files and files may be in different formats, writing new application
programs to retrieve the appropriate data is difficult.
4. Integrity Problems:
The balance of a bank account may never fall below a prescribed amount (say, $25). Developers enforce
these constraints in the system by adding appropriate code in the various application programs. However, when
new constraints are added, it is difficult to change the programs to enforce them. The problem is compounded
when constraints involve several data items from different files.
5. Atomicity Problems:
A computer system, like any other mechanical or electrical device, is subject to failure. In many
applications, it is crucial that, if a failure occurs, the data be restored to the consistent state that existed prior to
the failure. Consider a program to transfer $50 from account A to account B. If a system failure occurs during
the execution of the program, it is possible that the $50 was removed from account A but was not credited to
account B, resulting in an inconsistent database state. Clearly, it is essential to database consistency that either
both the credit and debit occur, or that neither occur. That is, the funds transfer must be atomic—it must happen
in its entirety or not at all. It is difficult to ensure atomicity in a conventional file-processing system.
For the sake of overall performance of the system and faster response, many systems allow multiple
users to update the data simultaneously. In such an environment, interaction of concurrent updates may result in
inconsistent data. Consider bank account A, containing $500. If two customers withdraw funds (say $50 and
$100 respectively) from account A at about the same time, the result of the concurrent executions may leave the
account in an incorrect (or inconsistent) state. Suppose that the programs executing on behalf of each
withdrawal read the old balance, reduce that value by the amount being withdrawn, and write the result back. If
the two programs run concurrently, they may both read the value $500, and write back $450 and $400,
respectively. Depending on which one writes the value last, the account may contain $450 or $400, rather than
the correct value of $350. To guard against this possibility, the system must maintain some form of supervision.
But supervision is difficult to provide because data may be accessed by many different application programs
that have not been coordinated previously.
7. Security Problems:
Not every user of the database system should be able to access all the data. For example, in a banking
system, payroll personnel need to see only that part of the database that has information about the various bank
employees. They do not need access to information about customer accounts. But, since application programs
are added to the system in an ad hoc manner, enforcing such security constraints is difficult. These difficulties,
among others, prompted the development of database systems.
INTRODUCTION TO DATABASES:
• Data processing tasks such as payroll were automated, with data stored on tapes.
• Late 1960s and 1970s: The use of hard disks in the late 1960s changed the scenario for data processing
• With disks, network and hierarchical databases could be created that allowed data structures such as lists and
trees to be stored on disk. Programmers could construct and manipulate these data structures.
• With disks, network and hierarchical databases could be created that allowed data structures such as lists and
trees to be stored on disk. Programmers could construct and manipulate these data structures.
• Initial commercial relational database systems, such as IBM DB2, Oracle, Ingress, and DEC Rdb, played a
major role in advancing techniques for efficient processing of declarative queries.
• In the early 1980s, relational databases had become competitive with network and hierarchical database
systems even in the area of performance.
• The 1980s also saw much research on parallel and distributed databases, as well as initial work on object-
oriented databases.
Early 1990s:
• Decision support and querying re-emerged as a major application area for databases.
• The major event was the explosive growth of the World Wide Web.
• Databases were deployed much more extensively than ever before. Database systems now had to support very
high transaction processing rates, as well as very high reliability and 24 * 7 availability (availability 24 hours a
day, 7 days a week, meaning no downtime for scheduled maintenance activities).
The file management system also called as FMS in short is one in which all data is stored on a single
large file. The main disadvantage in this system is searching a record or data takes a long time. This lead to the
introduction of the concept, of indexing in this system. Then also the FMS system had lot of drawbacks to name
a few like updating or modifications to the data cannot be handled easily, sorting the records took long time and
so on. All these drawbacks led to the introduction of the Hierarchical Database System.
The previous system FMS drawback of accessing records and sorting records which took a long time
was removed in this by the introduction of parent-child relationship between records in database. The origin of
the data is called the root from which several branches have data at different levels and the last level is called
the
leaf. The main drawback in this was if there is any modification or addition made to the structure then the whole
structure needed alteration which made the task a tedious one. In order to avoid this next system took its origin
which is called as the Network Database System.
In this the main concept of many-many relationships got introduced. But this also followed the same
technology of pointers to define relationships with a difference in this made in the introduction if grouping of
data items as sets.
In order to overcome all the drawbacks of the previous systems, the Relational Database System got
introduced in which data get organized as tables and each record forms a row with many fields or attributes in
it. Relationships between tables are also formed in this system.
DATABASE:
(OR)
A database is a collection of information that is organized so that it can be easily accessed, managed and
updated.
The following are the various kinds of applications/organizations uses databases for their business processing
activities in their day-to-day life. They are:
1. Banking: For customer information, accounts, and loans, and banking transactions.
2. Airlines: For reservations and schedule information. Airlines were among the first to use databases in a
geographically distributed manner—terminals situated around the world accessed the central database system
through phone lines and other data networks.
4. Credit Card Transactions: For purchases on credit cards and generation of monthly statements.
5. Telecommunication: For keeping records of calls made, generating monthly bills, maintaining balances on
prepaid calling cards, and storing information about the communication networks.
6. Finance: For storing information about holdings, sales, and purchases of financial instruments such as stocks
and bonds.
8. Manufacturing: For management of supply chain and for tracking production of items in factories,
inventories of items in warehouses/stores, and orders for items.
9. Human resources: For information about employees, salaries, payroll taxes and benefits, and for generation
of paychecks.
11. Web: For access the Back accounts and to get the balance amount.
12. E –Commerce: For Buying a book or music CD and browse for things like watches, mobiles from the
Internet.
The database approach has some very characteristic features which are discussed in detail below:
Fundamental feature of the database approach is that the database system does not only contain the data
but also the complete definition and description of these data. These descriptions are basically details about the
extent, the structure, the type and the format of all data and, additionally, the relationship between the data. This
kind of stored data is called metadata ("data about data").
Application software does not need any knowledge about the physical data storage like encoding,
format, storage place, etc. It only communicates with the management system of a database (DBMS) via a
standardized interface with the help of a standardized language like SQL. The access to the data and the
metadata is entirely done by the DBMS. In this way all the applications can be totally separated from the data.
Data Integrity:
Data integrity is a byword for the quality and the reliability of the data of a database system. In a broader
sense data integrity includes also the protection of the database from unauthorized access (confidentiality) and
unauthorized changes. Data reflect facts of the real world.
Transactions:
A transaction is a bundle of actions which are done within a database to bring it from one consistent
state to a new consistent state. In between the data are inevitable inconsistent. A transaction is atomic what
means that it cannot be divided up any further. Within a transaction all or none of the actions need to be carried
out. Doing only a part of the actions would lead to an inconsistent database state.
Data Persistence:
Data persistence means that in a DBMS all data is maintained as long as it is not deleted explicitly. The
life span of data needs to be determined directly or indirectly be the user and must not be dependent on system
features. Additionally data once stored in a database must not be lost. Changes of a database which are done by
a transaction are persistent. When a transaction is finished even a system crash cannot put the data in danger
TYPES OF DATABASES:
Database can be classified according to the following factors. They are:
1. Number of Users
2. Database Location
3. Expected type
4. Extent of use
Desktop or personal computer database is an example for single user database.
Workgroup database and enterprise databases are examples for multiuser database.
Workgroup database:
If the multiuser database supports relatively small number of users (fewer than 50) within an
organization is called as Workgroup database.
Enterprise database:
If the database is used by the entire organization and supports multiple users (more than 50) across many
departments is called as Enterprise database.
2. Based on Location:
According to the location of database the databases can be classified into following types. They are:
Centralized Database:
It is a database that is located, stored, and maintained in a single location. This location is most often a
central computer or database system, for example a desktop or server CPU, or a mainframe computer. In most
cases, a centralized database would be used by an organization (e.g. a business company) or an institution (e.g.
a university.)
A distributed database is a database in which storage devices are not all attached to a common CPU. It
may be stored in multiple computers located in the same physical location, or may be dispersed over a network
of interconnected computers.
Goals of DBMS:
The primary goal of a DBMS is to provide a way to store and retrieve database information that is both
convenient and efficient
1. A Database represents some aspect of the real world. Changes to the real world reflected in the database.
Need of DBMS:
1. Before the advent of DBMS, organizations typically stored information using a “File Processing Systems”.
Example of such systems is File Handling in High Level Languages like C, Basic and COBOL etc., these
systems have Major disadvantages to perform the Data Manipulation. So to overcome those drawbacks now we
are using the DBMS.
3. In addition to that the database system must ensure the safety of the information stored, despite system
crashes or attempts at unauthorized access. If data are to be shared among several users, the system must avoid
possible anomalous results.
Data Independence:
Application programs should be as independent as possible from details of data representation and
storage. The DBMS can provide an abstract view of the data to insulate application code from such details.
A DBMS utilizes a variety of sophisticated techniques to store and retrieve data efficiently. This feature
is especially important if the data is stored on external storage devices.
If data is always accessed through the DBMS, the DBMS can enforce integrity constraints on the data.
For example, before inserting salary information for an employee, the DBMS can check that the department
budget is not exceeded. Also, the DBMS can enforce access controls that govern what data is visible to
different classes of users.
A database system allows several users to access the database concurrently. Answering different
questions from different users with the same (base) data is a central aspect of an information system. Such
concurrent use of data increases the economy of a system.
An example for concurrent use is the travel database of a bigger travel agency. The employees of
different branches can access the database concurrently and book journeys for their clients. Each travel agent
sees on his interface if there are still seats available for a specific journey or if it is already fully booked.
A DBMS also protects data from failures such as power failures and crashes etc. by the recovery
schemes such as backup mechanisms and log files etc.
When several users share the data, centralizing the administration of data can offer significant
improvements. Experienced professionals, who understand the nature of the data being managed, and how
different groups of users use it, can be responsible for organizing the data representation to minimize
redundancy and fine-tuning the storage of the data to make retrieval efficient.
DBMS supports many important functions that are common to many applications accessing data stored
in the DBMS. This, in conjunction with the high-level interface to the data, facilitates quick development of
applications. Such applications are also likely to be more robust than applications developed from scratch
because many important tasks are handled by the DBMS instead of being implemented by the application.
DISADVANTAGES OF DBMS:
Danger of a Overkill:
For small and simple applications for single users a database system is often not advisable.
Complexity:
A database system creates additional complexity and requirements. The supply and operation of a
database management system with several users and databases is quite costly and demanding.
Qualified Personnel:
`The professional operation of a database system requires appropriately trained staff. Without a qualified
database administrator nothing will work for long.
Through the use of a database system new costs are generated for the system itself but also for additional
hardware and the more complex handling of the system.
Lower Efficiency:
A database system is a multi-use software which is often less efficient than specialized software which
is produced and optimized exactly for one problem.
People who work with a database can be categorized as database users or database administrators.
Database Users:
There are four different types of database-system users, differentiated by the way they expect to interact with
the system.
Naive users:
Naive users are unsophisticated users who interact with the system by invoking one of the application programs
that have been written previously.
For example, a bank teller who needs to transfer $50 from account A to account B invokes a program
called transfer. This program asks the teller for the amount of money to be transferred, the account from which
the money is to be transferred, and the account to which the money is to be transferred.
Application programmers:
Application programmers are computer professionals who write application programs. Application
programmers can choose from many tools to develop user interfaces. Rapid application development (RAD)
Sophisticated users:
Sophisticated users interact with the system without writing programs. Instead, they form their requests
in a database query language. They submit each such query to a query processor, whose function is to break
down DML statements into instructions that the storage manager understands. Analysts who submit queries to
explore data in the database fall in this category.
Specialized users:
Specialized users are sophisticated users who write specialized database applications that do not fit into
the traditional data-processing framework.
Database Administrator:
One of the main reasons for using DBMSs is to have central control of both the data and the programs
that access those data. A person who has such central control over the system is called a database
administrator (DBA).
Schema definition:
The DBA creates the original database schema by executing a set of data definition statements in the
DDL, Storage structure and access-method definition.
The DBA carries out changes to the schema and physical organization to reflect the changing needs of
the organization, or to alter the physical organization to improve performance.
By granting different types of authorization, the database administrator can regulate which parts of the
database various users can access. The authorization information is kept in a special system structure that the
database system consults whenever someone attempts to access the data in the system.
Routine maintenance:
1. Periodically backing up the database, either onto tapes or onto remote servers, to prevent loss of data in case
of disasters such as flooding.
2. Ensuring that enough free disk space is available for normal operations, and upgrading disk space as required.
3. Monitoring jobs running on the database and ensuring that performance is not degraded by very expensive
tasks submitted by some users.
Hiding certain details of how the data are stored and maintained. A major purpose of database system is
to provide users with an “Abstract View” of the data. In DBMS there are 3 levels of data abstraction. The goal
of the abstraction in the DBMS is to separate the users request and the physical storage of data in the database.
Physical Level:
The lowest Level of Abstraction describes “How” the data are actually stored.
The physical level describes complex low level data structures in detail.
Logical Level:
This level of data Abstraction describes “What” data are to be stored in the database and what relationships
exist among those data.
Database Administrators use the logical level of abstraction.
View Level:
It is the highest level of data Abstracts that describes only part of entire database.
Different users require different types of data elements from each database.
The system may provide many views for the some database.
Schema:
The overall design of the database is called the “Schema” or “Meta Data”. A database schema
corresponds to the programming language type definition. The value of a variable in programming language
corresponds to an “Instance” of a database Schema.
The goal of this architecture is to separate the user applications and the physical database. In this
architecture, schemas can be defined at the following three levels:
1. The internal level has an internal schema, which describes the physical storage structure of the database.
The internal schema uses a physical data model and describes the complete details of data storage and
access paths for the database.
2. The conceptual level has a conceptual schema, which describes the structure of the whole database for a
community of users. The conceptual schema hides the details of physical storage structures and concentrates
on describing entities, data types, relationships, user operations, and constraints. A high-level data model or
an implementation data model can be used at this level.
3. The external or view level includes a number of external schemas or user views. Each external schema
describes the part of the database that a particular user group is interested in and hides the rest of the
database from that user group. A high-level data model or an implementation data model can be used at this
level.
The ability to modify the physical schema without causing application programs to be rewritten
Modifications at this level are usually to improve performance.
The ability to modify the conceptual schema without causing application programs to be rewritten
Usually done when logical structure of database is altered
A database system is partitioned into modules that deal with each of the responsibilities of the overall
system. The functional components of a database system can be broadly divided into the storage manager and
the query processor components.
The storage manager is important because databases typically require a large amount of storage space.
Some Big organizations Database ranges from Giga bytes to Tera bytes. So the main memory of computers
cannot store this much information, the information is stored on disks. Data are moved between disk storage
and main memory as needed.
The query processor also very important because it helps the database system simplify and facilitate
access to data. So quick processing of updates and queries is important. It is the job of the database system to
translate updates and queries written in a nonprocedural language,
A storage manager is a program module that provides the interface between the low level data stored in
the database and the application programs and queries submitted to the system. The storage manager is
responsible for the interaction with the file manager. The storage manager translates the various DML
statements into low-level file-system commands. Thus, the storage manager is responsible for storing,
retrieving, and updating data in the database.
Authorization and integrity manager which tests for the satisfaction of integrity constraints and checks the
authority of users to access data.
Transaction manager which ensures that the database itself remains in a consistent state despite system
failures, and that concurrent transaction executions proceed without conflicting.
File manager: which manages the allocation of space on disk storage and the data structures used to represent
information stored on disk.
Buffer manager which is responsible for fetching data from disk storage into main memory. Storage manager
implements several data structures as part of the physical system implementation. Data files are used to store
the database itself. Data dictionary is used to stores metadata about the structure of the database, in particular
the schema of the database.
DDL interpreter: It interprets DDL statements and records the definitions in the data dictionary.
DML compiler: It translates DML statements in a query language into an evaluation plan consisting of low-
level instructions that the query evaluation engine understands.
Application Architectures:
Most users of a database system today are not present at the site of the database system, but connect to it
through a network. We can therefore differentiate between client machines, on which remote database users’
work, and server machines, on which the database system runs. Database applications are usually partitioned
into two or three parts. They are:
Two-Tier Architecture:
The application is partitioned into a component that resides at the client machine, which invokes
database system functionality at the server machine through query language statements. Application program
interface standards like ODBC and JDBC are used for interaction between the client and the server.
Three-Tier Architecture:
The client machine acts as merely a front end and does not contain any direct database calls. Instead, the
client end communicates with an application server, usually through forms interface. The application server in
turn communicates with a database system to access data. The business logic of the application, which says
what actions to carry out under what conditions, is embedded in the application server, instead of being
distributed across multiple clients. Three-tier applications are more appropriate for large applications, and for
applications that run on the World Wide Web.
The database design process can be divided into six steps. The ER Model is most relevant to the first
three steps. Next three steps are beyond the ER Model.
1. Requirements Analysis:
The very first step in designing a database application is to understand what data is to be stored in the
database, what applications must be built on top of it, and what operations are most frequent and subject to
performance requirements. The database designers collect information of the organization and analyzer, the
information to identify the user’s requirements. The database designers must find out what the users want from
the database.
Once the information is gathered in the requirements analysis step a conceptual database design is developed
and is used to develop a high level description of the data to be stored in the database, along with the constraints
that are known to hold over this data. This step is often carried out using the ER model, or a similar high-level
data model.
In this step convert the conceptual database design into a database schema (Logical Database Design) in
the data model of the chosen DBMS. We will only consider relational DBMSs, and therefore, the task in the
The first three steps are more relevant to the ER Model. Once the logical scheme is defined designer
consider the physical level implementation and finally provide certain security measures. The remaining three
steps of database design are briefly described below:
4. Schema Refinement:
The fourth step in database design is to analyze the collection of relations in our relational database
schema to identify potential problems, and to refine it. In contrast to the requirements analysis and conceptual
design steps, which are essentially subjective, schema refinement can be guided by some elegant and powerful
theory.
In this step we must consider typical expected workloads that our database must support and further
refine the database design to ensure that it meets desired performance criteria. This step may simply involve
building indexes on some tables and clustering some tables, or it may involve a substantial redesign of parts of
the database schema obtained from the earlier design steps.
6. Security Design:
The last step of database design is to include security features. This is required to avoid unauthorized
access to database practice after all the six steps. We required Tuning step in which all the steps are interleaved
and repeated until the design is satisfactory.
DBMS performs several important functions that guarantee the integrity and consistency of the data in the
database.
Those functions transparent to end users and can be accessed only through the use of DBMS. They include:
Data Dictionary Management
Data Storage Management
Data transformation and Presentation
Security Management
Multiple Access Control
Backup and Recovery Management
Data Integrity Management
Database Access Languages
Databases Communication Interfaces
DBMS stores definitions of database elements and their relationship (Metadata) in the data dictionary.
The DBMS uses the data dictionary to look up the required data component structures and relationships.
Any change made in database structure is automatically recorded in the data dictionary.
Modern DBMS provides storage not only for data but also for related data entities.
Data Storage Management is also important for database “performance tuning”.
Performance tuning related to activities that make database more efficiently.
Security Management:
DBMS creates a security system that enforces the user security and data privacy.
Security rules determines which users can access the database, which data items each user can access etc.
DBA and authenticated user logged to DBMS through username and password or through Biometric
authentication such as Finger print and face reorganization etc.
Multiuser Access Control:
To provide data integrity and data consistency, DBMS uses sophisticated algorithms to ensure that
multiple users can access the database concurrently without compromising the integrity of database.
DBMS provides backup and recovery to ensure data safety and integrity.
Recovery management deals with the recovery of database after failure such as bad sector in the disk
or power failure. Such capability is critical to preserve database integrity.
DBMS provides and enforces integrity rules, thus minimizing data redundancy and maximizing
data consistency.
Ensuring data integrity is especially important in transaction- oriented database systems.
Current DBMS’s are accepting end-user requests via different network environments.
For example, DBMS might provide access to database via Internet through the use of web browsers such
as Mozilla Firefox or Microsoft Internet Explorer.
What is Schema?
A database schema is the skeleton structure that represents the logical view of the entire database. (or)
It defines how the data is organized and how the relations among them are associated.
It formulates all the constraints that are to be applied on the data.
STUDENT
What is Instance?
The data stored in the database at any given time is an instance of the database
Student
In the above table 1201, 1202, Venkat etc are said to be instance of student table.
Relational Algebra
Preliminaries
A query language is a language in which user requests to retrieve some information from the database.
The query languages are considered as higher level languages than programming languages. Query languages
are of two types,
Procedural Language
Non-Procedural Language
1. In procedural language, the user has to describe the specific procedure to retrieve the information
from the database.
2. In non-procedural language, the user retrieves the information from the database without describing
the specific procedure to retrieve it.
Example: The Tuple Relational Calculus and the Domain Relational Calculus are non-procedural
languages.
Relational Algebra
The relational algebra is a procedural query language. It consists of a set of operations that take one or
two relations (tables) as input and produce a new relation, on the request of the user to retrieve the specific
information, as the output.
The Selection, Projection and Rename operations are called unary operations because they operate only
on one relation. The other operations operate on pairs of relations and are therefore called binary operations.
The Selection is a relational algebra operation that uses a condition to select rows from a relation. A new
relation (output) is created from another existing relation by selecting only rows requested by the user that
satisfy a specified condition. The lower greek letter ‘sigma ’ is used to denote selection operation.
Example: Find the customer details who are living in Hyderabad city from customer relation.
The selection operation uses the column names in specifying the selection condition. Selection
conditions are same as the conditions used in the ‘if’ statement of any programming languages, selection
condition uses the relational operators < > <= >= != . It is possible to combine several conditions into a large
condition using the logical connectives ‘and’ represented by ‘‘ and ‘or’ represented by ‘’.
Example:
Find the customer details who are living in Hyderabad city and whose customer_id is greater than 1000
in Customer relation.
The projection is a relational algebra operation that creates a new relation by deleting columns from an
existing relation i.e., a new relation (output) is created from another existing relation by selecting only those
columns requested by the user from projection and is denoted by letter pi (.
The Selection operation eliminates unwanted rows whereas the projection operation eliminates
unwanted columns. The projection operation extracts specified columns from a table.
In the above example, the selection operation is performed first. Next, the projection of the resulting
relation on the customer_name column is carried out. Thus, instead of all customer details of customers living
in Hyderabad city, we can display only the customer names of customers living in Hyderabad city.
The above example is also known as relational algebra expression because we are combining two or
more relational algebra operations (ie., selection and projection) into one at the same time.
Example: Find the customer names (not all customer details) from customer relation.
customer_name ( customer )
The above stated query lists all customer names in the customer relation and this is not called as
relational algebra expression because it is performing only one relational algebra operation.
3) The Set Operations: ( Union, Intersection, Set-Difference, Cartesian product )
i) Union ‘ ’ Operation:
The union denoted by ‘’ It is a relational algebra operation that creates a union or combination of two
relations. The result of this operation, denoted by d b is a relation that includes all tuples that all either in d or
in b or in both d and b, where duplicate tuples are eliminated.
Example: Find the customer_id of all customers in the bank who have either an account or a loan or both.
To solve the above query, first find the customers with an account in the bank. That is customer_id (
depositor ). Then, we have to find all customers with a loan in the bank, customer_id ( borrower ). Now, to
answer the above query, we need the union of these two sets, that is, all customer names that appear in either or
If some customers A, B and C are both depositors as well as borrowers, then in the resulting relation,
their customer ids will occur only once because duplicate values are eliminated.
Therefore, for a union operation d b to be valid, we require that two conditions to be satisfied,
i) The relations depositor and borrower must have same number of attributes / columns.
ii) The domains of ith attribute of depositor relation and the ith attribute of borrower relation must be the
The intersection operation denoted by ‘ ’ It is a relational algebra operation that finds tuples that are in
both relations. The result of this operation, denoted by d b, is a relation that includes all tuples common in
both depositor and borrower relations.
Example: Find the customer_id of all customers in the bank who have both an account and a loan.
The resulting relation of this query, lists all common customer ids of customers who have both an
account and a loan. Therefore, for an intersection operation d b to be valid, it requires that two conditions to
be satisfied as was the case of union operation stated above.
The set-difference operation denoted by’ ’ It is a relational algebra operation that finds tuples that are
in one relation but are not in another.
The resulting relation for this query, lists the customer ids of all customers who have an account but not
a loan. Therefore a difference operation d b to be valid, it requires that two conditions to be satisfied as was
case of union operation stated ablove.
The Cartesian-product operation denoted by a cross ‘X’ It is a relational algebra operation which
allows to combine information from who relations into one relation.
Assume that there are n1 tuple in borrower relation and n2 tuples in loan relation. Then, the result of this
operation, denoted by r = borrower X loan, is a relation ‘r’ that includes all the tuples formed by each possible
pair of tuples one from the borrower relation and one from the loan relation. Thus, ‘r’ is a large relation
containing n1 * n2 tuples.
The drawback of the Cartesian-product is that same attribute name will repeat.
Example: Find the customer_id of all customers in the bank who have loan > 10,000.
That is, get customer_id from borrower relation and loan_amount from loan relation. First, find
Cartesian product of borrower X loan, so that the new relation contains both customer_id, loan_amoount with
each combination. Now, select the amount, by bloan_ampunt > 10000.
So, if any customer have taken the loan, then borrower.loan_no = loan.loan_no should be selected as
their entries of loan_no matches in both relation.
The Rename operation is denoted by rho ’’. It is a relational algebra operation which is used to give the
new names to the relation algebra expression. Thus, we can apply the rename operation to a relation ‘borrower’
to get the same relation under a new name. Given a relation ‘customer’, then the expression returns the same
relation ‘customer’ under a new name ‘x’.
x ( customer )
After performed this operation, Now there are two relations, one with customer name and second with
‘x’ name. The ‘rename’ operation is useful when we want to compare the values among same column attribute
in a relation.
If we want to find the largest account balance in the bank, Then we have to compare the values among
same column (balance) with each other in a same relation account, which is not possible.
So, we rename the relation with a new name‘d’. Now, we have two relations of account, one with
account name and second with ‘d’ name. Now we can compare the balance attribute values with each other in
separate relations.
The join operation, denoted by join ‘ ’. It is a relational algebra operation, which is used to combine
(join) two relations like Cartesian-product but finally removes duplicate attributes and makes the operations
(selection, projection, ..) very simple. In simple words, we can say that join connects relations on columns
containing comparable information.
i) Natural Join:
The natural join is a binary operation that allows us to combine two different relations into one relation
and makes the same column in two different relations into only one-column in the resulting relation. Suppose
we have relations with following schemas, which contain data on full-time employees.
employee_works relation
If we want to generate a single relation with all the information (emp_name, street, city, branch_name
and salary) about full-time employees. then, a possible approach would be to use the natural-join operation as
follows,
employee employee_works
We have lost street and city information about Smith, since tuples describing smith is absent in
employee_works. Similarly, we have lost branch_name and salary information about Gates, since the tuple
Example: Find the employee names and city who have salary details.
The join operation selects all employees with salary details, from where we can easily project the
employee names, cities and salaries. Natural Join operation results in some loss of information.
The drawback of natural join operation is some loss of information. To overcome the drawback of
natural join, we use outer-join operation. The outer-join operation is of three types,
a) Left outer-join ( )
b) Right outer-join ( )
c) Full outer-join ( )
a) Left Outer-join:
The left outer-join takes all tuples in left relation that did not match with any tuples in right relation,
adds the tuples with null values for all other columns from right relation and adds them to the result of natural
join as follows,
employee_works relation
employee relation
The full outer-join operation does both of those operations, by adding tuples from left relation that did
not match any tuples from the reight relations, as well as adds tuples from the right relation that did not match
any tuple from the left relation and adding them to the result of natural join as follows,
employee_works relation
employee relation
The theta join operation, denoted by symbol “ ” . It is an extension to the natural join operation
thatcombines two relations into one relation with a selection condition ( ).
The theta join operation is expressed as employee salary < 19000 employee_works and the resulting is as
follows,
There are two tuples selected because their salary greater than 20000 (salary > 20000). The result of
theta join as follows,
The division operation, denoted by “ ”, is a relational algebra operation that creates a
new relation by selecting the rows in one relation that does not match rows in another relation.
Let, Relation A is (x1, x2, …., xn, y1, y2, …, ym) and
Relation B is (y1, y2, …, ym),
Where, y1, y2, …, ym tuples are common to the both relations A and B with
same domain
compulsory.
Then, A B = new relation with x1, x2, …., xn tuples. Relation A and B represents the
dividend and devisor respectively. A tuple ‘t’ is in a b, if and only if two conditions are to be
satisfied,
t is in A-B (r)
for every tuple tb in B, there is a tuple ta in A satisfying the following two things,
1. ta[B] = tb[B]
2. ta[A-B] = t
Relational Calculus
It allows user to describe the set of answers without showing procedure about how they
should be computed. Relational calculus has a big influence on the design of commercial query
languages such as SQL and QBE (Query-by Example).
Variables in TRC takes tuples (rows) as values and TRC had strong influence on SQL.
Variables in DRC takes fields (attributes) as values and DRC had strong influence on
QBE.
Examples:
{ t | t loan }
This query gives all loan details such as loan_no, loan_date, loan_amt for all loan table
in a bank.
2) Find all loan details for loan amount over 100000 in loan relation.
This query gives all loan details such as loan_no, loan_date, loan_amt for all loan over
100000 in a loan table in a bank.
A Duple Relational Calculus (DRC) is a variable that comes in the range of the values of
domain (data types) of some columns (attributes).
Where, each xi is either a domain variable or a constant and p(< x1, x2, …., xn >)
denotes a DRC
formula.
A DRC formula is defined in a manner that is very similar to the definition of a TRC
formula. The main difference is that the variables are domain variables.
Examples:
This query gives all loan details such as loan_no, loan_date, loan_amt for all loan table
in a bank. Each column is represented with an initials such as N- loan_no, D – loan_date, A –
loan_amt. The condition < N, D, A > loan ensures that the domain variables N, D, A are
restricted to the column domain.
The tuple relational calculus restricts to safe expressions and is equal in expressive
power to relational algebra. Thus, for every relational algebra expression, there is an equivalent
expression in the tuple relational calculus and for tuple relational calculus expression, there is
an equivalent relational algebra expression.
For any given I, the set of answers for Q contains only values that are in dom(Q, I).
For each sub expression of the form R(p(R)) in Q, if a tuple r makes the formula
true, then r contains
only constraints in dom(Q, I).
The expressive power of relational algebra is often used as a metric how powerful a
relational database query language is. If a query language can express all the queries that we can
express in relational algebra, it is said to be relationally complete. A practical query language is
expected to be relationally complete. In addition, commercial query languages typically support
features that allow us to express some queries that cannot be expressed in relational algebra.
Triggers are stored programs, which are automatically executed or fired when some events
occur
A Trigger can be defined as a program that is executed by DBMS whenever updations are
specified on database tables.
It is like an event which occurs whenever a change is done to the tables or columns of
tables.
Only DBA can specify the triggers.
Triggers are, in fact, written to be executed in response to any of the following events:
A database manipulation (DML) statement (DELETE, INSERT, or UPDATE).
Benefits of Triggers:
Dept. of CSE, CREC Page 53
Triggers can be written for the following purposes:
Event describes the modifications done on the database which lead to the activation of
trigger.
The following comes under the category of events:
1). Inserting, updating, deleting columns of the tables or rows of the tables may activate
trigger.
2). Creating, altering or dropping any database object may also lead to activation of triggers.
3). An error message occur or user log-on or log-off may also activate the trigger.
Condition:
Conditions are used to specify the actions to be taken when the corresponding event
occurs and the condition evaluates to true.
If the condition evaluated to true then the respective action to be taken otherwise action is
rejected.
Action:
Action specifies the action to be taken place when the corresponding event occurs and the
condition evaluates to true.
An action is a collection of SQL statements that are executed as a part of trigger activation.
Types of Triggers:
1. BEFORE Trigger: BEFORE trigger execute before the triggering DML statement
(INSERT, UPDATE, DELETE) execute. Triggering SQL statement is may or may
not execute, depending on the BEFORE trigger conditions block.
2. AFTER Trigger: AFTER trigger execute after the triggering DML statement
(INSERT, UPDATE, DELETE) executed. Triggering SQL statement is executed as
soon as followed by the code of trigger before performing Database operation.
3. ROW Trigger: ROW triggers fire for each and every record which are performing
INSERT, UPDATE, DELETE from the database table. If row deleting is define as
trigger event, when trigger file, deletes the five rows each times from the table.
4. Statement Trigger: Statement trigger fire only once for each statement. If row
deleting is define as trigger event, when trigger file, deletes the five rows at once
from the table.
After Row Trigger: Trigger fire for each and every record after the triggering DML statement
executing.
Data redundancy means duplication of data. It causes duplicate data at different locations which
destroys the integrity of the database and wastage of storage space.
The problems of redundancy are:
Wasted Storage Space. 2. More difficult Database Updates. 3. A Possibility of Inconsistent data.
FUNCTIONAL DEPENDENCY:
In other words, attribute A is functionally dependent on B if and only if, for each value of B,
there is exactly one value of A.
(OR)
Functional dependency is a relationship that exists when one attribute uniquely determines
another attribute.
If R is a relation with attributes X and Y, a functional dependency between the attributes is
represented as
X->Y, which specifies Y is functionally dependent on X.
EMPLOYEE
E1 Mac Delhi
E2 Sandra CA
E3 Henry Paris
all FDs implied by a set of FDs. Here, we use X, Y and Z to denote sets of attribute over a
relation schema R,
Rule 1: Reflexivity: if X Y, then X Y.
Rule 2: Augmentation:if X Y, then XZ YZ for any Z.
A decomposition {R1, R2,…, Rn} of a relation R is called a lossless decomposition for R if the
natural join of R1, R2,…, Rn produces exactly the relation R.
R : relation
X,Y : decomposition of R
Decomposition is lossles if :
Example:
Given:
Required FD’s:
Since branch-name branch-city assets, the augmentation rule for FD implies that:
(F1 U F2 U F3 U … U Fn)+ = F+
where,
F1, F2, F3, …, Fn – Sets of Functional dependencies of relations R1, R2, R3, …, Rn.
If the closure of set of functional dependencies of individual relations R1, R2, R3, …, Rn are
equal to the set of functional dependencies of the main relation R (before decomposition), then
we would say the decomposition D is lossless dependency preserving decomposition.
For example, let us assume a relation R (A, B, C, D) with set of functional dependencies F =
{A→B, B→C, C→D}. There is no partial dependency in the given set F. Hence, this relation is
in 2NF.
The dependency A→B is missing. This causes acceptance of any values for B in R2. It causes
duplicate values to be entered into R2 for B which may not depend on A. If we would like to
avoid this type of duplication, then we need to perform a join operation between R1 and R2 to
accept a new value for B which is costlier operation. Hence, we demand the decomposition to
be a dependency preserving decomposition.
NORMAL FORMS:
The normalization results in the formation of that satisfy certain specified rules and represent
certain normal forms.
The normal forms are used to ensure that several of anomalies and inconsistencies are not
introduced in the database.
The first, second and third normal forms are originally defined by Dr. E. F. Codd.
Later, Boyce and Codd introduced another form called the Boyce-Codd Normal form.
P51 101
P20 60
P22 98
P27 72
The data in the table is not normalized because the cells in the PROJCODE and HOURS have
more than one value.
By applying the INF to the PROJECT table, the resultant table is as follows:
A table is said to be in 2NF when it is in 1NF and every attribute in the row is functionally
dependent upon the whole key, and not just part of the key.
Consider the PROJECT table.
PROJECT
ECODE
PROJCODE
DEPT
DEPTHEAD
HOURS
The above table satisfies the definition of 1NF and now we have to now check if it satisfies
2NF.
In the above table, for each value of ECODE, there is more than one value of HOURS.
For example, for ECODE, E101, there are 3 values of HOURS-90, 101 and 60. Hence,
HOURS is not functionally dependent on ECODE.
Similarly, for each value of PROJCODE, there is more than 1 value of HOURS.
For example, for PROJCODE P27, there are three values of HOURS-90, 10 and 72.
However, for a combination of the ECODE and PROJCODE values, there is exactly one value
of HOURS. Hence, HOURS is functionally dependent on the whole key,
ECODE+PROJCODE.
Therefore DEPT is functionally dependent on the part of the key (Which is ECODE) and not
functionally dependent on the whole key (ECODE+PROJCODE).
For the table to be in 2NF, the non-key attributes must be functionally dependent on the whole
key and not the part of the key.
Find and remove attributes that are functionally dependent on only a part of the key and
not on the whole key. Place them in a different table.
Group the remaining attributes.
After applying the 2Nf to above table, the resultant tables are as follows:
EMPLOYEE -DEPT
E101 P27 90
E101 P20 60
E305 P27 10
E508 P27 72
(OR)
A relation is said to be in Third Normal Form, if a table must be follow the following. They are
The above table is in 1NF because each row of a table contains atomic value.
Find and remove non-key attributes that are functionally dependent on attributes that are
not primary key. Place them in a different table.
Group the remaining attributes.
To convert the table employee into 3NF, we must remove the column DEPTHEAD since it is
not functionally dependent on only the primary key ECODE, and place it in another table called
DEPARTMENT along with the attribute DEPT that is functionally dependent on ECODE
EMPLOYEE
ECODE DEPT
ECODE DEPTHEAD
E101 Systems
Systems E901
E305 Finance
Sales E906
E402 Sales
Admin E908
E508 Admin
Finance E909
E607 Finance
E608 Finance
PROJECT:
E1 Veronica P2 48
E2 Anthony P5 100
E3 Mac P6 15
E4 Susan P2 250
E4 Susan P5 75
E1 Veronica P5 40
This table has redundancy. If the name of the employee is modified, the change will have to be
made consistent across the table, Otherwise there will be inconsistencies.
The following are candidate keys for above table:
ECODE+PROJCODE
NAME+PROJCODE
HOURS is functionally dependent on ECODE+PROJCODE.
HOURS is also functionally dependent on NAME+PROJCODE.
NAME is functionally dependent on ECODE.
ECODE is functionally dependent on NAME.
Multiple candidate keys that is ECODE + PROJCODE and NAME+ PROJCODE.
The candidate keys are composite.
This is a situation that requires conversion to BCNF. The table is essentially in the third NF.
The only non-key item is HOURS, which is dependent, on the whole key, that is,
ECODE+PROJCODE or PROJCODE.
Find and remove that overlapping candidate keys. Place the part of the candidate key
and the attribute it is functionally dependent on, in a different table.
Dept. of CSE, CREC Page 68
Group the remaining items into a table.
EMPLOYEE PROJECT
ECODE NAME
ECODE PROJCODE HOURS
E1 Veronica
E1 P2 48
E2 Anthony
E2 P5 100
E3 Mac
E3 P6 15
E4 Susan
E4 P2 250
E4 P5 75
E1 P5 40
If the database table contains multiple multi valued attributes then that table is said to be in 4
NF.
For example, consider the the possibility that an employee can have multiple assignments and
also have multiple service organizations.
VOLUNTEER-1
10123 RC 1
10123 UW 3
10123 4
VOLUNTEER-2
10123 RC
10123 1
10123 2
In the above table, employee 10123 does volunteer work for Red Cross (RC) and United Way
(UW).
I addition that, the same employee might be assigned to work on three projects such as 1, 2 and
4.
The attributes ORG_CODE and ASSIGN_NUM each may have many different attributes.i.e the
table contain two sets of Multivalued attributes.
Your tables conform to the following two rules
1. All attributes must be dependent on the primary key.
2. No row may contain two or more multi valued facts about entity
Given a relation schema R, let X and Y be subsets of attributes of R (X and Y need not
be distinct). Then the multivalued dependency denoted as X Y satisfies in a relation R, if
given two tuples t1 and t2 in R with t1(X) = t2(X), where R(t1, t2, t3, t4) have the same X value
i.e.,
Whereas the Y values of t1 and t3 are same and the Y values of t2 and t4 are same, i.e., t1(Y) =
t3(Y) = t2(Y) = t4(Y).
The R – X – Y value of t1 and t4 are same and the R – X – Y values of t2 and t3 are same
i.e.,
t1(R – X – Y) = t4(R – X – Y)
t2(R – X – Y) = t3(R – X – Y
a b1 c1 - tuple t1
a b2 c2 - tuple t2
a b1 c2 - tuple t3
a b2 c1 - tuple t4
Therefore, for each X value in such a relation, there will be a set of Y values associated
with it. This association between the X and Y values does not depend on the values of other
attributes in the relation.
In the above example, two tuples t1, t2 in relation R defined on relation schema R with
the same X value (i.e., ‘a’). Exchange the Y values (i.e., b1 & b2) of these tuples t1, t2 and
obtained the Y values of tuples t3, t4. (i.e., b1 & b2) (that is, same values as t1, t2). then tuples t3
and t4 must also be in R.
Observe the above replication rule states that every FD is also a MVD.
Definition 1 :
A relation R is in 5NF if and only if every join dependency in R is implied by the candidate
keys of R.
Definition 2 :
A relation decomposed into two relations must have loss-less join Property, which ensures
that no spurious or extra tuples are generated, when relations are reunited through a
natural join.
When there is no lossless join decomposition of R into two relation schemas, but there is a
lossless join decompositions of R into more than two relation schemas.
Point : A join dependency is very difficult in a database, hence normally not used.
Example :
A1 PQR Screw
The table is in 4 NF as it does not contain multivalued dependency. But the relationcontains
redundancy as A1 is an agent for PQR twice. But there is no way of eliminating this
redundancy without losing information.
Suppose that the table is decomposed into its two relations, R1 and R2.
The redundancy has been eliminated by decomposing ACP relation, but the information about
which companies make which products and which agents supply which product has been lost.
The natural join of these relations over the ‘agent’ columns is:
R12 :
A1 PQR Nut
A1 PQR Screw
A1 PQR Bolt
A1 XYZ Screw
A1 XYZ Bolt
A2 PQR Bolt
Hence, the decomposition of ACP is a lossy join decomposition as the natural join table is
spurious, since it contains extra tuples(shaded) that gives incorrect information.
But now, suppose the original relation ACP is decomposed into 3 relations :
R1(Agent, Company)
R2(Agent, Product)
R3(Company, Product)
The result of the natural join of R1 and R2 over ‘Agent’ (already Calculated R12) and then,
natural join of R12 and R3 over ‘Company’ & ‘Product’ is –
R123 :
A1 PQR Nut
A1 PQR Screw
A1 XYZ Bolt
A2 PQR Bolt
TRANSACTIONS:
A transaction is a unit of program execution that accesses and possibly updates various data
items.
(or)
A transaction is an execution of a user program and is seen by the DBMS as a series or list of
actions i.e., the actions that can be executed by a transaction includes the reading and writing of
database.
Transaction Operations:
Access to the database is accomplished in a transaction by the following two operations,
1) read(X) : Performs the reading operation of data item X from the database.
2) write(X) : Performs the writing operation of data item X to the database.
Example:
Let T1 be a transaction that transfers $50 from account A to account B. This transaction
can be illustrated as follows,
T1 : read(A);
A := A – 50;
write(A);
read(B);
B := B + 50;
write(B);
Transaction Concept:
The concept of transaction is the foundation for concurrent execution of transaction in a DBMS
and recovery from system failure in a DBMS.
A user writes data access/updates programs in terms of the high-level query language supported
by the DBMS.
To understand how the DBMS handles such requests, with respect to concurrency control and
recovery, it is convenient to regard an execution of a user program or transaction, as a series of
reads and writes of database objects.
1) Atomicity
2) Consistency
3) Isolation
4) Durability
The acronym ACID is sometimes used to refer together to the four properties of transactions
that we have presented here, Atomicity, Consistency, Isolation and Durability.
1) Atomicity: Users should be able to regard the execution of each transaction as atomic which
means, either all actions of a transaction are carried out or none actions are carried out. That is,
users should not have to worry about the effect of incomplete transactions when a system crash
occurs.
Transaction can be incomplete for three kinds of reasons as follows:
i) First, a transaction can be aborted or terminated unsuccessfully by the DBMS because some
changes arise during execution. If a transaction is aborted by the DBMS for some internal
reason, it is automatically restarted and executed as a new transaction.
ii) Second, the system may crash because the power supply is interrupted, while one or more
transactions are in progress.
iii) Third, a transaction may encounter an unexpected situation and decide to abort.
This property is the authority of the application programmer. That is, if the programmer wants
some data to be consistent (remains same at any cost), then he gives the consistency permission
to that data. So that, any transaction cannot change the consistent data. It can be verified easily
that, if the database is consistent before an execution of the transaction, the database remains
consistent after the execution of the transaction.
3) Isolation: Isolation property ensures that each transaction is unaware of other transactions
executing concurrently in the system. Even though multiple transactions may execute
concurrently, the system guarantees that, for every pair of transactions Ti and Tj, it appears that
Ti is unaware of Tj i.e., whether Tj has started or finished or not and Tj is unaware of Ti . i.e.,
whether Tj has started or finished or not.
4) Durability: After a transaction completes successfully, the changes made to the database will
be successful, even if the system failure occurs after that, the database remains safe.
The durability property guarantees that, once a transaction completes successfully, all the
updates that are carried out on the database persists, even if there is a system failure after the
transaction completes execution.
TRANSACTION STATES:
A transaction is seen by the DBMS as a series or list of actions. We therefore establish a
simple transaction model named as transaction states.
A transaction must be in one of the following states,
- Active State : This is the initial state of a transaction. The transaction stays in this state while
it is execution.
- Partially Committed State : This transaction state occurs after the final statement of the
transaction has been executed.
- Failed State : This transaction state occurs after the discovery that normal execution can no
longer proceed.
Partially
Committed Committed
Active
Failed Aborted
A transaction starts in the active state. When it finishes statement, it enters the partially
committed state. At this point, the transaction has completed its execution, but there is still a
possibility that it may be aborted, since the actual output may still be temporarily residing in
main memory and thus a hardware failure may stop its successful completion.
When the database system writes out successfully the output information to disk, then the
transaction enters the committed state.
A transaction may also enters the failed state from the active state or from the partially
committed state after the system determines that the transaction can no longer proceed with its
normal execution because of hardware failure or logical errors. Such a transaction must be
rolled back and the database has been restored to its state prior to the start of the transaction.
Then, it is known as the aborted state. At this state, the system has two options as follows,
i) Restart the Transaction : It can restart the transaction, but only if the transaction
was aborted as a result of some hardware failure or software error. A restarted transaction is
considered to be a new transaction.
Serializability:
When multiple transactions are being executed by the operating system in a multiprogramming
environment, there are possibilities that instructions of one transaction are interleaved with
some other transaction.
Schedule − A chronological execution sequence of a transaction is called a schedule. A
schedule can have many transactions in it, each comprising of a number of instructions/tasks.
Serial Schedule − It is a schedule in which transactions are aligned in such a way that one
transaction is executed first. When the first transaction completes its cycle, then the next
transaction is executed. Transactions are ordered one after the other. This type of schedule is
called a serial schedule, as transactions are executed in a serial manner.
If you want a transaction to be set as READ ONLY, you need to the transaction with the SET
TRANSACTION READ ONLY statement. Note that a DML statement will start the transaction
automatically. So you have to issue the SET TRANSACTION statement before any DML
statements.
The problem here is T2 has added incorrect 6% interest to each A and B. Because before
commitment that $100 is deducted from A, it has added 6% to account A and before
commitment that $100 is credited to B, it has added 6% to account B. Thus, the result of this
schedule is different from the result of the other schedule which is serializable first T1, then T2.
The ANSI/ISO SQL standard defines four levels of transaction isolation, with different
possible outcomes for the same transaction scenario. That is, the same work performed in the
same fashion with the same inputs may result in different answers, depending on your isolation
level.
The four Isolation Levels are,
i) READ UNCOMMITTED
ii) READ COMMITTED
iii) REPEATABLE READ
iv) SERIALIZABLE
Example:
Transa Transa Transa Transa
ction T1 ction T2 ction T1 ction T2
read( read(
X) X)
write( write( read(
X) X) X)
read( read( write(
Y) X) X)
write( write( read(
Y) X) Y)
read( write( read(
Y) Y) Y)
write( write(
Y) Y)
The above two schedules produce the same result, these schedules are said to be
serializable. The transaction may be interleaved in any order and DBMS doesn’t provide any
guarantee about the order in which they are executed.
i) Conflict Serializability:
The result of swapping these instructions doesn’t have any impact on the
remaining instructions in the schedule. If Ia and IB refers to same data item then the following
four cases must be considered,
Case 1 : Here, both IA and IB are read instructions. In this case, the execution order
of the instructions is not considered since the same data item x is read by both the transactions
TA and TB.
Case 2 : Here, IA and IB are read and write instructions respectively. If the execution
order of instructions is IA I B, then transaction TA cannot read the value written by
transaction TB in instruction IB. but order is IB IA, then transaction TA can read the value
written by transaction TB. Therefore in this case, the execution order of the instructions is
important.
Case 3 : Here, IA and IB are write and read instructions respectively. If the execution
order of instructions is IA I B, then transaction TB can read the value written by transaction
TA, but order is IB IA, then transaction TB cannot read the value written by transaction TB.
Therefore in this case, the execution order of the instructions is important.
Two schedules S1 and S1’ consisting of some set of transactions are said to be
view equivalent, if the following conditions are satisfied,
Example:
Transaction T1 Transaction T2
read(x)
x := x -10
write(x)
read(x)
x := x *10
write(x)
read(y)
y := y -10
The view equivalence leads to another notion called view serializability. A schedule say
S is said to be view Serializable, if it is view equivalent with the serial schedule.
Every conflict Serializable schedule is view Serializable but every view Serializable is
not conflict Serializable.
CONCURRENCY CONTROL
In a multiprogramming environment where multiple transactions can be executed
simultaneously, it is highly important to control the concurrency of transactions.
We have concurrency control protocols to ensure atomicity, isolation, and serializability
of concurrent transactions.
Why DBMS needs a concurrency control?
In general, concurrency control is an essential part of TM. It is a mechanism for
correctness when two or more database transactions that access the same data or data set are
executed concurrently with time overlap. According to Wikipedia.org, if multiple transactions
are executed serially or sequentially, data is consistent in a database. However, if concurrent
transactions with interleaving operations are executed, some unexpected data and inconsistent
result may occur. Data interference is usually caused by a write operation among transactions
on the same set of data in DBMS. For example, the lost update problem may occur when a
second transaction writes a second value of data content on top of the first value written by a
LOCK: A lock is nothing but a mechanism that tells the DBMS whether a particular data item
is being used by any transaction for read/write purpose.
There are two types of operations, i.e. read and write, whose basic nature are different,
the locks for read and write operation may behave differently.
The simple rule for locking can be derived from here. If a transaction is reading the
content of a sharable data item, then any number of other processes can be allowed to read the
content of the same data item. But if any transaction is writing into a sharable data item, then no
other transaction will be allowed to read or write that same data item.
Depending upon the rules we have found, we can classify the locks into two types.
Shared Lock: A transaction may acquire shared lock on a data item in order to read its content.
The lock is shared in the sense that any other transaction can acquire the shared lock on that
same data item for reading purpose.
Exclusive Lock: A transaction may acquire exclusive lock on a data item in order to both
read/write into it. The lock is excusive in the sense that no other transaction can acquire any
kind of lock (either shared or exclusive) on that same data item.
The relationship between Shared and Exclusive Lock can be represented by the
following table which is known as Lock Matrix.
S E
hared xclusive
S T F
1) If TA executes read(x) instruction, then the following two cases must be considered,
i) TS(TA) < WTS(x)
ii) TS(TA) WTS(x)
Case 1 : If a transaction TA wants to read the initial value of some data item x that had
been overwritten by some younger transaction then, the transaction TA cannot perform the read
operation and therefore the transaction must be rejected. Then the transaction TA must be rolled
back and restarted with a new timestamp.
Case 2 : If a transaction TA wants to read the initial value of some data item x that had
not been updated then the transaction can execute the read operation. Once the value has been
2) If TA executes write(x) instruction, then the following two cases must be considered,
i) TS(TA) < RTS(x)
ii) TS(TA) < WTS(x)
iii) TS(TA) > WTS(x)
Case 1 : If a transaction TA wants to write the value of some data item x on which the
read operation has been performed by some younger transaction, then the transaction cannot
execute the write operation. This is because the value of data item x that is being generated by
TA was required previously and therefore, the system assumes that the value will never be
generated. The write operation is thereby rejected and the transaction TA must be rolled back
and should be restarted with new timestamp value.
Case 2 : If a transaction TA wants to write a new value to some data item x, that was
overwritten by some younger transaction, then the transaction cannot execute the write
operation as it may lead to inconsistency of data item. Therefore, the write operation is rejected
and the transaction should be rolled back with a new timestamp value.
Case 3 : If a transaction TA wants to write a new value on some data item x that was not
updated by a younger transaction, then the transaction can executed the write operation. Once
the value has been written, changes occur on WTS(x) value which is set to the value of TS(TA).
Example:
The above schedule can be executed under the timestamp protocol when TS(T1) <
TS(T2).
However if concurrency control schemes are used then the execution of transactions
may be delayed and overhead may be resulted. To avoid such issue, optimistic concurrency
control mechanism is used that reduces the execution overhead.
But the problem in reducing the overhead is that, prior knowledge regarding the
conflicting transactions will not be known. Therefore, a mechanism called “monitoring” the
system is required to gain such knowledge.
2) Validation Phase: This phase follows the read phase where the assurance of the
serializability is checked upon each update. If the conflicts occur between the transaction, then
it is aborted and restarted else it is committed.
3) Write Phase: The successful completion of the validation phase leads to the write
phase in which all the changes are made to the original copy of data items. This phase is
applicable only to the read-write transaction. Each transaction is assigned three timestamps as
follows,
Consider two transactions, transaction TA, transaction TB and let the timestamp
of transaction TA is less than the timestamp of transaction TB i.e., TS (TA) < TS (TB) then,
1) Before the start of transaction TB, transaction TA must complete its execution. i.e.,
E(TA) < I(TB)
2) The values written by transaction TA must not be necessarily matched with the values
read by transaction TB. TA must execute the write phase before TB initiate the execution of
validation phase, i.e., I(TB) < E(TA) < V(TB)
Advantages:
Disadvantages:
i) Wastage in processing time during the rollback of aborting transactions which are very long.
ii) Hence, when one process is in its critical section ( a portion of its code), no other process is
allowed to enter. This is the principal of mutual exclusion.
RECOVERY
CRASH RECOVERY:
DBMS is a highly complex system with hundreds of transactions being executed every second.
The durability and robustness of a DBMS depends on its complex architecture and its
underlying hardware and system software. If it fails or crashes amid transactions, it is expected
that the system would follow some sort of algorithm or techniques to recover lost data.
FAILURE CLASSIFICATION:
To see where the problem has occurred, we generalize a failure into various categories, as
follows −
Transaction failure
A transaction has to abort when it fails to execute or when it reaches a point from where it can’t
go any further. This is called transaction failure where only a few transactions or processes are
hurt.
The recovery system reads the logs backwards from the end to the last checkpoint.
It maintains two lists, an undo-list and a redo-list.
If the recovery system sees a log with <Tn, Start> and <Tn, Commit> or just <Tn, Commit>, it
puts the transaction in the redo-list.
If the recovery system sees a log with <Tn, Start> but no commit or abort log found, it puts the
transaction in undo-list.
All the transactions in the undo-list are then undone and their logs are removed. All the
transactions in the redo-list and their previous logs are removed and then redone before saving
their logs.
Primary Index − Primary index is defined on an ordered data file. The data file is
ordered on a key field. The key field is generally the primary key of the relation.
Any user who wants to view these data or modify these data, simply fires SQL query and gets
the result on the screen. But any of these queries should give results as fast as possible. But how
these data are fetched from the physical memory? Do you think simply storing the data in
memory devices give us the better results when we fire queries? Certainly not. How is it stored
in the memory, Accessing method, query type etc makes great affect on getting the results.
Hence organizing the data in the database and hence in the memory is one of important topic to
think about.
In a database we have lots of data. Each data is grouped into related groups called tables. Each
table will have lots of related records. Any user will see these records in the form of tables in
the screen. But these records are stored as files in the memory. Usually one file will contain all
the records of a table.
As we saw above, in order to access the contents of the files – records in the physical memory,
it is not that easy. They are not stored as tables there and our SQL queries will not work. We
need some accessing methods. To access these files, we need to store them in certain order so
that it will be easy to fetch the records. It is same as indexes in the books, or catalogues in the
library, which helps us to find required topics or books respectively.
Storing the files in certain order is called file organization. The main objective of file
organization is
Any insert, update or delete transaction on records should be easy, quick and should not
harm other records.
There are various methods of file organizations. These methods may be efficient for certain
types of access/selection meanwhile it will turn inefficient for other selections. Hence it is up to
the programmer to decide the best suited file organization method depending on his
requirement.
Difference between Sequential, heap/Direct, Hash, ISAM, B+ Tree, Cluster file organization in
database management system (DBMS) as shown below:
Method of Stored as they Stored at the end Stored at the Address index is Stored in a tree
storing come or sorted of the file. But hash appended to the like structure
as they come the address in the address record
memory is generated
random.
Advantage Fast and Best suited for Faster Searching records isSearching range
efficient when bulk insertion, Access faster. of data & partia
there is large and small No Need to Suitable for large data are efficient.
volumes of data, files/tables Sort database. No performance
Report Handles Any of the columns degrades when
generation, multiple can be used as key there is insert
statistical transactions column. delete / update.
calculations etc Suitable for Grows and
Online Searching range of shrinks with data.
transactions data & partial data Works well in
are efficient. secondary storage
devices and hence
reducing disk I/O
Since all datas are
at the leaf node
searching is easy.
All data at lea
node are sorted
sequential linked
list.
This is an advanced sequential file organization method. Here records are stored in order of
primary key in the file. Using the primary key, the records are sorted. For each primary key, an
index value is generated and mapped with the record. This index is nothing but the address of
record in the file.
In this method, if any record has to be retrieved, based on its index value, the data block address
is fetched and the record is retrieved from memory.
Since each record has its data block address, searching for a record in larger database is
easy and quick. There is no extra effort to search records. But proper primary key has
to be selected to make ISAM efficient.
This method gives flexibility of using any column as key field and index will be
generated based on that. In addition to the primary key and its index, we can have
index generated for other fields too. Hence searching becomes more efficient, if there
is search based on columns other than primary key.
It supports range retrieval, partial retrieval of records. Since the index is based on the
key value, we can retrieve the data for the given range of values. In the same way,
when a partial key value is provided, say student names starting with ‘JA’ can also be
searched easily.
Disadvantages of ISAM:
An extra cost to maintain index has to be afforded. i.e.; we need to have extra space in
the disk to store this index value. When there is multiple key-index combinations, the
disk space will also increase.
As the new records are inserted, these files have to be restructured to maintain the
sequence. Similarly, when the record is deleted, the space used by it needs to be
released. Else, the performance of the database will slow down.
Structure of B+ Tree
Every leaf node is at equal distance from the root node. A B+ tree is of the ordern where n is
fixed for every B+ tree.
Internal nodes −
Internal (non-leaf) nodes contain at least ⌈n/2⌉ pointers, except the root node.
Leaf nodes −
Leaf nodes contain at least ⌈n/2⌉ record pointers and ⌈n/2⌉ key values.
At most, a leaf node can contain n record pointers and n key values.
Every leaf node contains one block pointer P to point to next leaf node and forms a
linked list.
B+ Tree Insertion
B+ trees are filled from bottom and each entry is done at the leaf node.
o Partition at i = ⌊(m+1)/2⌋.
Dept. of CSE, CREC Page 109
o First i entries are stored in one node.
B+ Tree Deletion
B+ tree entries are deleted at the leaf nodes.
o If it is an internal node, delete and replace with the entry from the left position.
o If underflow occurs, distribute the entries from the nodes left to it.
Bucket − A hash file stores data in bucket format. Bucket is considered a unit of
storage. A bucket typically stores one complete disk block, which in turn can store one
or more records.
Hash Function − A hash function, h, is a mapping function that maps all the set of
search-keys K to the address where actual records are placed. It is a function from
search keys to bucket addresses.
Static Hashing
In static hashing, when a search-key value is provided, the hash function always computes the
same address. For example, if mod-4 hash function is used, then it shall generate only 5 values.
The output address shall always be same for that function. The number of buckets provided
remains unchanged at all times.
Search − When a record needs to be retrieved, the same hash function can be used to
retrieve the address of the bucket where the data is stored.
Bucket Overflow
The condition of bucket-overflow is known as collision. This is a fatal state for any static hash
function. In this case, overflow chaining can be used.
Overflow Chaining − When buckets are full, a new bucket is allocated for the same
hash result and is linked after the previous one. This mechanism is called Closed
Hashing.
Linear Probing − When a hash function generates an address at which data is already
stored, the next free bucket is allocated to it. This mechanism is called Open Hashing.
Hash function, in dynamic hashing, is made to produce a large number of values and only a
few are used initially.
Operation
Querying − Look at the depth value of the hash index and use those bits to compute the
bucket address.
Deletion − Perform a query to locate the desired data and delete the same.
o Else
o If all the buckets are full, perform the remedies of static hashing.
Hashing is not favorable when the data is organized in some ordering and the queries require a
range of data. When data is discrete and random, hash performs the best.
Hashing algorithms have high complexity than indexing. All hash operations are done in
constant time.
LINEAR HASHING:
Hash table is a data structure that associates keys with values. To know more about liner
hashing refer Wikipedia. Here are main points that summarizes linear hashing.
Every bucket will be split sooner or later and so all Overflows will be reclaimed and
rehashed.
1. b = h0(k)
3. b = h1(k)
1. b = h0(k)
3. b = h1(k)
Example:
s is a pointer, pointing to the split location. This is the place where next split
should take place.
So we split bucket 0 and rehashed all keys in it. Placed 3 to new bucket as (3 mod 6 = 3 ) and
(12 mod 6 = 0 ). Then 11 and 2 are inserted. And now overflow. s is pointing to bucket 1, hence
split bucket 1 by re- hashing it.
After split
Insertion of 10 and 13: as (10 mod 3 = 1) and bucket 1 < s, we need to hash 10 again using
h1(10) = 10 mod 6 = 4th bucket.
When 13 is inserted same process is done, but it end up to the same bucket. But here is an
overflow, we need to split 2nd bucket.
The final hash table contains s is moved to the top again as one cycle is completed. Now s will
travel from 0 to 5th bucket, then 0 to 12, etc;