![]() | |
#1
| |||
| |||
|
#2
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#3
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#4
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#5
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#6
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#7
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#8
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#9
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
#10
| |||||
| |||||
|
|
Occasionally the question has come up as to whether a relation value is the body, or the body+the header. In the past I've sided with the just-the-body approach, but today I decided that I don't think that anymore. |
|
Consider the algorithm to perform a natural join on two relation values. Just values: not tables in a database with a known schema or whatever. Just two plain relation values. The natural join specification *requires* the header; it is defined (in part) in terms of the header. So the header must be part of the value. |
|
Of course, that then leads me to think of a relation value as a <header, body> tuple. |
|
(Let us omit column type information for the present discussion.) Then one imagines an updatable relation variable in a database as holding a value of this tuple type. BUT then we notice that we have this restriction that the header must not be updated. Why is that? |
|
Certainly in practice this is the sort of thing that would be almost universally a good idea. But what theoretical basis does it have? I can think of none. So I propose, for your amusement, the mental model that a relation variable is merely a simple binding from a name to a header, body> relation value, period, full stop. Also, *customarily* the variable has the update constraint that old.header = new.header. Marshall |
![]() |
| Thread Tools | |
| Display Modes | |
| |