Re: How to create Meaningful Primary Keys? JUST SAY NO TO MEANINGFUL POINTERS!

From: Malcolm Edgar (malcolm.edga..mail.com)
Date: Mon Feb 02 2009 - 17:09:42 EST

  • Next message: Kevin Menard: "Re: How to create Meaningful Primary Keys? JUST SAY NO TO MEANINGFUL POINTERS!"

    I think what we are talking about are surrogate primary keys.

    http://en.wikipedia.org/wiki/Surrogate_key

    Which is generally accepted as a best practice (well mostly, depending on
    the DBA).

    regards Malcolm Edgar

    On Tue, Feb 3, 2009 at 1:48 AM, Matt Kerr <mrmattker..mail.com> wrote:

    > > Do poeple agree w/ me here?
    >
    > yes.
    >
    >
    > On Mon, Feb 2, 2009 at 9:15 AM, Eric Lazarus <ericllazaru..ahoo.com>
    > wrote:
    > > I can't let this point(er) go buy: JUST SAY NO TO MEANINGFUL POINTERS!
    > >
    > > There are BIG problems with having meaningful primary keys in general in
    > terms of keeping your program growing and useful long term. When you can
    > avoid it, avoid it... and when YOU are designing the underlying database
    > from scratch, I think you can almost always avoid it. Putting meaning in the
    > pointers is often the reason that a system needs to be re-written or pitched
    > and replaced.
    > >
    > > A client of mine had to replace an existing application because they had
    > used four budget product codes as part of a pointer field and could no
    > longer represent the number of products in four digits. Cost huge $ to
    > upgrade to SAP...
    > >
    > > Here is another example, a bad choose made by apple early on, putting
    > data into what amounts to a pointer:
    > >
    > > http://en.wikipedia.org/wiki/Mac_OS_memory_management
    > >
    > > So, now it seems that the name and DOB of each person is not going to
    > change. Later it turns out that they do change under some situations and now
    > you have to write big hacks to deal with it.
    > >
    > > Just say no to meaning in pointers! Keep pointers STUPID! Meaningless bit
    > squences make great pointers in OO programs. That's my view.
    > >
    > > Of course rules are made to be broken and, when the DB exists already and
    > is used by a big pile of existing code, you likely have no choice but in
    > other situations, try to avoid meaningfulness in pointers.
    > >
    > > Do poeple agree w/ me here?
    > >
    > > Eric
    > > +1 (917) 589-6579
    > >
    > > --- On Mon, 2/2/09, Pierre Lavignotte <pierre.lavignott..mail.com>
    > wrote:
    > >
    > > From: Pierre Lavignotte <pierre.lavignott..mail.com>
    > > Subject: Re: How to create Meaningful Primary Keys?
    > > To: use..ayenne.apache.org
    > > Date: Monday, February 2, 2009, 8:28 AM
    > >
    > > I don't think his question is about sequence usage but about selecting
    > rows
    > > with specific PK values...
    > >
    > > Cordialement,
    > > Pierre Lavignotte
    > > Ingénieur Conception & Développement
    > > http://pierre.lavignotte.googlepages.com
    > >
    > >
    > > On Mon, Feb 2, 2009 at 2:25 PM, Alessio Giovanni Baroni <
    > > alessiogiovanni.baron..mail.com> wrote:
    > >
    > >> It's all ok. But, you are sure that in Entity screen, you are selected
    > >> "Custom Sequence" on the "PK Generation Strategy"?
    > >> If you do it, AND you add a filed relative to a pk column, you can
    > > handling
    > >> the keys, without the cayenne's control.
    > >>
    > >> Hi.
    > >>
    > >>
    > >> 2009/2/2 Νίκος Παράσχου <niparas..mail.com>
    > >>
    > >> > First of all thank you for your replies.
    > >> >
    > >> > I have the following table:
    > >> >
    > >> > Vehicle (
    > >> > plate_num CHAR(10) NOT NULL,
    > >> > mixed_weight DOUBLE PRECISION NOT NULL,
    > >> > type CHAR(30) NOT NULL,
    > >> > manufacturer CHAR(20),
    > >> > PRIMARY KEY (plate_num)
    > >> > )
    > >> >
    > >> > In Cayenne Modeller I have the dbEntity "vehicle" with all
    > > the above
    > >> > attributes (plate_num is check as PK). There is also the objEntity
    > >> > "Vehicle" with all the above attributes except the PK
    > > (plate_num).
    > >> >
    > >> > I want to select the type of the vehicle with plate_num =
    > > "AHZ-4141".
    > >> >
    > >> > Could you please post some code samples? I have tried so many things
    > >> > (with DataObjectUtils too) but still no success.
    > >> >
    > >> > Thank you,
    > >> > Nikos
    > >> >
    > >> > Στις 02-02-2009, ημέρα Δευ, και ώρα 12:49 +0100,
    > > ο/η Pierre Lavignotte
    > >> > έγραψε:
    > >> > > Hi Nikos,
    > >> > >
    > >> > > If you need PK for all your tables, then maybe you need to
    > > generate
    > >> them.
    > >> > > But if you only need to use them for a couple tables then you
    > > should
    > >> look
    > >> > at
    > >> > > DataObjectUtils class.
    > >> > >
    > >> > >
    > >> > > Cheers,
    > >> > > Pierre
    > >> > >
    > >> > > Cordialement,
    > >> > > Pierre Lavignotte
    > >> > > Ingénieur Conception & Développement
    > >> > > http://pierre.lavignotte.googlepages.com
    > >> > >
    > >> > >
    > >> > > On Mon, Feb 2, 2009 at 12:35 PM, Νίκος Παράσχου
    > > <niparas..mail.com>
    > >> > wrote:
    > >> > >
    > >> > > > Hello,
    > >> > > >
    > >> > > > It is the first time I am using cayenne and I have some
    > > questions
    > >> > > > regarding the primary keys.
    > >> > > >
    > >> > > > What I want to do is select some rows of a table where the
    > > PK has a
    > >> > > > specific value. The problem is I can't access the PK. I
    > > can specify
    > >> > > > qualifiers only with the non-PK columns. The PKs I am using
    > > have some
    > >> > > > meaning (they are not just numbers) so it is very important
    > > to be
    > >> able
    > >> > > > to use them.
    > >> > > >
    > >> > > > How can I add the PK to the fields of the Object Entities?
    > >> > > >
    > >> > > > In this page
    > >> > http://cayenne.apache.org/doc20/primary-key-generation.html
    > >> > > > the answer is to create a Meaningful Primary Key.
    > >> > > >
    > >> > > > How can I create Meaningful Primary Keys?
    > >> > > >
    > >> > > > Are there any security issues when using Meaningful Primary
    > > Keys?
    > >> > > >
    > >> > > > Thank you for your time,
    > >> > > > Nikos
    > >> > > >
    > >> > > >
    > >> >
    > >> >
    > >>
    > >
    > >
    > >
    > >
    >



    This archive was generated by hypermail 2.0.0 : Mon Feb 02 2009 - 17:10:19 EST