DBMS Unit 1
DBMS Unit 1
Tech
2 YEAR 2 SEM
Unit-2
Relational Model
Relational Algebra and Calculus
Unit-3
SQL: Queries, Constraints, Triggers
Schema Refinement & Normal Forms
Unit-4
Transactions
Concurrency Control
Recovery System
Introduction
A database-management system (DBMS) is a collection of interrelated data and a set of
programs to access those data. The collection of data, usually referred to as the database, contains
information relevant to an enterprise. The primary goal of a DBMS is to provide a way to store and
retrieve database information that is both convenient and efficient. Data means known facts that can be
recorded and that have implicit meaning.
Database systems are designed to manage large bodies of information. Management of data
involves both defining structures for storage of information and providing mechanisms for the
manipulation of information. In addition, the database system must ensure the safety of the information
stored, despite system crashes or attempts at unauthorized access. If data is to be shared among several
users, the system must avoid possible anomalous results.
Because information is so important in most organizations, computer scientists have developed
a large body of concepts and techniques for managing data.
1
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
when you access an online bookstore and browse a book or music collection, you are accessing data
stored in a database. When you enter an order online, your order is stored in a database. When you
access a bank Web site and retrieve your bank balance and transaction information, the information is
retrieved from the bank’s database system.
2
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Early 1990s: The SQL language was designed primarily for decision support applications, which
are query intensive, yet the mainstay of databases in the 1980s was transaction processing
applications, which are update intensive. Decision support and querying re-emerged as a major
application area for databases. Tools for analyzing large amounts of data saw large growths in
usage.
Many database vendors introduced parallel database products in this period. Database vendors
also began to add object-relational support to their databases.
Late 1990s: The major event was the explosive growth of the Worldwide 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). Database
systems also had to support Web interfaces to data.
3
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
• 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.
• 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
(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.
• 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.
• Concurrent-access anomalies. 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. 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.
• 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.
4
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
example: in customer database we can enforce an integrity constraint, that it must accept the customers
only from Hyderabad and Vijayawada city.
Security: Having complete authority over the operational data, enables the DBA in ensuring that the
only mean of access to the database is through proper channels. The DBA can define authorization
checks to be carried out whenever access to sensitive data is attempted.
Data Consistency: By eliminating data redundancy, we greatly reduce the opportunities for
inconsistency. For example: is a customer address is stored only once, we cannot have disagreement on
the stored values. Also updating data values is greatly simplified when each value is stored in one
place only. Finally, we avoid the wasted storage that results from redundant data storage.
Efficient Data Access: In a database system, the data is managed by the DBMS and all access to the
data is through the DBMS providing a key to effective data processing.
Enforcements of Standards: With the centralized of data, DBA can establish and enforce the data
standards which may include the naming conventions, data quality standards etc.
Data Independence: In a database system, the database management system provides the interface
between the application programs and the data. When changes are made to the data representation, the
meta data obtained by the DBMS is changed but the DBMS is continues to provide the data to
application program in the previously used way. The DBMs handles the task of transformation of data
wherever necessary.
Data Administration: When several users share the data, centralizing the administration of data can
offer sig11ificant improvements.
Concurrent Access and Crash Recovery: A DBMS schedules concurrent accesses to the data in such
a manner that users can think of the data as being accessed by only one user at a time. Further, the
DBMS protects users from the effects of system failures.
Reduced Application Development and Maintenance Time: DBMS supports many important
functions that are common to many applications, accessing data stored in the DBMS, which facilitates
the quick development of application.
Disadvantages of DBMS
1) It is bit complex. The designers and developers should have thorough knowledge about the
software to get the most out of it.
2) Because of its complexity and functionality, it uses large amount of memory. It also needs large
memory to run efficiently.
3) DBMS system works on the centralized system, i.e. all the users from all over the world access
this database. Hence any failure of the DBMS, will impact all the users.
4) DBMS is generalized software, i.e. it is written work on the entire systems rather specific one.
Hence some of the application will run slow.
Relational Model: The relational model uses a collection of tables to represent both data and the
relationships among those data. Each table has multiple columns, and each column has a unique
name. Tables are also known as relations. The relational model is an example of a record-based
model. Record-based models are so named because the database is structured in fixed-format records
of several types. Each table contains records of a particular type. Each record type defines a fixed
number of fields, or attributes. The columns of the table correspond to the attributes of the record
type. The relational data model is the most widely used data model, and a vast majority of current
database systems are based on the relational model.
Object-Based Data Model: Object-oriented programming (especially in Java, C++, or C#) has
become the dominant software-development methodology. This led to the development of an object-
oriented data model that can be seen as extending the E-R model with notions of encapsulation,
methods (functions), and object identity. The object-relational data model combines feature of the
object-oriented data model and relational data model.
Semi-structured Data Model: The semi-structured data model permits the specification of data
where individual data items of the same type may have different sets of attributes. This is in contrast
to the data models mentioned earlier, where every data item of a particular type must have the same
set of attributes. The Extensible Markup Language (XML) is widely used to represent semi-
structured data.
6
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Historically, the network data model and the hierarchical data model preceded the relational data
model. These models were tied closely to the underlying implementation, and complicated the task
of modeling data. As a result, they are used little now, except in old database code that is still in
service in some places.
Physical Level: The physical schema specifies additional storage details. Essentially, the physical
schema summarizes how the relations described in the conceptual schema are actually stored on
secondary storage devices such as disks and tapes. We must decide what file organizations to use
to store the relations and create auxiliary data structures, called indexes, to speed up data retrieval
operations.
A sample physical schema for the university database follows:
• Store all relations as unsorted files of records. (A file in a DBMS is either a collection of
records or a collection of pages, rather than a string of characters as in an operating system)
• Create indexes on the first column of the Students, Faculty, and Courses relations, the sal
column of Faculty, and the capacity column of Rooms.
Decisions about the physical schema are based on an understanding of how the data is typically
accessed. The process of arriving at a good physical schema is called physical database design.
Conceptual Level: The conceptual schema (sometimes called the logical schema) describes the
stored data in terms of the data model of the DBMS. In a relational DBMS, the conceptual schema
describes all relations that are stored in the database. It describes what data are stored in the
database, and what relationships exist among those data. The logical level thus describes the entire
database in terms of a small number of relatively simple structures. Although implementation of
the simple structures at the logical level may involve complex physical-level structures, the user of
the logical level does not need to be aware of this complexity. Database administrators, who must
decide what information to keep in the database, use the logical level of abstraction.
In a sample university database, the relations contain information about entities, such as students
and faculty, and about relationships, such as students' enrollment in courses. All student entities
can be described using records in a Students relation. In fact, each collection of entities and each
collection of relationships can be described as a relation, leading to the following conceptual
schema:
7
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Students(sid: string, name: string, login: string, age: integer, gpa: real)
Faculty(fid: string, fname: string, sal: real)
Courses( cid: string, cname: string, credits: integer)
Rooms(rno: integer, address: string, capacity: integer)
Enrolled (sid: string, cid: string, grade: string)
Teaches(fid: string, cid: string)
Meets_In( cid: string, rno: integer, time: string)
External level (View Level): The highest level of abstraction describes only part of the entire
database. Any given database has exactly one conceptual schema and one physical schema because
it has just one set of stored relations, but it may have several external schemas, each tailored to a
particular group of users. Each external schema consists of a collection of one or more views and
relations from the conceptual schema. Even though the logical level uses simpler structures,
complexity remains because of the variety of information stored in a large database. Many users of
the database system do not need all this information; instead, they need to access only a part of the
database. The view level of abstraction exists to simplify their interaction with the system. The
system may provide many views for the same database.
Ex:2
Most high-level programming languages support the notion of a record type. For example, in a Pascal-
like language, we may declare a record as follows:
type customer = record
customer-id : string;
customer-name : string;
customer-street : string;
customer-city : string;
end;
8
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
This code defines a new record type called customer with four fields. Each field has a name and a type
associated with it.
A data-manipulation language (DML) is a language that enables users to access or manipulate data
as organized by the appropriate data model. There are basically two types:
Procedural DMLs require a user to specify what data are needed and how to get those data.
Declarative DMLs (also referred to as non-procedural DMLs) require a user to specify
what data are needed without specifying how to get those data. Declarative DMLs are
usually easier to learn and use than are procedural DMLs.
10
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
However, since a user does not have to specify how to get the data, the database system has to
figure out an efficient means of accessing data. The DML component of the SQL language is
nonprocedural.
A query is a statement requesting the retrieval of information. The portion of a DML that
involves information retrieval is called a query language. Although technically incorrect, it is
common practice to use the terms query language and data manipulation language synonymously.
This query in the SQL language finds the name of the customer whose customer-id is 192-83-7465:
select customer.customer-name
from customer
where customer.customer-id = 192-83-7465
The query specifies that those rows from the table customer where the customer-id is 192-83-
7465 must be retrieved, and the customer-name attribute of these rows must be displayed. Queries
may involve information from more than one table.
The levels of abstraction can not only to defining or structuring data, but also to manipulating
data. At the physical level, we must define algorithms that allow efficient access to data. At higher
levels of abstraction, we emphasize ease of use. The goal is to allow humans to interact efficiently
with the system. The query processor component of the database system translates DML queries into
sequences of actions at the physical level of the database system.
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).
12
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
1.10 Database System Structure
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 are shown in the following figure.
The DBMS accepts SQL commands generated from a variety of user interfaces, produces query
evaluation plans, executes these plans against the database, and returns the answers.
13
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
The query evaluation engine is important because it helps the database system simplify and
facilitate access to data. When a user issues a query, the parsed query is presented to a query optimizer,
which uses information about how the data is stored to produce an efficient execution plan for
evaluating the query. An execution plan is a blueprint for evaluating a query, usually represented as a
tree of relational operators. Relational operators serve as the building blocks for evaluating queries
posed against the data.
File and access methods layer supports the concept of a file, which, in a DBMS, is a
collection of pages or a collection of records. Heap files, or files of unordered pages, as well as indexes
are supported. In addition to keeping track of the pages in a file, this layer organizes the information
within a page. It manages the allocation of space on disk storage and the data structures used to
represent information stored on disk.
Buffer manager brings pages in from disk to main memory as needed in response to read
requests. Corporate databases range in size from hundreds of gigabytes to terabytes of data. Since 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. Buffer manager is responsible for
deciding what data to cache in main memory. The buffer manager is a critical part of the database
system, since it enables the database to handle data sizes that are much larger than the size of main
memory.
The disk space manager is the lowest layer of the DBMS software that deals with
management of space on disk, where the data is stored. Higher layers allocate, deallocate, read, and
write pages through (routines provided by) this layer.
The DBMS supports concurrency and crash recovery by carefully scheduling user requests and
maintaining a log of all changes to the database. DBMS components associated with concurrency
control and recovery include Transaction Manager, Lock Manager and Recovery Manager.
The transaction manager, which ensures that the database remains in a consistent (correct)
state despite system failures, and that concurrent transaction executions proceed without conflicting. It
also ensures that transactions request and release locks according to a suitable locking protocol and
schedules the execution transactions;
The lock manager, which keeps track of requests for locks and grants locks on database
objects when they become available;
The recovery manager, which is responsible for maintaining a log and restoring the system to
a consistent state after a crash. The disk space manager, buffer manager, and file and access method
layers must interact with these components.
14
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
CHAPTER–2
The entity-relationship(ER) data model allows us to describe the data involved in a real-world
enterprise in terms of objects and their relationships and is widely used to develop an initial database
design.
15
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
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.
3. Application and Security Design: Any software project that involves a DBMS must consider
aspects of the application that go beyond the database itself. We must identify the entities (e.g.,
users, user groups, departments) and processes involved in the application. We must describe the
role of each entity in every process that is reflected in some application task, as part of a
complete workflow for that task. For each role, we must identify the parts of the database that
must be accessible and the parts of the database that must not be accessible, and we must take
steps to ensure that these access rules are enforced.
We might begin with the six step process outlined here, a complete database design will probably
require a subsequent tuning phase in which all six kinds of design steps are interleaved and repeated
until the design is satisfactory.
Figure 2.1
16
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
2.3 RELATIONSHIPS AND RELATIONSHIP SETS
A relationship is an association among two or more entities. For example, we may have the
relationship that Nikhil works in the pharmacy department. Collection of a set of similar relationships
is called a relationship set. A relationship set can be thought of as a set of n-tuples:
Each n-tuple denotes a relationship involving n entities el through en , where entity ei is in entity set Ei.
The below figure shows the relationship set Works_In, in which each relationship indicates a
department in which an employee works.
A relationship can also have descriptive attributes. Descriptive attributes are used to record
information about the relationship, rather than about any one of the participating entities;
An instance of a relationship set is a set of relationships. An instance can be thought of as a
'snapshot' of the relationship set at some instant in time. An instance of the Works_In relationship set is
shown in the following Figure.
Each Employees entity is denoted by its ssn, and each Departments entity is denoted by its did,
for simplicity. The since value is shown beside each relationship.
As another example of an ER diagram, suppose that each department has offices in several
locations and we want to record the locations at which each employee works. This relationship is
ternary because we must record an association between an employee, a department, and a location.
17
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
The ER diagram for this Works_In2, is shown in the below Figure
The entity sets that participate in a relationship set need not be distinct; sometimes a
relationship might involve two entities in the same entity set. For example, consider the Reports_To
relationship set shown in the following Figure. Since employees report_ to other employees, every
relationship in Reports_To is of the form (emp1, emp2), where both empl and emp2 are entities in
Employees.
However, they play different roles: ernp1 reports to the managing employee emp2, which is
reflected in the role indicators supervisor and subordinate in the above Figure. The Reports_To
relationship set has attributes corresponding to the ssn of the supervisor and the ssn of the subordinate,
and the names of these attributes are supervisor-ssn and subordinate-ssn.
18
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
2.4 ADDITIONAL FEATURES OF THE ER MODEL
The expressiveness of the ER model is a big reason for its widespread use. They provide constructs
that allow us to describe some subtle properties of the data.
Figure 2.6
A relationship set like Manages is sometimes said to be one-to-many, to indicate that one
employee can be associated with many departments (in the capacity of a manager), whereas each
department can be associated with at most one employee as its manager. In contrast, the Works_In
relationship set, in which an employee is allowed to work in several departments and a department is
allowed to have several employees, is said to be many-to-many. If we add the restriction that each
employee can manage at most one department to the Manages relationship set, which would be
indicated by adding an arrow from Employees to Manages in the above Figure, we have a one-to-one
relationship set.
19
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Each employee works in at most one department and at a single location. An instance of the
Works_In3 relationship set is shown in the below Figure. Note that each department can be associated
with several employees and locations and each location can be associated with several departments and
employees; however, each employee is associated with a single department and location.
20
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Revisiting the Works_In relationship set, it is natural to expect that each employee works in at
least one department and that each department has at least one employee. This means that the
participation of both Employees and Departments in Works_In is total. The following ER diagram
shows both the Manages and Works _In relationship sets and all the given constraints. If the
participation of an entity set in a relationship set is total, the two are connected by a thick line;
independently, the presence of an arrow indicates a key constraint.
The Dependents weak entity set and its relationship to Employees is shown in the above Figure.
The total participation of Dependents in Policy is indicated by linking them with a dark line. The arrow
from Dependents to Policy indicates that each Dependents entity appears in at most one (indeed,
exactly one, because of the participation constraint) Policy relationship. To underscore the fact that
Dependents is a weak entity and Policy is its identifying relationship, we draw both with dark lines. To
indicate that pname is a partial key for Dependents, we underline it using a broken line. This means
that there may well be two dependents with the same pname value.
2.4.4 Class Hierarchies
Sometimes it is natural to classify the entities in an entity set into subclasses. For example, we
might want to talk about an Hourly_Emps entity set and a Contract_Emps entity set to distinguish the
basis on which they are paid. We might have attributes hours_worked and hourly_wage defined for
Hourly_Emps and an attribute contractid defined for Contract_Emps.
The semantics that every entity in one of these sets is also an Employees entity and, as such,
must have all the attributes of Employees defined. Therefore, the attributes defined for an
Hourly_Emps entity are the attributes for Employees plus Hourly_Emps. We say that the attributes for
the entity set Employees are inherited by the entity set Hourly_Emps and that Hourly-Emps ISA (read
is a) Employees. A query that asks for all Employees entities must consider all Hourly_Emps and
Contract_Emps entities as well. The following Figure illustrates the class hierarchy.
22
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
A class hierarchy can be viewed in one of two ways:
• Employees is specialized into subclasses. Specialization is the process of identifying subsets of an
entity set (the superclass) that share some distinguishing characteristic. Typically, the superclass is
defined first, the subclasses are defined next, and subclass-specific attributes and relationship sets are
then added.
• Hourly_Emps and Contract_Emps are generalized by Employees. As another example, two entity
sets Motorboats and Cars may be generalized into an entity set Motor_Vehicles. Generalization
consists of identifying some common characteristics of a collection of entity sets and creating a new
entity set that contains entities possessing these common characteristics. Typically, the subclasses are
defined first, the superclass is defined next, and any relationship sets that involve the superclass are
then defined.
2.4.5 Aggregation
A relationship set is an association between entity sets. Sometimes, we have to model a
relationship between a collection of entities and relationships. Suppose that we have an entity set
called Projects and that each Projects entity is sponsored by one or more departments. The Sponsors
relationship set captures this information. A department that sponsors a project might assign employees
to monitor the sponsorship. Intuitively, Monitors should be a relationship set that associates a Sponsors
relationship (rather than a Projects or Departments entity) with an Employees entity.
23
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Figure 2.13
To define a relationship set such as Monitors, we introduce a new feature of the ER model,
called aggregation. Aggregation allows us to indicate that a relationship set (identified through a
dashed box) participates in another relationship set. This is illustrated in the above Figure, with a
dashed box around Sponsors (and its participating entity sets) used to denote aggregation. This
effectively allows us to treat Sponsors as an entity set for purposes of defining the Monitors
relationship set. We use it when we need to express a relationship among relationships.
24
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
2.5.1 Entity versus Attribute
While identifying the attributes of an entity set, it is sometimes not clear whether a property
should be modeled as an attribute or as an entity set (and related to the first entity set using a
relationship set). For example, consider adding address information to the Employees entity set. One
option is to use an attribute address. This option is appropriate if we need to record only one address
per employee, and it suffices to think of an address as a string. An alternative is to create an entity set
called Addresses and to record associations between employees and addresses using a relationship.
This more complex alternative is necessary in two situations:
• We have to record more than one address for an employee.
• We want to capture the structure of an address in our ER diagram.
For another example of when to model a concept as an entity set rather than as attribute,
consider the relationship set (called Works_In4) shown in the following Figure.
It differs from the Works_In relationship set of Figure 2.2 only in that it has attributes from and
to, instead of since. Intuitively, it records the interval during which an employee works for a
department. Now suppose that it is possible for an employee to work in a given department over more
than one period. We can address this problem by introducing an entity set called, say, Duration, with
attributes from and to, as shown in the following Figure.
25
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
2.5.2 Entity versus Relationship
Consider the relationship set called Manages in Figure 2.6. Suppose that each department
manager is given a discretionary budget (dbudget). Given a department, we know the manager, as well
as the manager's starting date and budget for that department. This approach is natural if we assume
that a manager receives a separate discretionary budget for each department that he or she manages,
which is shown in the following Figure, in which we have renamed the relationship set to Manages2.
But what if the discretionary budget is a sum that covers all departments managed by that
employee? In this case, each Manages2 relationship that involves a given employee will have the same
value in the dbudget field, leading to redundant storage of the same information. Another problem with
this design is that it is misleading; it suggests that the budget is associated with the relationship, when
it is actually associated with the manager.
We can address these problems by introducing a new entity set called Managers (which can be
placed below Employees in an ISA hierarchy, to show that every manager is also an employee). The
attributes since and dbudget now describe a manager entity.
26
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Suppose that we have the following additional requirements:
A policy cannot be owned jointly by two or more employees.
Every policy must be owned by some employee.
Dependents is a weak entity set, and each dependent entity is uniquely identified by taking
pname in conjunction with the policyid of a policy entity (which, intuitively, covers the given
dependent).
The first requirement suggests that we impose a key constraint on Policies with respect to Covers,
but this constraint has the unintended side effect that a policy can cover only one dependent. The
second requirement suggests that we impose a total participation constraint on Policies. This solution is
acceptable if each policy covers at least one dependent. The third requirement forces us to introduce an
identifying relationship that is binary. The best way to model this situation is to use two binary
relationships, as shown in the following Figure.
27
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad
Consider the constraint that each sponsorship (of a project by a department) be monitored by at
most one employee. We cannot express this constraint in terms of the Sponsors2 relationship set. On
the other hand, we can easily express the constraint by drawing an arrow from the aggregated
relationship Sponsors to the relationship Monitors in Figure 2.13. Thus, the presence of such a
constraint serves as another reason for using aggregation rather than a ternary relationship set.
28
Dr.V.Sambasiva Rao, St.Mary’s Engineering College, Hyderabad