From: Tony Rogerson on
> an adjacency list model. You also need to stop using IDENTITY and
> other non-relational,
>

We've been here before and you failed to give an answer instead a grumble
about me insulting you.

Anyway, I'll ask again - why do you think the IDENTITY property is
non-relational?

It's simply a function that returns an incremental number, its
non-deterministic just like NEWID() rather than say a deterministic function
like PI.

Now - I ask again, why do you believe the scalar, atomic number value
returned by the IDENTITY property is non-relational?

If this is about your rants on surrogate keys, I also highlighted the areas
where you got your research wrong and have since built a stack of articles
on - shall we discuss that as well?

--ROGGIE--

From: --CELKO-- on
>> Anyway, I'll ask again <<
Considering that I have covered this topic in detial in my books,
newsgroups and articles over many years, this is just trolling. You
could cut and paste my stuff and make your case.
>> why do you think the IDENTITY property is non-relational? <<
It is a count of the physical insertion attempts (not successes!) in
one physical disk on one physical machine in one installation of one
product from one vendor. This is hardly an attribute of an entity or a
relationship.
It is at best a measurement on an absolute scale. It is a table
property.
>> It's simply a function that returns an incremental number, its non-deterministic just like NEWID() rather than say a deterministic function like PI. <<

I have Codd's dislike of non-deterministic "functions" and don't even
like to consider them in RDBMS. Closure, theta operators and therefore
joins, and other nice mathematical properties disappear. This was part
of the reasoning for NULLs -- RDBMS has to know what the values. I
want to have stationary random functions in my systems, but let's skip
that topic.

How many NEWID() columns can I have in a table? I can invoke a
function as many times as I wish; that is a property of a function..
But if it is a table property, I cannot have it in columns.

To be a function, it needs a domain and an range (or co-domain, if you
grew up with that term). It has to be invokable anywhere that its
range is allowed. The range and domain have to allow theta operators.
etc.

>> Now - I ask again, why do you believe the scalar, atomic number value returned by the IDENTITY property is non-relational? <<

Because it has nothing to do with the entity or relationship modeled
by the table. It is about physical storage events. How would you feel
about putting a thermometer on the computer and adding the temperature
of the disk drive at each physical insertion time?
From: Tony Rogerson on
>>> why do you think the IDENTITY property is non-relational? <<
> It is a count of the physical insertion attempts (not successes!) in
> one physical disk on one physical machine in one installation of one
> product from one vendor. This is hardly an attribute of an entity or a
> relationship.
> It is at best a measurement on an absolute scale. It is a table
> property.

CURRENT_TIMESTAMP - a measurement of ticks on the current machine's internal
clock, it has no baring on the atomic time measured centrally. Executing
CURRENT_TIMESTAMP on several machines at exactly the same point in time may
yield different results if those machines are not time sync'd.

The surrogate key according to both Codd and Date is a property of the
entity, it may not be in the user model, but certainly in the physical model
and further into the implementation.

>>> It's simply a function that returns an incremental number, its
>>> non-deterministic just like NEWID() rather than say a deterministic
>>> function like PI. <<
>
> I have Codd's dislike of non-deterministic "functions" and don't even
> like to consider them in RDBMS. Closure, theta operators and therefore
> joins, and other nice mathematical properties disappear. This was part
> of the reasoning for NULLs -- RDBMS has to know what the values. I
> want to have stationary random functions in my systems, but let's skip
> that topic.
>
> How many NEWID() columns can I have in a table? I can invoke a
> function as many times as I wish; that is a property of a function..
> But if it is a table property, I cannot have it in columns.
>
> To be a function, it needs a domain and an range (or co-domain, if you
> grew up with that term). It has to be invokable anywhere that its
> range is allowed. The range and domain have to allow theta operators.
> etc.
>

I think you ought to read the latest ratified ISO SQL Standard - 2008;
Section 4.14.7 on page 82 "Identity columns" - you better read it.

But, I know you've not even bothered to check so I'll copy and reference it
here....

From INCITS ISO IEC 9075 2 2008 ->
"The columns of a base table BT can optionally include not more than one
identity column. The declared type
of an identity column is either an exact numeric type with scale 0 (zero),
INTEGER for example, or a distinct
type whose source type is an exact numeric type with scale 0 (zero). An
identity column has a start value, an
increment, a maximum value, a minimum value, and a cycle option. An identity
column is associated with an
internal sequence generator SG. Let IC be the identity column of BT. When a
row R is presented for insertion
into BT, if R does not contain a column corresponding to IC, then the value
V for IC in the row inserted into
BT is obtained by applying the General Rules of Subclause 9.23, "Generation
of the next value of a sequence
generator", to SG. The definition of an identity column may specify
GENERATED ALWAYS or GENERATED
BY DEFAULT.
NOTE 30 - "Start value", "increment", "maximum value", "minimum value", and
"cycle option" are defined in Subclause 4.21,
"Sequence generators".
NOTE 31 - The notion of an internal sequence generator being associated with
an identity column is used only for definitional
purposes in this International Standard."

So the key items here are.....

not more than one identity column (per table)
declared type is an exact numeric type (integer)
internal sequence generator

UPDATE YOUR RESEARC!!!

I will concede that the IDENTITY is a "PROPERTY" rather than a FUNCTION in
that case, its a PROPERTY that more than not conforms to the requirements of
the ISO 2008 standard (the current ratified one).



>>> Now - I ask again, why do you believe the scalar, atomic number value
>>> returned by the IDENTITY property is non-relational? <<
>
> Because it has nothing to do with the entity or relationship modeled
> by the table. It is about physical storage events. How would you feel
> about putting a thermometer on the computer and adding the temperature
> of the disk drive at each physical insertion time?

By using a thermometer you'd get values already used which isn't allowed by
definition for a surrogate key which is why the IDENTITY "PROPERTY" ticks
all the boxes for Codd and Date's research on surrogate keys. And because of
Codd's information principle it MUST be exposed to the user.

Seriously --CELKO-- do you ever keep yourself up-to-date? Have you bothered
to read the current ratified standard?

--ROGGIE--


From: --CELKO-- on
>> CURRENT_TIMESTAMP - a measurement of ticks on the current machine's internal
clock, it has no baring on the atomic time measured centrally.
Executing
CURRENT_TIMESTAMP on several machines at exactly the same point in
time may
yield different results if those machines are not time sync'd. <<

You confuse the measurement with the instrument. Time is an attribute
in the physical universe. Yes, an instrument can be mis-calibrated;
but I doubt that anyone will think it is anything but a problem. It
has validation (ISO-8601) and verification rules (i.e. synch with the
NIST clock signals).

>> The surrogate key according to both Codd and Date is a property of the
entity, it may not be in the user model, but certainly in the physical
model
and further into the implementation. <<

>> I think you ought to read the latest ratified ISO SQL Standard - 2008; .. IDENTITY .. <<

I have and I think that SQL has some non-relational "features' in it.
There are non-table data structures, etc.

>> I will concede that the IDENTITY is a "PROPERTY" rather than a FUNCTION in
that case, its a PROPERTY that more than not conforms to the
requirements of
the ISO 2008 standard (the current ratified one). <<

Agreed.

>> By using a thermometer you'd get values already used which isn't allowed by
definition for a surrogate key which is why the IDENTITY "PROPERTY"
ticks
all the boxes for Codd and Date's research on surrogate keys. And
because of
Codd's information principle it MUST be exposed to the user. <<

And by Codd's definition of a surrogate key, it cannot be exposed to
the user. See the problem?
From: Tony Rogerson on


"--CELKO--" <jcelko212(a)earthlink.net> wrote in message
news:931cef1e-fb72-4ed1-a2ef-aedbc92087a9(a)d8g2000yqf.googlegroups.com...
>>> CURRENT_TIMESTAMP - a measurement of ticks on the current machine's
>>> internal
> clock, it has no baring on the atomic time measured centrally.
> Executing
> CURRENT_TIMESTAMP on several machines at exactly the same point in
> time may
> yield different results if those machines are not time sync'd. <<
>
> You confuse the measurement with the instrument. Time is an attribute
> in the physical universe. Yes, an instrument can be mis-calibrated;
> but I doubt that anyone will think it is anything but a problem. It
> has validation (ISO-8601) and verification rules (i.e. synch with the
> NIST clock signals).
>

And you confuse the internal system generator for the surrogate key with
some wild notion it needs to be verifiable in the outside world.

Even the ISO standard defines precisely what has been implemented by the
IDENTITY property, granted the syntax isn't correct however the formulaic
requirement is fulfilled.

>>> The surrogate key according to both Codd and Date is a property of the
> entity, it may not be in the user model, but certainly in the physical
> model
> and further into the implementation. <<
>
>>> I think you ought to read the latest ratified ISO SQL Standard - 2008;
>>> .. IDENTITY .. <<
>
> I have and I think that SQL has some non-relational "features' in it.
> There are non-table data structures, etc.
>

SQL entirely bastardises the relational model, its a poor implementation; if
you want a true relational database language you need to look at tutorial D
for instance, one implementation is Rel.

>>> I will concede that the IDENTITY is a "PROPERTY" rather than a FUNCTION
>>> in
> that case, its a PROPERTY that more than not conforms to the
> requirements of
> the ISO 2008 standard (the current ratified one). <<
>
> Agreed.
>
>>> By using a thermometer you'd get values already used which isn't allowed
>>> by
> definition for a surrogate key which is why the IDENTITY "PROPERTY"
> ticks
> all the boxes for Codd and Date's research on surrogate keys. And
> because of
> Codd's information principle it MUST be exposed to the user. <<
>
> And by Codd's definition of a surrogate key, it cannot be exposed to
> the user. See the problem?

Wrong.

What do you understand by Codd's "Information Principle"?

Do you consider more researched on Codd's work that Date?

--ROGGIE--