

What the Heck is a Relation? From Tables to Cartesian Products to Logic - ludsan
http://merrigrove.blogspot.com/2013/12/what-heck-is-relation-from-tables-to.html?m=1

======
csense
In mathematics, a relation is a set of ordered pairs.

Strictly speaking, the relations of database theory are different objects, but
closely related. (Yes, I just made an awesome pun.)

I'm surprised that the author didn't include "a relation is a set of tuples"
as a definition in the article. Also, absolutely nothing is said about viewing
a relation as a graph.

------
cousin_it
I suspect that using unordered sets as the foundation for databases might have
been a mistake, and ordered lists with allowed repetition would've made a
better model, if only because they can model tables and query results equally
well (ORDER BY, SELECT without DISTINCT). Is there a good reason why this road
was not taken?

~~~
eru
Would you want bag semantics for things like union and intersection then?

~~~
cousin_it
Yes, that sounds reasonable. I don't know very much about the practical uses
of union and intersection in SQL, though.

------
tunesmith
The followup article ([http://merrigrove.blogspot.com/2013/12/the-occultation-
of-re...](http://merrigrove.blogspot.com/2013/12/the-occultation-of-relations-
and-logic_22.html?m=1)) is really good, too. I particularly liked the concrete
example of the "projection".

------
k0n2ad
"The self is a relation that relates itself to itself or is the relation's
relating itself to itself in the relation; the self is not the relation but is
the relation's relating itself to itself." \- Kierkgaard

Sorry, had to chime in with that

------
chris_wot
You have the following material implications:

    
    
        EMPLOYEE(Daniel Smith, Marketing)  →  TRUE
        EMPLOYEE(Jebediah Vargas, Marketing)  →  FALSE
    

However, if the employee name in the function is not Daniel Smith but the
employee is in marketing, the first predicate is true. How does that fit into
relational databases?

P.S. Great article!

~~~
siddboots
The arrow notation here is not material implication, but function evaluation.
The function itself can be interpreted as an Indicator Function[1] for the
employee set, or alternatively, as simply evaluating the predicate.

In terms of tables, the rows are exactly the subset of predicates that are
TRUE. So FALSE statements like the second one are indicated by their absence
in the employee table.

[1]
[http://en.wikipedia.org/wiki/Indicator_function](http://en.wikipedia.org/wiki/Indicator_function)

~~~
chris_wot
Thanks! I had no idea

