Question : Using les FK « primaires »

Désolé au sujet du titre moins-que-descriptif.  J'ai une difficulté mettre l'issue dans words.

Let que nous disent que j'ai des CLIENTS d'une table qui a juste 2 colonnes : L'identification et le NAME

And j'ai des autres ADRESSES de table qui a l'information d'adresse standard (rue, ville, état, fermeture éclair, etc.) et les FK aux CLIENTS (pour cet exemple, je l'appellerai CUSTOMER_FK).  N'importe quel client peut avoir addresses.

I a voulu assigner une rangée des ADRESSES pour être adresse la « primaire » de facturation/défaut pour un client.  Un client devrait seulement avoir un affichage/défaut/pensée initiale primaire d'address.

My devait ajouter une colonne aux CLIENTS appelés le BILLING_ADDRESS qui était les FK à la rangée dans les ADRESSES qui ont servi de facturation/de défaut/d'adresse primaire.  Ceci semble légèrement superflu, bien que, et rend d'une manière primordiale l'insertion un peu moins qu'élégante.  À la création d'un nouveau client d'entrée d'utilisateur, par exemple, je devrais créer les CLIENTS rame d'abord, l'encavateur au lequel l'identification, puis créent les ADRESSES rament (passant aux CLIENTS L'identification juste produite à CUSTOMER_FK), puis retournent et mettent à jour la rangée de CLIENTS avec l'identification de l'ADRESSE de création récente pour servir des FK à la facturation/au défaut/à pensée primaire d'address.

Another était, au lieu de ce qui précède, ajoutent une colonne aux ADRESSES était dont un indicateur booléen si la rangée était la facturation/défaut/adresse primaire pour ce client, mais AFAIK là n'est aucune manière de s'assurer que ceci est limité à une adresse simple pour aucun customer.

I AM devinant ceci n'est celui rare, et il y a probablement une solution intégrée que je ne me rends pas compte de.  Sinon, y a-t-il une solution plus franche que n'importe qui pourrait suggérer ?

TYIA

Using MySQL 5 (et PHP 5.3, si cela importe).
class= de

Réponse : Using les FK « primaires »

Je pense…

ajouter le champ ADDRESSTYPE à la table d'ADRESSES (ce champ sera employé pour dénoter le type d'adresse -- affichage/défaut/primaire -- vous pouvez employer 1/2/3 pour le short)

courir alors cette commande :

CHANGER LES ADRESSES DE TABLE AJOUTENT UNIQUE (CUSTOMER_FK, ADDRESSTYPE) ;

soutenir tout premier !

Cela devrait faire la COMBINAISON du client/du type d'adresse uniques…
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us