cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Kevin Menard <nirvd...@gmail.com>
Subject Re: How to create Meaningful Primary Keys? JUST SAY NO TO MEANINGFUL POINTERS!
Date Tue, 03 Feb 2009 16:27:54 GMT
Yes.  The problem is between best practice and best theory.  I'd still
normalize based on functional dependencies, but add in the surrogate
key and then just add a unique index on the functional key.

-- 
Kevin



On Mon, Feb 2, 2009 at 5:09 PM, Malcolm Edgar <malcolm.edgar@gmail.com> wrote:
> 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 <mrmattkerr@gmail.com> wrote:
>
>> > Do poeple agree w/ me here?
>>
>> yes.
>>
>>
>> On Mon, Feb 2, 2009 at 9:15 AM, Eric Lazarus <ericllazarus@yahoo.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.lavignotte@gmail.com>
>> wrote:
>> >
>> > From: Pierre Lavignotte <pierre.lavignotte@gmail.com>
>> > Subject: Re: How to create Meaningful Primary Keys?
>> > To: user@cayenne.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.baroni@gmail.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 Νίκος Παράσχου <niparasc@gmail.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, Νίκος Παράσχου
>> > <niparasc@gmail.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
>> >> > > >
>> >> > > >
>> >> >
>> >> >
>> >>
>> >
>> >
>> >
>> >
>>
>

Mime
View raw message