You are on page 1of 51

Database Systems

The Relational Data Model


The Relational Data Model

 Learning Objectives: Understand the foundation for using relational databases


• Recognize relational database terminology
• Understand the meaning of the integrity rules for relational databases
• Understand the impact of referenced rows on maintaining relational databases
• Understand the meaning of each relational algebra operator
• List tables that must be combined to obtain desired results for simple retrieval
requests
 Tables
 Constraints on Relational Database
 Operators of Relational Algebra
Tables

 A relational DB consists of a collection tables. Each table has a heading or


definition part and a body or content part.
• The heading part consists of table name and the column names
• The body shows the rows of table.
 A table has rows and columns, where rows represents records and columns
represent the attributes.
 Tuple − A single row of a table, which contains a single record for that relation is
called a tuple.
 Attribute domain − Every attribute has some pre-defined value scope, known as
attribute domain.
Tables

 Example: Students Table


• Table name: Students
• Column names: StdID, StdFirstname, StdLastName, StdBirthday, StdCity, StdMajor,
StdClass, StdGPA

StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5

20191001 Le Van Nam 22/2/2001 Hai MI Toan Tin 3.2


Phong
Tables

 Each column of a table is associate with a Column Names Column Data Type
data type. StdID CHAR(8)
 Data Type: defines a set of values and StdFirstname VARCHAR(50)
permissible operations on the values. StdLastName VARCHAR(50)

• Each data type has a name and ussually a StdBirthday DATE


length specification. StdCity VARCHAR(30)
StdMajor CHAR(6)
StdClass VARCHAR(20)
StdGPA DECIMAL(3,2)
Tables

 Alternative Terminology for Relational DB


Table-Oriented Set-Oriented Record-Oriented
Table Relation Record type, File
Row Tuple Record
Column Attribute Field

 Relation instance − A finite set of tuples in the relational database system


represents relation instance. Relation instances do not have duplicate tuples.
 Relation schema − A relation schema describes the relation name (table name),
attributes, and their names.
Constraints on Relational Database

 Constraints: the rules enforced on the data columns of a table.


• Domain constraints, NOT NULL constraints, ….
• Entity Integrity constraints (Ràng buộc toàn vẹn thực thể)
• Referential integrity constraints (Ràng buộc toàn vẹn tham chiếu)

 Constraints that are directly applied in the schemas of the data model, by
specifying them in the DDL (Data Definition Language).
Constraints on Relational Database

 NULL value: a special value that represents the absence of an actual value. A null
value can mean that the actual value is unknown or does not apply to the given
row

StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5

20191001 Le Van Nam Hai Phong MI Toan Tin 3.2

Tran Thi Cuc


Constraints on Relational Database

 Domain constraints (Ràng buộc miền):


• Every domain must contain atomic values(smallest indivisible units) it means
composite and multi-valued attributes are not allowed.
• We perform datatype check here, which means when we assign a data type to a
column we limit the values that it can contain. Domain constraints can be violated if an
attribute value is not appearing in the corresponding domain or it is not of the
appropriate data type.
• Domain constraints specify that within each tuple, and the value of each attribute
must be unique. This is specified as data types which include standard data types
integers, real numbers, characters, Booleans, variable length strings, etc.
Integrity Rules

 A relational database consists of a collection of interrelated tables. To ensure that


a database provides meaningful information, integrity rules are necessary.
• Entity integrity
• Referential integrity
Integrity Rules

 Superkey: a column or combination of column containing unique for each row.


• Unique means that no two rows of a table have the same value.
• The combination of every column in a table is always a superkey because rows in a
table must be unique (*SQL does not require*)
 Key (candidate key, unique key): a minimal superkey. A superkey is minimal if
removing any columns makes it no longer unique.

StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5

20191001 Le Van Nam 22/2/2001 Hai MI Toan Tin 3.2


Phong
Integrity Rules

 Primary key: a special designed candidate key. The primary key for a table cannot
contain null values.
• can identify the row in the relation (table) uniquely
 Entity integrity rules: No two rows of a table can contain the same value for the
primary key and no row can contain a NULL value for any columns of a primary key.
 Entity Constraints are also referred to as Key constraints
Integrity Rules

 Course Table: CrsNo CrsName CrsCredit


MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM2000 Nhap mon 2
 Offering Table
OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays
11111 MI3090 20211 D9-202 4 6 2
11112 MI3090 20212 D5-301 10 12 5
11113 MI2000 20211 D3-202 3 6 4

 Enrollment Table OfferNo StdID EnrGrade


11111 20191000 6
11111 20191001 7
11113 20191001 5
Integrity Rules
 Connection among Tables: Relationship connection between rows in two tables.
Relationships are shown by column values in one table that match column values
in another table.
 Referential integrity (also referred to as a foreign key constraint) means that the
values of columns in one table (the child table) must match the values of columns
in other tables (the parent table)
 Foreign key: a column or combination of columns in which the values must match
those of a candidate key. A foreign key must have the same data type as its
associated candidate key.
• Only two kinds of values can be stored in a foreign key:
 A value matching a candidate key value in some row of the table containing the associated
candidate key
 Or a null value
Create Tables in Microsoft Access

 Define fields (which is also known as column headings). Each field must have a
unique name, and data type (may have other constraints in addition)
• Adding Field Names in Table Design View
• Assigning Data Types in Table Design View
• Entering Field Descriptions in Design View
• Setting constraints on Tables
• Saving a Table in Design View

 Create relationship between tables in MS Access.


Create Tables in Microsoft Access
DataType Name: Data Type Description:

Short Text Contains up to 255 characters of text, or a combination of text, numbers, and other info.
A longer type of text field. It can store up to about 1 GB of text, but controls used to display its
Long Text
values can only show the first 64,000 characters.
Can contain only numeric data on which to perform calculations, NOT phone numbers or zip
Number codes. As you do not perform calculations with these numbers, they are text fields. Can be
either 1, 2, 4, 8, or 16 bytes in size, depending on the related “Field Size” setting.
An 8-byte numeric value which is compatible with the SQL_BIGINT data type in ODBC and
Large Number
which is used for efficiently calculating large numbers that aren’t currency.
Date/Time Contains an 8-byte date or time code. Useful for Date/Time calculations.

Date/Time A 42-byte date or time code similar to the Date/Time data type, but with a larger date range,
Extended higher fractional precision, and compatibility with the “datetime2” data type in SQL Server.
An 8-byte number data type in function, but formatted as currency, with 4 decimal places of
Currency precision. Uses fixed point calculation, which is faster than the Number data type’s floating
point calculation.
Create Tables in Microsoft Access

Assigns a unique 4-byte numeric ID to all records entered in the table. Useful as a primary key
AutoNumber
field. If used for Replication ID, then it instead contains 16 bytes.
Stores Boolean (logical) data, like “Yes/No,” “True/False,” “On/Off,” “-1/0.” Used when only two
Yes/No
possible values in a field can exist.
Connects to objects in Windows-based applications. You can use OLE Object data types for
OLE Object
ActiveX objects, pictures, calendars, and other types of files.

Hyperlink Contains a hyperlink to an address or file on the Internet, intranet, or LAN.

Allows you to attach any type of supported file, such as images, or spreadsheets, for example.
Attachment Provides greater attachment flexibility than the OLE Object field and also uses storage space
more efficiently than OLE fields.
Allows you to create a calculated field, which contains a value that is derived by performing a
Calculated
function on other table fields using an expression that you create.
Not an actual data type. Selecting this instead helps you set up a lookup field, which contains
Lookup Wizard… values from another table, query, or values you enter by hand, which then validate this field’s
values. Useful for combo boxes and list boxes in forms.
Create Tables in Microsoft Access

 Constraints enable you to further control how data is entered into a table and are
used to restrict values that can be inserted into a field and to establish referential
integrity.

Constraint Description

NULL/NOT NULL Used to indicate if a field can be left blank when records are entered into a table.

PRIMARY KEY Used to uniquely identify every record in a table.

FOREIGN KEY Used to link records of a table to the records of another table.

UNIQUE Used to ensure that every value in a column is different.


CHECK Used to set criterion for the data entered into a column.
Create Tables in Microsoft Access

 Setting Referential Integrity


• referential integrity is a system of rules used to ensure that relationships between
records in related tables are valid.
• can enforce referential integrity when you create a relationship, or you can enforce it
later by double-clicking on the relationship lines between the tables that you want to
use. Click on Enforce Referential Integrity in the window that appears.
Create Tables in Microsoft Access

 Set the join type


• 1-M relationship: a connection between two tables in which one row of a table can be
referenced by many rows of a second table. 1-M relationships are the most common
kind of relationship.
• M-N relationship: a connection between two tables in which rows of each table can be
related to many rows of the other table. M-N relationships cannot be directly
represented in the relational model. Two 1-M relationships and a linking or associative
table represent an M-N relationship.
• 1-1 relationship: a connection between two tables in which rows of each table can be
related to one row of the other table.
Create Tables in Microsoft Access

 Note:
• To create a one-to-one relationship Both of the common fields (typically the primary
key and foreign key fields) must have a unique index. This means that the Indexed
property for these fields should be set to Yes (No Duplicates). If both fields have a
unique index, Access creates a one-to-one relationship.
• To create a one-to-many relationship The field on the one side (typically the primary
key) of the relationship must have a unique index. This means that the Indexed
property for this field should be set to Yes (No Duplicates). The field on the many side
should not have a unique index. It can have an index, but it must allow duplicates. This
means that the Indexed property for this field should be set to either No or Yes
(Duplicates OK). When one field has a unique index, and the other does not, Access
creates a one-to-many relationship.
Create Tables in Microsoft Access

 Turn referential integrity on


• Enforce Referential Integrity.
• Cascade Update Related Fields: When you change data in the main field of one table,
Access will automatically update the matching data in the related table.
• Cascade Delete Related Records: When you delete a record in the main table, Access
will automatically delete any matching records in the related table.
Exercise

 Give a simplified Order Entry Database


 Customer(CusID. CusName, CusAddress, CusPhone)
 Employee(EmpID, EmpName, EmpPhone,
 Product(ProID, ProName, UnitPrice, UnitsInStock)
 Order(OrderID, OrderDate, CusID, EmpID)
 OrderDetail(OrdID, ProID, UnitPrice, Quantity)
 Create tables for the relation schemas and set the constraints on it.
 Manupulate in this database.
 (Name the file: StdID_StdName_1)
Relations

NOTE:
 Attributes
 Domains
 Tuples
 Relation
• Relation Schema: The name of a relation and a set of attributes for a relation is called
the schema for that relation
 A database schema (relational database schema) consist of set of schemas
Relational Algebra

 Relational database systems are expected to be equipped with a query language


that can assist its users to query the database instances. There are two kinds of
query languages − relational algebra and relational calculus.
 Relational algebra is a procedural query language, which takes instances of
relations as input and yields instances of relations as output. It uses operators to
perform queries.
 Relational - algebra expressions:
• Operands: Variables that stand for relations; constants, which are finite relations;
• Operators: Relational-algebra Operators (An operator can be either unary or binary)
 (They accept relations as their input and yield relations as their output. Relational
algebra is performed recursively on a relation and intermediate results are also
considered relations).
Fundamental Operations of Relational Algebra
 The usual set operations: applied to relations
• Union
• Intersection
• Set difference
 Operations that remove parts of a relation
• Selection
• Projection
 Operations that combine the tuples of two relations
• Cartesian product
• Join
 Division
 An operator called “Rename” that does not affect the tuples of a relation, but
changes the relation schema.
Fundamental Operations of Relational Algebra

Union Operation (∪)


It performs binary union between two given relations and is defined as:
R ∪ S = { t | t ∈ R or t ∈ S}
Notation: R U S

Intersection Operation
R  S = { t | t ∈ R and t ∈ S}
Notation: R  S

Where R and S are either database relations or relation result set (temporary relation).
Fundamental Operations of Relational Algebra

 Set Difference (−)


 The result of set difference operation is tuples, which are present in one relation
but are not
 Notation: R − S
 Finds all the tuples that are present in R but not in S.
 R - S = { t | t ∈ R and t  S}
Fundamental Operations of Relational Algebra

 Course_MI Relation CrsNo CrsName CrsCredit


MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM3102 Kinh te hoc dai cuong 2
 Course_EM Relation
CrsNo CrsName CrsCredit
ME2000 Nhap mon 2
MI3090 Co so du lieu 3
EM3200 Ke toan 2
Course_MI  Course_EM = ???
Course_MI  Course_EM
Course_MI - Course_EM
Fundamental Operations of Relational Algebra

 When apply union, intersection, difference operations to relations, we need to put


some conditions on R and S:
• R and S must have schemas with identical sets of attributes and the types (domains)
for each attribute must be the same in R and S
• Before we compute the set-theoretic union, intersection, or difference of set of tuples,
the columns of R and S must be ordered so that the order of attributes is the same for
both relations.
 Sometimes we would like to take the union, intersection, difference of relations
that have the same number of attributes, with corresponding domains, but that
use different names for their attributes. If so, we may use the renaming operator
to change the schema of one or both relations and give them the same set of
attributes.
Selection Operator

 Selection Operator(σ)
• It selects tuples that satisfy the given predicate from a relation.
 Notation: σC(R)
• Where σ stands for selection predicate and R stands for relation. C is prepositional
logic formula which may use connectors like and (), or (), not ( ). These terms
may use relational operators like =, ≠, ≥, < , >, ≤.
• C is called a conditional expression.
Selection Operator

 Relation Course_MI CrsNo CrsName CrsCredit


MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM3102 Kinh te hoc dai cuong 2

 σCrsCredit  3(Course_MI)
CrsNo CrsName CrsCredit
MI3090 Co so du lieu 3
Selection Operator
 The relation Students:
StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5

20191001 Le Van Nam 22/2/2001 Ha Noi MI Toan Tin 2.2

20191002 Tran Van Trung 5/5/2000 Ha Nam IT CNTT 3.1

20193000 Hoang Cuc 6/6/2000 Hai MI Toan Tin 2.9


Phong

 σStdGPA  3  StdCity = ‘Ha Noi’ (Students)


 σ(StdMajor = ‘EM’  StdMajor = ‘MI’)  StdCity = ‘Ha Noi’ (Students)
Projection

 Project Operator (∏)


• Produce from a relation R a new relation that has only some of R’s attributes.

Notation: ∏A1, A2,… An (R)


Where A1, A2 ,…, An are attribute names of relation R.
Duplicate rows are automatically eliminated, as relation is a set.
Projection
StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5


20191001 Le Van Nam 22/2/2001 Ha Noi MI Toan Tin 2.2
20191002 Tran Van Trung 5/5/2000 Ha Nam IT CNTT 3.1

20193000 Hoang Cuc 6/6/2000 Hai MI Toan Tin 2.9


Phong
StdID StdFirstname StdLastName StdGPA

∏StdID, StdFirtName, StdLastName, StdGPA(Students) 20191000 Nguyen Thi Mai 3.5

20191001 Le Van Nam 2.2


20191002 Tran Van Trung 3.1
20193000 Hoang Cuc 2.9
Projection

 Enrollment OfferNo StdID EnrGrade


11111 20191000 6
11111 20191001 7
11113 20191001 5

OfferNo
 ∏OfferNo (Enrollment) 11111
11113

 ∏StdID (Enrollment)
StdID
20191000
20191001
Selection and Projection Operators

 Relational Algebra Expression with Selection and Projection operators:


StdID StdFirstname StdLastName StdBirthday StdCity StdMajor StdClass StdGPA

20191000 Nguyen Thi Mai 11/01/2001 Ha Noi EM Ke toan 3.5


20191001 Le Van Nam 22/2/2001 Ha Noi MI Toan Tin 2.2
20191002 Tran Van Trung 5/5/2000 Ha Nam IT CNTT 3.1

20193000 Hoang Cuc 6/6/2000 Hai MI Toan Tin 2.9


Phong

 R = σStdGPA  3  StdCity = ‘Ha Noi’ (Students) The resulting relation: T


 T = ∏StdID, StdFirstName, StdLastName (R) StdID StdFirstname StdLastName

20191000 Nguyen Thi Mai


Selection and Projection Operators

 Combining operations to form queries?


• Suppose we want to know: List the students (ID, Lastname, Firstname) who have GPA
greater than 3 and whose City is ‘Ha Noi’
1. Select those Students tuples that have StdGPA  3  StdCity = ‘Ha Noi’
2. Project the relation from (1) onto attributes StdID, StdFirstName, StdLastName

 We can represent as an expression:


T = ∏StdID, StdFirstName, StdLastName (σStdGPA  3  StdCity = ‘Ha Noi’ (Students))
Catersian Product
 Cartesian Product or Cross-product (Χ)
• Combines information of two different relations into one.
• Notation: R Χ S
• Where R and S are relations and their output will be defined as:
R Χ S = { q t | q ∈ R and t ∈ S}
A B C D E A B C D E
1 2 1 2 3 1 2 1 2 3
3 4 4 5 6 1 2 4 5 6
7 8 9 1 2 7 8 9
3 4 1 2 3
Relation R Relation S 3 4 4 5 6
Result R X S 3 4 7 8 9
NOTE : R X S  S X R
Catersian Product

 The relation schema for the resulting relation is the union of the schemas for R and S. If R
and S have some attributes in common, we need to invent new names for at least one of
each pair of identical attributes. To disambiguate an attribute A that is in the schemas of
both R and S, we use R.A for the attribute from R and S.A for the attribute from S.

A B B C D A R.B S.B C D
1 2 2 3 5 1 2 2 3 5
3 4 4 5 7 1 2 4 5 7
6 7 9 1 2 6 7 9
3 4 2 3 5
Relation R Relation S 3 4 4 5 7
Result R X S 3 4 6 7 9
Natural Join Operator
 Natural Join
• Notation: R * S (or R ⋈ S)
• Let attributes A1, A2, … An be common attributes to the schemas of R and S.
• A tuple t from R and a tuple p from S are successfully paired if and only if t and
p agree on each of the attributes A1, A2, … An
• If the tuples t and p are successfully paired in the join R ⋈ S, then the result of
the pairing is a tuple, called the joined tuple, with one component for each of
the attributes in the union of the schemas of R and S. The joined tuple agrees
with tuple t in each attribute in the schema of R, and it agrees with tuple p in
each attribute in the schema of S.

A B B C D A B C D
1 2 ⋈ 2 3 5
= 1 2 3 5
3 4 4 5 7 3 4 5 7
6 7 9
Natural Join Operator

 Relation Course CrsNo CrsName CrsCredit


MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM2000 Nhap mon 2
 Relation Offering
OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays
11111 MI3090 20211 D9-202 4 6 2
11112 MI3090 20212 D5-301 10 12 5
11113 MI2000 20211 D3-202 3 6 4

 Result Offering ⋈ Course


OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays CrsName CrsCredit
11111 MI3090 20211 D9-202 4 6 2 Co so du lieu 3
11112 MI3090 20212 D5-301 10 12 5 Co so du lieu 3
11113 MI2000 20211 D3-202 3 6 4 Nhap mon 2
Natural Join Operator

 Offering ⋈ Course
OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays CrsName CrsCredit
11111 MI3090 20211 D9-202 4 6 2 Co so du lieu 3
11112 MI3090 20212 D5-301 10 12 5 Co so du lieu 3
11113 MI2000 20211 D3-202 3 6 4 Nhap mon 2

 Relation Enrollment: ⋈
OfferNo StdID EnrGrade
11111 20191000 6
11111 20191001 7
11113 20191001 5
? σOffTerm = ‘20211’(Offering ⋈ Course)
? ∏OfferNo, CrsNo, CrsName, OffTerm (σOffTerm = ‘20211’(Offering ⋈ Course))
? ∏ OfferNo, CrsNo, CrsName , OffTerm (σOffTerm = ‘20211’(Offering ⋈ Course)) ⋈ Enrollment
Natural Join Operator
 Relation Course CrsNo CrsName CrsCredit
MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM2000 Nhap mon 2
 Relation Offering
OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays
11111 MI3090 20211 D9-202 4 6 2
11112 MI3090 20212 D5-301 10 12 5
11113 MI2000 20211 D3-202 3 6 4
? ∏OfferNo, CrsNo, CrsName, OffTerm (σOffTerm = ‘20211’(Offering ⋈ Course))
? ∏OfferNo,CrsNo,OffTerm (σOffTerm = ‘20211’(Offering)) ⋈ ∏ CrsNo, CrsName (Course)
? ∏OfferNo,CrsNo,OffTerm, CrsName (σOffTerm = ‘20211’(Offering)) ⋈ ∏ CrsNo, CrsName (Course)
NOTE: There is often more than one relational algebra expression that represents the
same computation.
Natural Join Operator
 Relation Course: CrsNo CrsName CrsCredit
MI2000 Nhap mon 2
MI3090 Co so du lieu 3
EM2000 Nhap mon 2
 Relation Offering
OfferNo CrsNo OffTerm OffLocation OffTimeS OffTimeE OffDays
11111 MI3090 20211 D9-202 4 6 2
11112 MI3090 20212 D5-301 10 12 5
11113 MI2000 20211 D3-202 3 6 4

 Relation Enrollment OfferNo StdID EnrGrade


11111 20191000 6
11111 20191001 7
11113 20191001 5
? Offering ⋈ Course ⋈ Enrollment
? Offering ⋈ Enrollment ⋈ Course ???????? Enrollment ⋈ Course ⋈ Offering ???
Theta-Joins Operator

 Theta-Joins
• Notation: R ⋈C S
 C is a condition
 Called: Conditional Join(⋈c)

• The result of this operations is constructed as follows: R ⋈C S =  C (R X S)


 Take the product of R and S
 Select from the product only those tuples that satisfy the condition C
• As with the product operation, the schema for the result is the union of the schemas of
R and S, with “R” or “S” prefixed to attributes if necessary to indicate from which
schema the attribute came.
• With condition C is A  B
R ⋈A  B S = {<u,v>| u R, v S, u.A  v.B}
Theta-Joins Operator

A B
1 2 • R ⋈A S A R.B S.B C D
> B
2 3 3 4 2 3 5
3 4
 Equijoin

B C D
 is equality operator (=)
2 3 5 R ⋈A = B S A R.B S.B C D
4 5 7 2 3 2 3 5
6 7 9

R ⋈B = B S A R.B S.B C D
1 2 2 3 5
3 4 4 5 7
Semijoin Operator

 Semijoin (⋉)
 Notation: R ⋉ S
• The result is the set of all tuples in R for which there is a tuple in S that is equal on
their common attribute names. The difference from a natural join is that other
columns of S do not appear.
Division Operator

 Division Operator (÷):


• Division operation R ÷ S can be applied if and only if:
 Attributes of S is proper subset of Attributes of R.
• The relation returned by division operator will have attributes = (All attributes of R –
All Attributes of S)
• The relation returned by division operator will return those tuples from relation R
which are associated to every S’s tuple.
A B B A
2 3 ÷ 3 = 2
2 5 5 4
4 3
4 5
6 3
Rename Operation

 Rename Operation (ρ)


 The results of relational algebra are also relations but without any name. The
rename operation allows us to rename the output relation. 'rename' operation is
denoted with small Greek letter rho ρ.
 Notation: ρ x (E)
 Where the result of expression E is saved with name of x.
REFERENCES

1. Hector Garcia-Molina, Jeffrey D. Ullman, Jennifer Widom, DATABASE SYSTEMS:


The Complete Book
2. Ramez Elmasri, Shamkant B. N avathe, FUNDAMENTALS OF
FourthEdition DATABASE SYSTEMS
3. Michael V. Manning, Database Design, Application Development and
Administration.
4. https://www.tutorialspoint.com
5. https://beginnersbook.com

You might also like