Seldom wrong and right again, Shawn! Yes, I forgot to cover the reflexive
case. I don't have a magic bullet for that scenario; you'd just have to
check that with application code.

But on re-reading his original post, it occurred to me that I had misread it
completely. I just sent a note outlining my new thinking to the list; maybe
we can help this guy solve his problem without having to write a lot of
application code ;-)

Rhino

----- Original Message ----- 
From: <[EMAIL PROTECTED]>
To: "Scott Fletcher" <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>
Sent: Wednesday, October 20, 2004 4:59 PM
Subject: RE: How to make 1 primary key work for 2 columns????


> But rhino, your constraints don't cover the case of :
>
> Primary       Secondary
> -----------   ----------------
> [EMAIL PROTECTED]     [EMAIL PROTECTED]
> [EMAIL PROTECTED]     [EMAIL PROTECTED]
>
> This passes all of your constraints (the primary key and both unique keys)
> but I think it fails his business rule (I'm still not prefectly clear on
> what he wanted, though). However, I believe that this is where normalizing
> his data (like his example shows) goes a long way to solving his
> validation problems.
>
> Shawn Green
> Database Administrator
> Unimin Corporation - Spruce Pine
>
>
> "Scott Fletcher" <[EMAIL PROTECTED]> wrote on 10/20/2004 04:37:11 PM:
>
> > Aw Man!  I forgot about the null value...  Since there will be some null
> > values, so I can't use the primary key.  So, I now know it is not
> > possible.  Thanks for reminding me that.  So, seem that the workaround
> > for me is to retrieve all of the emails from the primary contact and
> > secondary contact into PHP variables then encrypt it then put it into
> > the hidden HTML input.  I'll have to create the JavaScript validation to
> > encrypt the entered email address (primary and secondary) and match it
> > against the hidden HTML input.  If matched then prompt the user to enter
> > a different email address, if not matched then it's okay to enter it
> > into the database.  It's the only way...
> >
> > Thanks,
> >  Scott
> >
> > -----Original Message-----
> > From: Rhino [mailto:[EMAIL PROTECTED]
> > Sent: Wednesday, October 20, 2004 3:30 PM
> > To: Scott Fletcher
> > Subject: Re: How to make 1 primary key work for 2 columns????
> >
> >
> > ----- Original Message ----- 
> > From: "Scott Fletcher" <[EMAIL PROTECTED]>
> > To: <[EMAIL PROTECTED]>
> > Sent: Wednesday, October 20, 2004 3:54 PM
> > Subject: How to make 1 primary key work for 2 columns????
> >
> >
> > Hi!  I'm trying to figure out how to make this possible...  What I have
> > here is a company address, along with both the primary contact and
> > secondary contact.  In them is one email address from the primary
> > contact and one other email address from the secondary contact.  Problem
> > is setting an unique primary key that treated the 2 columns as one
> > column with unique email address.
> >
> >
> >
> > Let's this example below
> >
> >
> >
> >    --snip-
> >
> >    |  First_Email  |  Second_Email  |
> >
> >    ------------------------------------------------
> >
> >    | [EMAIL PROTECTED]  | [EMAIL PROTECTED]      |
> >
> >    -----------------------------------------------
> >
> >    | [EMAIL PROTECTED]  | [EMAIL PROTECTED]      |
> >
> >    -----------------------------------------------
> >
> > --snip-
> >
> >
> >
> > be like this below where there is no two same email address....
> >
> >
> >
> >    --snip-
> >
> >     ---------------------------------------
> >
> >     | [EMAIL PROTECTED]                   |
> >
> >     ---------------------------------------
> >
> >     | [EMAIL PROTECTED]                   |
> >
> >     ---------------------------------------
> >
> >     | [EMAIL PROTECTED]                   |
> >
> >     ---------------------------------------
> >
> >     | [EMAIL PROTECTED]                   |
> >
> >     ---------------------------------------
> >
> >    --snip-
> >
> >
> >
> > This will work:
> >
> > create table mytab
> > (from_email char(100) not null,
> >  to_email char(100) not null,
> >  [other columns],
> > primary key(from_email, to_email));
> >
> > There's no reason the primary key can't contain several columns as long
> > as
> > each is defined NOT NULL. (No column of a primary key may ever contain a
> > null.)
> >
> > The primary key, then, is the COMBINATION of values in all of the
> > columns
> > that make up the primary key. Therefore, the following would be allowed:
> >
> > from_email     to_email
> > [EMAIL PROTECTED]    [EMAIL PROTECTED]
> > [EMAIL PROTECTED]    [EMAIL PROTECTED]
> >
> > If you need to ensure that the 'from_email' value is also unique within
> > the
> > table, you can add a 'unique' constraint to the definition of the
> > from_email
> > value. Ditto for the 'to_email' column. Therefore, the following
> > definition
> > ensures that the combination of 'from_email' and 'to_email' is always
> > unique
> > AND it ensures that no single value appears twice in 'from_email' AND it
> > ensures that no single value appears twice in 'to_email'.
> >
> > create table mytab
> > (from_email char(100) not null unique,
> >  to_email char(100) not null unique,
> >  [other columns],
> > primary key(from_email, to_email));
> >
> > Rhino
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > -- 
> > MySQL General Mailing List
> > For list archives: http://lists.mysql.com/mysql
> > To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]
> >
>


-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to