Path: news.easynews.com!newsfeed1.easynews.com!easynews.com!easynews!news.he.net!chekhov.conxion.net!news.oracle.com!not-for-mail
From: "Mikito Harakiri"
Newsgroups: comp.databases.theory
References: <3e48d741.0@news.ruca.ua.ac.be> <3e4ad2b8.0@news.ruca.ua.ac.be> <3E4B8137.2080204@atbusiness.com> <3GU2a.12$O%2.121@news.oracle.com>
Subject: Re: Extending my question. Was: The relational model and relational algebra - why did SQL become the industry standard?
Lines: 74
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2600.0000
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2600.0000
Message-ID:
Date: Thu, 13 Feb 2003 17:57:14 -0800
NNTP-Posting-Host: 130.35.179.103
X-Trace: news.oracle.com 1045188178 130.35.179.103 (Thu, 13 Feb 2003 18:02:58 PST)
NNTP-Posting-Date: Thu, 13 Feb 2003 18:02:58 PST
Xref: newsfeed1.easynews.com comp.databases.theory:24757
X-Received-Date: Thu, 13 Feb 2003 18:58:13 MST (news.easynews.com)
"Steve Kass" wrote in message
news:b2h9jb$p0h$1@slb4.atl.mindspring.net...
> I didn't read the whole thread, but in the right context, the
> bags are functions, and intersect, union, etc. are all well-defined.
I don't agree that the matter is "context dependent". One either has a model
with a consistent set of operations that users like, or not.
> Definition: A multiset M over a domain U is a function with
> domain U and range the set of non-negative integers.
>
> We say that the element x is in M if M(x) > 0.
> We say that the element x appears in M with multiplicity k, if M(x) = k
> We say that M = M' for two multisets M and M' on domains U and U'
> respectively if M(x) = M'(x) for all x in the intersection of U and U' and
> M(x) = 0 when x is not in U, and M'(x) = 0 when x is not in U'.
>
> Functions are well-defined in terms of sets also, subsets of U x Z where
> (x,n) and (x,m) both in a function f implies n = m (single-valuedness).
>
> It makes no sense to take the union of two functions, but it does make
sense
> to take the sum (union all), min (intersection), and other operations.
Union is redundant in multiset model anyway. It is a distinct "union all".
"Distinct" is a grouped aggregate.
> Just define things carefully and it's all much easier. If you think the
> intersection
> of two multisets, one containing two S's and one containing 3 should be a
> multiset containing 6 S's, then see if it the product operation f*g(x) =
> f(x)*g(x)
> has useful properties for modeling the real world.
With my definition
select name from e1
intersect
select name from e2
is identical to
select e1.name from e1, e2
where e1.name = e2.name
This is not true with the "min" definition.
> I don't see why you
> would
> call something like that intersect, though.
See the above.
> As for what laws hold for multisets, you just go figure out which ones do.
Found one that doesn't hold for multisets:-(
select e1.name from (
select e1.name, e2.name from emp e1, emp e2
)
is not the same as
select name from emp
More concisely:
PROJECT*POWER != 1