Re: Enforce primary key on every table during dev?

marcelo <marcelo.nicolet@gmail.com>

From: marcelo <marcelo.nicolet@gmail.com>
To: pgsql-general@lists.postgresql.org
Date: 2018-03-02T14:47:39Z
Lists: pgsql-general

On 02/03/2018 01:10 , Daevor The Devoted wrote:
>
>
> On Fri, Mar 2, 2018 at 12:05 AM, Gavin Flower 
> <GavinFlower@archidevsys.co.nz <mailto:GavinFlower@archidevsys.co.nz>> 
> wrote:
>
>     On 02/03/18 06:47, Daevor The Devoted wrote:
>
>
>         On Thu, Mar 1, 2018 at 2:07 PM, Rakesh Kumar
>         <rakeshkumar464@aol.com <mailto:rakeshkumar464@aol.com>
>         <mailto:rakeshkumar464@aol.com
>         <mailto:rakeshkumar464@aol.com>>> wrote:
>
>
>             >Adding a surrogate key to such a table just adds overhead,
>             although that could be useful
>             >in case specific rows need updating or deleting without also
>             modifying the other rows with
>             >that same data - normally, only insertions and selections
>         happen
>             on such tables though,
>             >and updates or deletes are absolutely forbidden - corrections
>             happen by inserting rows with
>             >an opposite transaction.
>
>             I routinely add surrogate keys like serial col to a table
>         already
>             having a nice candidate keys
>             to make it easy to join tables.  SQL starts looking
>         ungainly when
>             you have a 3 col primary
>             key and need to join it with child tables.
>
>
>         I was always of the opinion that a mandatory surrogate key (as
>         you describe) is good practice.
>         Sure there may be a unique key according to business logic
>         (which may be consist of those "ungainly" multiple columns),
>         but guess what, business logic changes, and then you're
>         screwed! So using a primary key whose sole purpose is to be a
>         primary key makes perfect sense to me.
>
>
>     I once worked in a data base that had primary keys of at least 4
>     columns, all character fields, Primary Key could easily exceed 45
>     characters.  Parent child structure was at least 4 deep.
>
>     A child table only needs to know its parent, so there is no
>     logical need to include its parent and higher tables primary keys,
>     and then have to add a field to make the composite primary key
>     unique!  So if every table has int (or long) primary keys, then a
>     child only need a single field to reference its parent.
>
>     Some apparently safe Natural Keys might change unexpectedly.  A
>     few years aback there was a long thread on Natural versus
>     Surrogate keys - plenty of examples were using Natural Keys can
>     give grief when they had to be changed!  I think it best to
>     isolate a database from external changes as much as is practicable.
>
>     Surrogate keys also simply coding, be it in SQL or Java, or
>     whatever language is flavour of the month.  Also it makes setting
>     up testdata and debugging easier.
>
>     I almost invariably define a Surrogate key when I design tables.
>
>
>     Cheers,
>     Gavin
>
>
> Thank you! I think you have expressed far more clearly what I have 
> been trying to say. +10 to you.
Me too. Another +10.


---
El software de antivirus Avast ha analizado este correo electrónico en busca de virus.
https://www.avast.com/antivirus