Re: IS it a good practice to use SERIAL as Primary Key?

From: Ron Johnson <ron(dot)l(dot)johnson(at)cox(dot)net>
To: pgsql-general(at)postgresql(dot)org
Subject: Re: IS it a good practice to use SERIAL as Primary Key?
Date: 2006-11-23 22:48:53
Message-ID: 45662555.3080700@cox.net
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 11/23/06 12:38, Sander Steffann wrote:
> Hi,
>
>>> Sure, but the check digit does not need to be stored, as it can be
>>> regenerated on demand. The user interface just verifies the check
>>> digit, then throws it away.
>>
>> $ SET GEEZER
>> $ WRITE SYS$OUTPUT "THAT'S JUST EXTRA CYCLES WASTED BY THE"
>> $ WRITE SYS$OUTPUT "CLIENT. BETTER TO USE THEM FOR SOME OTHER"
>> $ WRITE SYS$OUTPUT "MORE PRODUCTIVE PURPOSE."
>> $ SET NOGEEZER
>>
>> That's the VAX/VMS in me oozing out. But seriously, regenerate it
>> on demand??? That's not how it works. This isn't a CRC or hash
>> function.
>
> Well, a check digit _is_ a kind of CRC. It is redundant information. For
> every number there is only one correct check digit, which means that the
> check digit does not add extra information to the number. So why store it?

Because it's *part of* the id number. The way we implement it, it's
the one's digit.

c = f(n)
n' = n*10 + c

n' is what is stored in id column of the relevant table.

This way, if "you" {mistype an id number, it gets garbled in
transmission, etc}, it can be algorithmically determined whether or
not that is a valid number or not, and only if it is a valid number
do you hit the database.

Bottom line: check digits are in SSNs and credit card numbers, for a
good reason.

> You will need to add the check digit on most (all?) output that is
> interpreted by humans. The software itself can just use the number
> itself (assuming you don't need to check the integrity of the software).
>
> If you store the number in the database, I would suggest making the db
> check the number on all input too. Otherwise you might end up with
> invalid data in the database.

- --
Ron Johnson, Jr.
Jefferson LA USA

Is "common sense" really valid?
For example, it is "common sense" to white-power racists that
whites are superior to blacks, and that those with brown skins
are mud people.
However, that "common sense" is obviously wrong.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (GNU/Linux)

iD8DBQFFZiVUS9HxQb37XmcRAhogAKCPp6s995Lm84tUG9TunRvvaFbD8gCcDsv5
18fDxZwV6PrPskRym7hPzHs=
=ON0M
-----END PGP SIGNATURE-----

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bill Moran 2006-11-24 00:24:54 Re: Postgres scalability and performance on windows
Previous Message Thomas H. 2006-11-23 22:40:55 Re: Postgres scalability and performance on windows