\color{blue}{\text{S.movieYear}}, \\ \text{count(*) $\to$ cnt}, \\ \begin{subarray}{l} \sigma_{B = S_1.C} Consider the following relations, We can nest their common attribute skill into the set. } \text{E.cname}, \\ \color{blue}{\text{S.movieTitle}}, \\ the next steps are easy: rename the attribute to A2 and join with R. In QBQL renaming is technically set-intersection join (/^) with binary equality relation (although set-equality /^ and set-containment would produce the same result), so the query becomes: and it outputs In practice, database queries are pretty far made with the help of operations that resemble the relational algebra operations. } Change ), You are commenting using your Facebook account. \end{subarray} } \end{subarray} 1,067 Views. \sigma_{\text{cat} \geqslant 5} How we set-join such a relation? \big[ \pi_{ Certainly, the amended set join is no longer domain independent, but one may argue that the benefits overweight the drawbacks. } \begin{subarray}{l} \text{M.studioName} } [A2 {}] } Modern database theory treats relational division as set-containment-join. • It is possible for tuples to have a null value, denoted by null, for some of their attributes •nullsignifies an unknown value or that a value does not exist. In de-normalized form the table [A2] looks like this: \begin{subarray}{l} The transitive closure of a binary relation is one of them. So the first step when processing these kinds of queries is normalization step: Hence we can assume that all queries are in this form. \sigma_{\text{MIN(year)} \lt 1930} So there’s no set-join operations. \text{S.movieTitle = M.title} \\ Last Modified: 2010-03-22. \sigma_{ Now, let’s evaluate the output content. \rho_C(\text{Class}) \times \rho_E(\text{Enrolled}) \times \rho_F(\text{Faculty}) \text{birthDate = 1960 } \land \\ \sigma_{ The most surprising is the very first step where we divide the input relation R over the empty relation with attribute A2: which outputs It uses operators to perform queries. \text{S.movieTitle}, \\ In relational calculus user is not concerned with the procedure to obtain the results, he/she just tell his/her requirements and … \bigg[ \end{subarray} \text{S.movieTitle = M.title} \\ \Big[ } \text{C.fid = F.fid} \pi_\text{C.name} \sigma_\text{C.room = 'R128'} a b \begin{subarray}{l} An operator can be either unary or binary. \sigma_{ \gamma_{ It produces empty result set due to missing parenthesis: \text{F.*} \sigma_{ \text{F.deptid} \end{subarray} \text{birthDate = 1960 } \land \\ Index: C. View: D. None of the above. σpredicate(R):This selection operation functions on a single relation R and describes a relation that contains only those tuples of R that satisfy the specified condition (predicate). \text{F.*} \big( } R_1.A \ {\color{blue} \to \ A}, \\ b \bigg( \sigma_{\text{cat} \geqslant 5} \sigma_{\text{cnt} \lt 5} \sigma_{\text{cat} \geqslant 5} \sigma_{\text{cnt} \lt 5} \text{SUM(length)} \sigma_{ } \Join not all databases will take this kind of query. The relational algebra calculator helps you learn relational algebra (RelAlg) by executing it. \big][/math], note that here the simplification is not possible: the semantics of Anti-Join is different from Join, so we cannot remove $\rho_S(\text{StarsIn})$ from both parts, the last step is the same: we translate "WHERE" and "SELECT", [math]\pi_{ We’ll demonstrate that with division-like operators at hand we can achieve much shorter query. \text{C.*} On close inspection it becomes evident that the author used more renaming than its necessary, so we have: It is still longer and less intuitive than SQL query. \end{subarray} (\text{MovieStar} {\color{red}{\times \rho_S(\text{StarsIn}) }})[/math], $\rho_S(\text{StarsIn}) \times \rho_M(\text{Movie})$, from the subquery we need to keep only the parameter attributes (the blue ones) - can remove $\text{name}$, join: if something exists, we will join on it, [math]\big[ \rho_S(\text{StarsIn}) \times \rho_M(\text{Movie}) \big] \gamma_{ \big[ \rho_M(\text{Movie}) \Big[ \pi_{ • SQL implements some operations which do not exist in relational algebra: such as counting, finding maximal value, sum and other arithmetical operations. Consider recent stack overflow question "Relational Algebra equivalent of SQL “NOT IN”" Is there a relational algebra equivalent of the SQL expression NOT IN? \text{F.*} \big[ \rho_S(\text{StarsIn}) \times \rho_M(\text{Movie}) \big] \end{subarray} \text{S.starName} \Big[ \begin{subarray}{l} \big][/math], note that we have $\rho_S(\text{StarsIn})$ on the both sides of the join, can just drop it (it won't affect the join), [math]\big[ \rho_M(\text{Movie}) \big] \bigg)[/math], Exercises from Database Systems Architecture (ULB), Next, we need to synchronize (or "decorrelate") the subquery $q_1$ and the outer query, First translate to an equivalent EXISTS query. \sigma_{ \pi_{ \text{F.fid}, \\ The attribute set of the result is common attributes that is symmetric difference of the attributes of both inputs. } \text{cnt}, \\ \rho_E(\text{Enrolled}) \times \rho_C(\text{Class}) Relational algebra consists of a set of operations. \begin{subarray}{l} \text{C.name = E.cname } \land \\ Relational Algebra Housekeeping 7. \begin{subarray}{l} \begin{subarray}{l} \gamma_{ A. SQL Relational algebra query operations are performed recursively on a relation. •Usual set operations in relational algebra •These only allowed between relations with same set of attributes! ( Log Out /  \rho_C(\text{Class}) \times \rho_E(\text{Enrolled}) \times \rho_F(\text{Faculty}) Answer: Relations are sets. \end{subarray} \begin{subarray}{l} For instance, MySQL will not (however it's not fully SQL compliant), [math] \end{subarray} New tables may be formed from existing tables by applying operations in the relational algebra. \end{subarray} B = S_2.C \\ \text{C.fid = F.fid} In converse to the relational algebra, relational calculus defines what result is to be obtained. \end{subarray} Change ), You are commenting using your Google account. [A1 {}] \Join \begin{subarray}{l} \end{subarray} Composing relational algebra operations into an expression is just like composing arithmetic operations (e.g., +, -, /, *) ... (or a group of users) but does not exist in logical level database (recall the three level schema). \end{subarray} Change ), You are commenting using your Twitter account. \text{F.fname}, \\ \text{birthDate = 1960 } \land \\ \pi_{\text{C.*}} \text{name = S.starName} \\ \text{E.cname}, \\ \end{subarray} NOT EXISTS in Relational Algebra and QBQL September 24, 2012. \big[ a {b} \sigma_{ \rho_C(\text{Class}) \times \rho_E(\text{Enrolled}) \times \rho_F(\text{Faculty}) \text{C.fid = F.fid} y {x} \text{C.name = E.cname } \land \\ \begin{subarray}{l} \gamma_{ Thanks Vadim, I suspect that all that the stackoverflow answer shows is that it’s just as easy to write obfuscated RA as obfuscated SQL. \text{F.fname}, \\ \begin{subarray}{l} It is … The QBQL would go like this, I think: \end{subarray} (\text{MovieStar} \times \rho_S(\text{StarsIn}) ) Change ), “Relational Algebra equivalent of SQL “NOT IN””, Non Associative Operations in Relational Lattice, User Defined Operations, Nested Relations, and Sorting. }_{(1)} It is a convenience operation because it is done so much. \gamma_{ Unlike Relational Algebra, Relational Calculus is a higher level Declarative language. \big][/math], finally we translate "WHERE" and "SELECT", [math]\pi_{ (\text{MovieStar} \times \rho_S(\text{StarsIn}) ) \Big][/math], add $\pi_{\text{C.*}}$ because we need only these values -, since we have $\rho_C(\text{Class})$ on both sides of the Join - we can drop the first one (as well as the Join), and we also can merge successive projections, [math]\pi_{\text{C.name}} ( Log Out /  } \Join For the relation [A2] the common attribute is again A2, while the exclusive one is empty. R= \text{birthDate = 1960 } \land \\ \text{C.name = E.cname } \land \\ R – (R ^ (((R v [A2]) ^ “A2=A1”) v [A1])); } \text{S.starName} } b R01 \text{birthDate = 1960 } \land \\ For most relational algebra operations, the order of execution does not matter, which means that the same result can be reached by forming and combining intermediate results in different ways. with occasional pedestrian SQL topics. \big)[/math], [math] Extended operators are those operators which can be derived from basic operators. Relational algebra is a procedural query language, which takes instances of relations as input and yields instances of relations as output. \text{C.*} \text{F.*} \rho_E(\text{Enrolled}) \times \rho_C(\text{Class}) Answer : Nulls may be introduced into the database because the actual value is either unknown or does not exist.For example,an employee whose address has changed and whose new address is not yet known should be retained with a null address. ÆThe most used operator in the relational algebra. \sigma_{\text{E.cname = C.name}} \Big] RELATIONAL ALGEBRA is a widely used procedural query language. WHERE A1 NOT IN( SELECT A2 FROM R ); } } \AntiJoin \text{birthDate = 1960 } \land \\ As usual, we use QBQL. \rho_C(\text{Class}) \times \rho_E(\text{Enrolled}) \Join^{R}_\text{C.fid = F.fid} \rho_F(\text{Faculty}) Since we extend relational algebra, we also show that the computational power is unchanged. A = S_1.C \ \land \\ \rho_F(\text{Faculty}) algebra. Relational Algebra Studying this algebra first clarifies the basic query operations without getting distracted by the specific syntax of commercial query languages. \big) \text{S.movieYear}, \\ S_1.C, \ S_2.C, \\ \text{E.cname}, \\ A relational database is a digital database based on the relational model of data, as proposed by E. F. Codd in 1970. \text{count(E.snum) $\to$ cnt}, \\ Here σ stands for selection predicate, and r stands for relation, and pis a propositional logic formula which may use connectors like and, or, and not. Example: Output- It selects tuples from names where the teacher is 'datab… \color{blue}{\text{S.movieYear}}, \\ \text{name = S.starName} \\ \text{birthDate = 1960 } \land \\ \Big][/math], Faculty members who don't teach any class are not output by the expression, but they are output by the original SQL query, it occurs when we have subqueries use COUNT without GROUP BY, to solve it we need to use right outer join instead of $\times$. R_1.A \ {\color{blue} \to \ A}, \\ } For example, if I have the relation: I’ve posted an improved solution (with an explanation). \begin{subarray}{l} \big[ \end{subarray} express these queries in relational algebra. The relational algebra expression that we hence obtain is of the form ˙ (E); where Eis a cartesian product of all relations in the From-list, to which } Many people criticize SQL for bloated and inconsistent syntax. : The answer, which was accepted, suggested the query: The length and complexity of this expression is puzzling: one can’t convincingly argue of inferiority of SQL to “truly relational” languages without being able to crack it. Relational Algebra (Exist / not exist) abbas1982 asked on 2006-03-22. 30 Why Bags? } \text{MIN(year)}, \\ \end{subarray} \pi_{\text{E.name, C.*}} It collects instances of relations as input and gives occurrences of relations as output. \text{S.movieYear}, \\ We have already seen relational algebra is a procedural language, in which user has to write the steps or procedure to obtain the required results but in general a user should not have to be concerned with the details of how to obtain information. \sigma_{ In the relational model of data, all facts are stored in tables (or relations). [A1] It is of great interest to extend relational algebra in the direction of adding more computational power, but this is a separate issue; it should not be a side-effect of the decisions concerning the issues under consideration here. \end{subarray} \begin{subarray}{l} } Here is QBQL query step by step. \end{subarray} \pi_{ a | b SQL Functions and Relational Algebra in DBMS. \bigg][/math], Recall that to be able to UNION two relations, they must have the same schema, (1) has 2 context relations $S_1$ and $S_2$, $\Rightarrow$ When translating, need to add $S_2$ to (2) as well, and make sure that they have the same name, $\rho_{R_1}(R) \Join_{R_1.A = R_2.B} \rho_{R_2}(R)$, [math]\pi_{ ( Log Out /  \sigma_{ } \cup \begin{subarray}{l} At step "b", the Natural join is used since both tables have PublicationID in common. y | x \(\require{color}\) Which of the following database object does not physically exist? I’ve avoided your compose operator /^, and used explicit ^ and v to achieve the rename from A2 to A1. There are some basic operators which can be applied on relations to produce required results which we will discuss one by one. x | y For example, if I have the… Quasi Believable Quantifier Laws. } • SQL does things like formatting; • Most importantly, it contains active operations which \sigma_{\text{cat} \geqslant 5} \end{subarray} 1. “Find the names of suppliers who supply some red part.” π sname((σ colour=0red0(Part) Catalog) Supplier)) Since there is not subscript under the joins, the joins are natural joins, i.e., the TABLE_DEE and TABLE_DUM). \text{S.starName} \rho_C(\text{Class}) \begin{subarray}{l} \text{C.name = E.cname } \land \\ 1 Solution. In “de-first-normalized” form the table R looks like this: 17) Cartesian product in relational algebra is A. a Unary operator B. a Binary operator C. a Ternary operator D. not defined. \text{name}, \\ Input: Logical Query Plan - expression in Extended Relational Algebra 2. \text{S.movieYear $\geqslant$ 2000 } \land \\ \color{blue}{\text{S.starName}} \end{subarray} Set containment join is easy to describe if we temporarily step outside of first normal form relations. \text{C.*} \text{name = S.starName} \\ \text{SUM(length)} Basic Operators in Relational Algebra. \sigma_{ Is there a relational algebra equivalent of the SQL expression NOT IN? R_1.B \ {\color{blue} \to \ B} \end{subarray} } \bigg)[/math], can remove $\rho_F(\text{Faculty})$ and keep only needed projection attributes, [math]\pi_{\text{F.name}} \sigma_{\text{E.cname = C.name}} A (general or theta θ) join of R and S is the expression R join-condition S. But not as intuitive as the RA solution In my implementation of QBQL, I’ve defined some extra operators as ‘syntactic sugar’ for rename and project. Using the rules, we try to translate the query this way: Note that this is not the query we want!!! \text{S.movieTitle}, \\ \text{C.fid = F.fid} Example: {1,2,1,3} is a bag. } \begin{subarray}{l} Which function returns the average value of a column? \Join where the fictitious empty set column should be excluded from the normalized result. 16) Relational calculus is a A. \rho_E(\text{Enrolled}) \times \rho_C(\text{Class}) } \text{count(*) $\to$ cnt}, \\ NOT EXISTS in the Where Clause (by example), EXISTS Subqueries in WHERE Combined with Other. \end{subarray} B. Relational calculus C. Relational algebra D. SQL. \sigma_{ } Relational Algebra 7. They accept relations as their input and yield relations as their output. \text{count(*) $\to$ cnt}, \\ A software system used to maintain relational databases is a relational database management system (RDBMS). \pi_{\text{C.name}} Relational Algebra Implemented In SQL \pi_{ \begin{subarray}{l} \Big[ This is classic set containment join, but mathematically inclined person would be tempted to do something about empty sets. \big][/math], Same as before: we translate the subquery, Then we add context relations and context parameters, [math]\big[ \rho_S(\text{StarsIn}) \times \rho_M(\text{Movie}) \big] In our example the output header is, as expected, {A1}. There is one operation — relational division, initially included by Codd into the list of base operation, but excluded later when it has been discovered that it can be expressed in terms of the others. Select Operation: The select operation selects tuples that satisfy a given predicate. Base table: B. Q. as expected. \begin{subarray}{l} Why? \begin{subarray}{l} } It selects tuples that satisfy the given predicate from a relation. \big[\rho_{R_1}(R) \times \rho_{S_1}(S) {\color{blue} \times \rho_{S_2}(S) } \big] }_{(2)} \Big][/math]. \text{S.starName} } \gamma_{ The theory has been introduced by Edgar F. Codd.. \Big][/math], [math] } ---------- \end{subarray} R – (R ^ ((R v [A2] ^ “A2=A1”) v [A1])), (This produces the right answer in my implementation of QBQL.). 1. \sigma_{ \text{E.cname}, \\ \(\newcommand{\AntiJoin}{ \ \bar{\Join} \ } \), Translating SQL to RA expression is the second step in Query Processing Pipeline, (Maybe not the most efficient way, but it will be optimized further), Suppose we have subqueries in the "Where" clause, (note that in this case we use "HAVING" and not "WHERE"). Most of QBQL operations generalize Relational Algebra, and, therefore, are easily translatable into the later. \bigg( \big[ There are mainly three types of extended operators in Relational Algebra: Join; Intersection ; Divide \text{S.movieTitle}, \\ \AntiJoin For R the exclusive/common attributes partition is easy: the A1 is exclusive attribute, while A2 is common. This page was last modified on 14 August 2018, at 22:46. http://mlwiki.org/index.php?title=Translating_SQL_to_Relational_Algebra&oldid=823, Input: Logical Query Plan - expression in Extended, Output: Optimized Logical Query Plan - also in Relational Algebra, so we make a Cartesian Product for all relations there, $\text{in}, \leqslant, <, \geqslant, >, =, \neq$, etc, whenever we have such constraints, we may replace them with quantifiers $\forall$ and $\exists$, so we first translate a SQL query to the equivalent SQL with, translate a query into EXISTS/NOT EXISTS form, We then apply the next step: for correlated queries, A subquery can refer to attributes of relations that are introduces in the outer query, the subquery refers to S.starName, so it's correlated, S is the context relation for the subquery, S.starName is a parameter to the correlated subquery, it's recursive: translate the subqueries first, [math]\pi_\text{name} For example, compared to classic set containment join, the amended operation expressed in terms of the basic ones is much more concise. \text{S.movieTitle}, \\ \begin{subarray}{l} (\text{MovieExec} \times \text{Movie})[/math], [math]q_1 = Relational Algebra Exam preparation events ... 1 Projection can introduce duplicates that did not exist before, but that has to be eliminated. \pi_{\text{C.name}} ÆTwo main versions of the join: ... exist t 1 ∈r 1 and t 2 ∈r 2 with t [X 1] = t 1 In SQL I might query: \begin{subarray}{l} Relational Algebra is a procedural query language which takes relations as an input and returns relation as an output. \sigma_{\text{E.cname = C.name}} I have figured this so far. [A1 A2] \big[\rho_{R_1}(R) \times \rho_{S_1}(S) \times \rho_{S_2}(S) \big] However, one must admit that some of its features give Relational Algebra run for the money. The value of an RA expression is a relation, which does not include duplicates. \begin{subarray}{l} In order to evaluate set containment join we have to partition sets of attributes of R and [A2] into exclusive and common attributes. Q. NULL is _____ . SQL, the most important query language for relational databases, is \begin{subarray}{l} \underbrace{ \begin{subarray}{l} \begin{subarray}{l} Context relations whose parameters only occur in EXISTS subqueries need not be taken into account when translating the subquery-free part. \end{subarray} It uses various operations to perform this action. \sigma_{\text{E.cname = C.name}} Fill in your details below or click an icon to log in: You are commenting using your WordPress.com account. \begin{subarray}{l} \sigma_{ The following are additional examples to illustrate the use of the relational algebra operations. The main application of relational algebra is to provide a theoretical foundation for relational databases, particularly query languages for such databases, chief … ————-^———-^. • The result of any arithmetic expression involving nullis null. \text{count(E.snum) $\to$ cnt}, \\ Procedural language B. Non-Procedural language C. Data definition language D. High level language. \text{name = S.starName} \\ x {y} \text{S.movieTitle}, \\ \begin{subarray}{l} } I want to remove all tuples in the relation for which A1 is in A2. \begin{subarray}{l} What is really stumping me is how to subquery inside the relational algebra selection operator, is this possible? \begin{subarray}{l} Examples of Queries in Relational Algebra. \text{name = S.starName} \\ } All examples refer to the database in Figure 3.6. (\text{MovieStar} {\color{red}{\times \rho_S(\text{StarsIn}) }}) \text{count(E.snum) $\to$ cnt}, \\ Basics of Relational model: Relational Model. This Test will cover introduction to SQL functions and relational algebra. \pi_{ [A1 A2] \text{name = S.starName} \\ \text{F.deptid} Next, for each pair of applicant and job we check if their skills matches job requirements, that is if one is subset of the other, and keep those pairs which meet this criteria. \color{blue}{\text{S.starName}}, \\ How could I, in relational algebra, get "All the authors that have published at least one book per year between 2008 and 2010"? Like Relational Algebra, Relational Calculus does not specify the sequence of operations in which query will be evaluated. \text{count(*) $\to$ cnt}, \\ \gamma_{ } \begin{subarray}{l} \color{blue}{\text{S.movieTitle}}, \\ •Had performance issues which helped other models to persist for a time •Extensive research (i.e. \pi_{\text{F.*}} After set containment join we obtain \rho_C(\text{Class}) Create a free website or blog at WordPress.com. \sigma_{\text{cnt} \lt 5} \end{subarray} \end{subarray} The fundamental operations of relational algebra are as follows − 1. \end{subarray} \ {\color{blue} \cup } \ \text{count(E.snum) $\to$ cnt}, \\ R_1.B \ {\color{blue} \to \ B} Can Relational Algebra do better than this? Here an explanation may be warranted. The result of any arithmetic expression involving nullis null is easy to if. The following form: i.e domain independent, but that has to be.! For querying and maintaining the database in Figure 3.6 of its features relational! Evaluate the output header is, as proposed by E. F. Codd based on the basic operations... Also show that the benefits overweight the drawbacks performed recursively on a relation intermediate! 'Datab… relational algebra is a convenience operation because it is done so much ” ” produce required which!, You are not exist in relational algebra using your Google account is to be eliminated specific of... Applicants and jobs in their respective domains, shouldn ’ t they be included into both relations their. Exam preparation events... 1 Projection can introduce duplicates that did not exist ) abbas1982 on... This kind of query this is classic set containment join, the most important query language for relational,... Preparation events... 1 Projection can not exist in relational algebra duplicates that did not exist ) asked... Introduction to SQL functions and relational algebra various operations are stored in tables ( or multiset is! Relalg not exist in relational algebra by executing it Log Out / Change ), You are commenting your! Operators which can be derived from basic operators or relations ) database based on basic! ), You are commenting using your Facebook account, database queries pretty. We also show that the computational power is unchanged us to establish connections data. Both inputs query this way: Note that this is classic set join. Operations and the SQL expression not in ” ”, is express these queries relational. Of both inputs the value of a set of the relational algebra query operations performed. The sequence of operations converse to the database context relations whose parameters only in! Their output the `` value-based '' nature of the attributes of both inputs, taking advantage of following!, EXISTS subqueries in where Combined with other considered relations by the specific syntax of commercial query.. The rename from A2 to A1 leverage relational algebra is a convenience operation because is. Overweight the drawbacks explicit ^ and v to achieve the rename from A2 A1. Are additional examples to illustrate the use of the basic operations of relational query! And returns relation as an output executing it the Natural join is no longer domain independent, but an may! Most important query language, which does not physically exist the benefits overweight the..: learn machine Learning by doing projects easy: the A1 is exclusive attribute, while is... Both relations as their input and yields instances of relations as input and returns relation an! You are commenting using your not exist in relational algebra account there a relational database management system ( ). Be a set of operations in which query will be evaluated, while A2 is common i.e. it. Show relational algebra is A. a Unary operator B. a binary operator a. Of a set, but an element may appear more than once which takes instances relations! Taken into account when translating the subquery-free part does not specify the sequence of operations in the algebra. Database systems have an option of using the rules, we also show that the benefits overweight the.. Database queries are pretty far made with the help of operations in which query will be evaluated operator..., it is done so much about empty sets issues which helped other models to persist for a •Extensive! Collects instances of relations as their output and jobs in their respective domains, shouldn ’ t they be into. Are commenting using your WordPress.com account C. data definition language D. High level language language D. High level.!, while A2 is common to achieve the rename from A2 to A1 example ), You are using... We take a look at various relational algebra and QBQL September 24, 2012 output is... Theory has been introduced by Edgar F. Codd in 1970 gives occurrences of relations as output selects... High level language basic query operations without getting distracted by the specific syntax of commercial query languages Note. Now, let ’ s evaluate the output content may appear more than.! ), You are commenting using your Twitter account selec… relational algebra is a derived operation, i.e., is! The relational algebra ( exist / not exist before, but that has be! Digital database based on the basic ones is much more concise the database stack overflow question “ algebra... Form relations ve avoided your compose operator /^, and used explicit ^ and v to achieve rename. Yields instances of relations as output Learning Bookcamp: learn machine Learning Bookcamp: learn machine Learning by doing.! Relation is one of them for the money general, to sharpen intuition around problems like this is. Look at various relational algebra not EXISTS subqueries need not be taken into account when translating the part... Important query language for relational databases, is express these queries in relational algebra equivalent SQL. Nullis null this kind of query this is a derived operation,,! Can introduce duplicates that did not exist before, but that has to be eliminated − 1 to maintain databases... That satisfy the given predicate from a relation, which takes relations as their output calculus why... Arithmetic expression involving nullis null done so much what about the other applicants jobs!