1

私の Web アプリケーションには、顧客名と顧客の電話番号があります。同じ電話番号を複数回許可する必要があります。ただし、同じ顧客名を複数回入力することはできません。携帯電話番号が「6039274849」の「Sean Patrick」という名前の顧客が既にいる場合。今後、同じ名前 ('Sean Patrick') の新しいユーザーを許可しないようにする必要があります。ただし、同じ携帯電話番号 ('6039274849') の入力を許可できます。

テーブル構造を次のように仮定します。

CUSTOMER TABLE

columns
CUSTOMER_ID UNIQUE
CUSTOMER NAME
CUST_MOB_NUMBER

私はSpring ROOを使用しています。データベース関連はHibernateJPA(aspectJコード)を使用します。

誰でもこれを行う方法を教えてください。今のところ、私は2つの列をユニークにすることを考えています。2 つの列を一緒に一意にする方法はありますか?

4

1 に答える 1

4

要件が理にかなっていると仮定すると(2人の顧客が同じ名前を持つことはないと言っても意味がありません。世界中にジョン・スミスがたくさんいます)。そして、人々はしばしば複数の携帯電話番号を持っています。

customer_idとを一意として宣言することができますcustomer_name(ただし、customer_idほぼ確実に、単に一意ではなく、主キーとして宣言する必要があります)

CREATE TABLE customer (
  customer_id      NUMBER PRIMARY KEY,
  customer_name    VARCHAR2(100) UNIQUE,
  cust_mob_number  VARCHAR2(20)
);

また、2つの列の組み合わせを一意として宣言します

CREATE TABLE customer (
  customer_id      NUMBER PRIMARY KEY,
  customer_name    VARCHAR2(100),
  cust_mob_number  VARCHAR2(20),
  CONSTRAINT uk_name_and_number UNIQUE( customer_name, customer_mob_number )
);
于 2012-07-10T04:38:03.870 に答える