Chapter 3 : Relational Model • • • • • • Structure of Relational Databases Fundamental Relational-Algebra Operations Additional Relational-Algebra Operations Extended Relational-Algebra Operations Null Values Modification of Database Terminologies related To Relational Model • Relation – Defined as a table with collection of rows and columns. Data can be stored in the form of a 2D table. Rows will be records and columns will be attributes • Attribute – Defined as a named column of a relation. The entities are relations and their attributes are columns of the relation • Domain – Defined as a set of allowed values for one or more attributes • Tuple – It is a row of a relation. Tuple can appear in any order and the relation will still remain the same relation • Extension (state) of a relation – Defined as the set of tuples that appear in that relation at any given instant of time. Extension is same as view of the table Terminologies related To Relational Model • Intension of a relation – A permanent part of the relation, independent of time. • Degree of a relation – Defined as the number of attributes it contains. It is property of the intension of a relation • Cardinality of a relation – Defined as the number of tuples it contains. It is the property of the extension of the relation • Relational database – Defined as the collection of normalized / structured relations with distinct relation names • N-ary relation – A relation with degree N Structure of Relational Databases • A relational database consist of collection of Tables, each is assigned a unique name • A row in a table represents a relationship among a set of values Basic Structure Let us consider the “account” table. It has three column headers, account_number, branch_number, balance • These headers are attributes • For each, there is a set of permitted values, called the DOMAIN of that attribute. – For attribute branch_name the domain is the set of all branch names. At physical level the domain of branch name is string of characters Let, • D1 - set of all account no.s • D2 – set of all branch_names • D3 - set of all balances Basic Structure Any row of “Account” table must consist of a 3tuples(v1, v2, v3) v1 – account no. (v1 is in D1) v2 – branch name (v2 is in D2) v3 – balance (v3 is in D3) i.e. “Account” is a subset of D1 x D2x D3 • A Relation is a subset of Cartesian product of list of domains Basic Structure • • • • • • A TUPLE variable is a variable whose domain is the set of all tuples i.e. tuple variable t[account_number] denotes the value of t on account number attribute t[account_number] = “A-101” or t[1] = “A-101” t is in relation r For all relations r, the domains of all attributes of r must be atomic. A domain is Atomic if elements of the domain are individual units Null attributes should be eliminated if at all possible Database Schema • • • We must differentiate between Database Schema Database instance A relation corresponds to the programming language notation of a variable • A relational schema corresponds to the programming language notation type definition • A relation instance corresponds to the programming language notation of a value of a variable e.g. Account_schema(account_number, branch_name, balance) “Account” is a relation on Account_schema account(Account_schema) i.e. r(R) Relational Model Notation • • A relation schema R of degree n is denoted by R(A1, A2, …, An) An n-tuple t in a relation r(R) is denoted by t =<v1, v2, …, vn> where vi is the value corresponding to attribute Ai For component value of a tuple – T[Ai], t.Ai and t[i] refers to the value vi in t for attribute Ai – T[Au, Aw, …, Az] and t.(Au, Aw, …, Az) where Au, Aw, …, Az is a list of attributes from R, refers to the subtuple of values <vu, vw, …, vz) from t corresponding to the attributes specified in the list • • • • The letter Q, R, S denote relation names The letter q, r, s denote relation states The letter t, u, v denote tuples Name of relation indicates the current set of tuples in that relation whereas STUDENT(name, rollno,…) refers relation schema only Relational algebra • • • Relational algebra and relational calculus are formal languages associated with the relational model Both operands and results are relations, so output from one operation can become input to another operation Allows expressions to be nested, just as in arithmetic. This property is called closure. Relational Algebra • • • Five basic operations in relational algebra are Selection, Projection, Cartesian product, Union, and Set Difference These perform most of the data retrieval operations needed Also have Join, Intersection, and Division operations, which can be expressed in terms of 5 basic operations Selection (or Restriction) Assignment Operation • • • Used to write relational-algebra expression in parts using assignment to a temporary relation variable Denoted by Similar to assignment in programming language Modification of the Database • • How to add, remove, or change information in the database We express database modification using the assignment operation Modification of the DB - Deletion • • • • Deletion in relational-algebra is much same as a query Instead of displaying tuples to the user, selected tuples are removed from the database We can delete only whole tuples; we cannot delete values on only particular attributes Deletion is expressed by r r–E Where, r – relation E – relational-algebra query Modification of the DB - Insertion • • • • To insert data into a relation, we specify a tuple to be inserted or write a query whose result is a set of tuples to be inserted The attribute values for inserted tuples must be members of the attribute’s domain Tuples inserted must be of correct arity Insertion is expressed by r rUE Where, r – relation E – relational-algebra expression Modification of the DB - Updation • • • • In some situations we wish to change a value in a tuple without changing all values in the tuple Uses generalized projection for updation Insertion is expressed by r П F1, F2, . . ., Fn(r) Where, Fi – ith attribute of r, if the ith attribute is not updated , or if the attribute is to be updated Fi is an expression, involving only constants and the attributes of r, which gives new value to r To update selected tuples from r r П F1, F2, . . ., Fn(бp (r)) U (r - бp (r)) Extended Relational-algebra operations • • Generalized projection Outer join – Left – Right – Full • Aggregation Functions Generalized Projection • • It extends the projection operation by allowing arithmetic functions to be used in the projection list Denoted by П F1, F2, . . ., Fn(E) Where, E – relational-algebra expression F1, F2, . . ., Fn – arithmetic expressions involving constants and attributes in the schema of E Rename Operation • • Used to give a name (alias) to relationalalgebra expressions or relation Denoted by Greek letter rho X (E) • • • E – relational algebra expression X name given to relational-algebra query expression How to Read it Result of relational-algebra query expression E under the name X Rename Operation • Assume relational algebra expression E has n-arity then X(A1, A2, . . . , An)(E) • How to Read it Result of relational-algebra query expression E under the name X, and with the attributes renamed to A1, A2, . . . , An Aggregate Functions • It take collection of values and return a single value as a result List of aggregate functions • Sum – returns the sum of values • Avg – returns the average of values • Count – returns no. of elements in the collection • Min – returns the minimum value in the collection • Max - returns the maximum value in the collection Note - To eliminate duplicates, same function names with the addition of the hyphenated string distinct Aggregate Functions • To find out the total sum of salaries of all employees sum • salary (employee) Find the number of departments in the employee relation count-distinct departmentno (employee) Aggregate Functions on Groups • • • In some circumstances we would like to apply aggregate function not only to the single set of tuples but to several groups, where each group is set of tuples Can be done by using an operation called Grouping Denoted by aggregation operator Ç G1, G2, . . ., Gn ÇF1 A1, F2 A2, . . ., Fm Am ( E ) Where, E – relational-algebra expression G1, G2, …, Gn – list of attributes on which to group Fi – an aggregate function Ai – an attribute name Aggregate Functions on Groups • The tuples in result of expression E are partitioned into groups such that – All tuples in a group have same values for G1, G2, . . . , Gn – All tuples in different groups have different values for G1, G2, . . . , Gn • For each group (g1, g2, . . ., gn) the result has a tuple (g1, g2, . . ., gn, a1, a2, . . ., an) • Where for each i, ai is the result of applying aggregate function Fi on the multiset of values for attribute Ai in the group View Definition • A view is defined using the create view statement. To define a view, we must give the view name, and must state the query that computes the view. The create view statement is CREATE VIEW v as <query-expression> Where query-expression is any relational-algebra query expression View Definition • • A clerk who needs to see all loan data in the loan relation except loan-amount CREATE VIEW branch-loan as Пbranch_name, loan_number(loan) Insertion using view in loan relation branch-loan branch-loan U {(“new panvel”, “L-37”)} Views Defined Using Other Views CREATE VIEW branch-loanno as Пloan_number(branch-loan) Types of Keys