-1

私が持っていると言う

ID | PRODUCT
 1 |  Apples
 1 | Oranges
 1 | Bananas
 2 | Walnuts
 2 | Almonds
 3 | Steak
 3 | Chicken

MySQL でこのタイプの設定を行うことは可能ですか? テスト テーブルを作成し、プライマリ インデックスと自動インクリメントを使用して ID 列を作成しました。すべて同じ ID を持ついくつかの行を挿入しようとすると、mysql がエラーを返します。

これはmysqlで可能ですか?

4

3 に答える 3

1

主キーとして設定したときに、重複したレコード ( ID )はどうなりましたか? 基本的にはしません。主キーは. レコードをそのようにしたい場合は、主キーとして機能する別の列を作成しますINSERTEDIDUNIQUE

CREATE TABLE sampleTable
(
    ID INT NOT NULL AUTO_INCREMENT, 
    GROUP_ID INT NOT NULL, 
    PRODUCT VARCHAR(25),
    CONSTRAINT pk_name PRIMARY KEY (ID),
    CONSTRAINT uq_name UNIQUE (GROUP_ID, PRODUCT)
)

UNIQUE行の重複を避けるために、制約が追加されました。

于 2012-09-05T01:36:08.970 に答える
0

それは可能ですが、繰り返しの主キーがあるため正規化されません。主キーは一意である必要があります。つまり、1発生できるのは 1 回だけです。IDそれぞれにカスタムの がある場合productは、複合主キー(id, product)または代理キーのいずれかを使用します。代理キーは、行を一意に識別する自動インクリメント列です。テーブルは次のようになります。

CREATE TABLE fruits (
  auto_id int AUTO_INCREMENT PRIMARY KEY,
  id int,
  product varchar(15))
于 2012-09-05T01:37:28.993 に答える
0

ID 列の主キーを作成しないでください。これは一意であることを意味します。例として通常のインデックスを使用してください。

一方、ほとんどの場合、主キーを持つことは理にかなっているので、通常の INDEX で 3 行目 (GENRE?) を追加し、主キーはそのままにしておくことをお勧めします。

データを挿入するときは、GENRE と PRODUCT を挿入するだけで、ID が自動的に入力されます。

于 2012-09-05T01:38:03.327 に答える