%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % File: $Id$ % % Defines various relational algebra symbols. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}[2001/06/01] \ProvidesPackage{relalg}[2005/03/08 Relational algebra notation] \RequirePackage{latexsym} \RequirePackage{graphics} % Graphics is needed so that we can scale the size of a couple of operators. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % BASIC OPERATORS % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % select or restrict operator \newcommand{\Select}{\ensuremath{\sigma}} \newcommand{\Restrict}{\ensuremath{\sigma}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % project operator \newcommand{\Project}{\ensuremath{\pi}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set union operator \newcommand{\Union}{\ensuremath{\cup}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set difference operator \newcommand{\Difference}{\ensuremath{-}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % cartesian product operator \newcommand{\Product}{\ensuremath{\times}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % rename operator \newcommand{\Rename}{\ensuremath{\rho}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % ADDITIONAL OPERATORS % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % set intersection operator \newcommand{\Intersection}{\ensuremath{\cap}} \newcommand{\Intersect}{\ensuremath{\cap}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % natural join operator \newcommand{\NaturalJoin}{\ensuremath{\Join}} \newcommand{\NatJoin}{\ensuremath{\Join}} \newcommand{\NJoin}{\ensuremath{\Join}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % division operators \newcommand{\Divide}{\ensuremath{/}} \newcommand{\AltDivide}{\ensuremath{\div}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % assignment operator \newcommand{\Assign}{\ensuremath{\leftarrow}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % EXTENDED OPERATORS % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % aggregate functions \newcommand{\Sum}[1]{\ensuremath{\mathcal{G}_{\mathbf{\mathrm{sum}}(#1)}}} \newcommand{\Avg}[1]{\ensuremath{\mathcal{G}_{\mathbf{\mathrm{avg}}(#1)}}} \newcommand{\Min}[1]{\ensuremath{\mathcal{G}_{\mathbf{\mathrm{min}}(#1)}}} \newcommand{\Max}[1]{\ensuremath{\mathcal{G}_{\mathbf{\mathrm{max}}(#1)}}} \newcommand{\Count}[1]{\ensuremath{\mathcal{G}_{\mathbf{\mathrm{count}}(#1)}}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % outer join operators % Note: can't use \ensuremath in these because it screws up the spacing. % The $ are OK though because they're used inside hboxes anyway. \newcommand{\LeftOuterJoin}{\scalebox{0.5}[1]{$\sqsupset$}\mkern-2.5mu\lower0.1em\hbox{$\Join$}} \newcommand{\leftOuterJoin}{\LeftOuterJoin} \newcommand{\LOuterJoin}{\LeftOuterJoin} \newcommand{\LeftOuter}{\LeftOuterJoin} \newcommand{\LOJ}{\LeftOuterJoin} \newcommand{\RightOuterJoin}{\lower0.1em\hbox{$\Join$}\mkern-2.5mu\scalebox{0.5}[1]{$\sqsubset$}} \newcommand{\rightOuterJoin}{\RightOuterJoin} \newcommand{\ROuterJoin}{\RightOuterJoin} \newcommand{\RightOuter}{\RightOuterJoin} \newcommand{\ROJ}{\RightOuterJoin} \newcommand{\FullOuterJoin}{\scalebox{0.5}[1]{$\sqsupset$}\mkern-2.5mu\lower0.1em\hbox{$\Join$}\mkern-2.5mu\scalebox{0.5}[1]{$\sqsubset$}} \newcommand{\fullOuterJoin}{\FullOuterJoin} \newcommand{\FOuterJoin}{\FullOuterJoin} \newcommand{\FullOuter}{\FullOuterJoin} \newcommand{\FOJ}{\FullOuterJoin} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % MISCELLANEOUS % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % logical operators % \And appears to conflict with beamer? (unconfirmed) \newcommand{\LogicalAnd}{\ensuremath{\wedge}} \newcommand{\LogAnd}{\ensuremath{\wedge}} \newcommand{\LogicalOr}{\ensuremath{\vee}} \newcommand{\LogOr}{\ensuremath{\vee}} \newcommand{\LogicalNot}{\ensuremath{\neg}} \newcommand{\LogNot}{\ensuremath{\neg}} \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % $Log$ % Revision 1.3 2005/03/08 01:24:51 nstanger % - Added \leftOuterJoin, \rightOuterJoin and \fullOuterJoin to make generating % them from XML easier. % % Revision 1.2 2004/07/19 00:26:19 nstanger % - Renamed logical operators to \LogicalXXX because of conflict with \And, possibly defined in beamer? % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%