0

製品のすべての詳細を含む製品テーブルを SQL の個別のテーブルに変換しようとしています。重複した記述子の詳細を除いて、すべて完了しました。

すべての製品に、他の多くの製品に含まれるサイズ/色/スタイル/その他の問題があります。私は、すべてのアイテムに対して 1 つのサイズまたは色の記述子のみを持ち、すべての製品の「ID」を再利用したいと考えています。これは、外部キーである製品 ID の親キーであると考えられます。唯一の問題は、すべての記述子に複数の外部キーが割り当てられることです。そのため、私はその場で考えていました。各記述子の外部親キーの計算をスキップし、その記述子が存在するかどうか、および記述子にそのキーを使用しているかどうかを確認するだけです。

データ表

PI  Colo   Sz   OTHER


1        |   Blue  |  5  |    Vintage

2        |   Blue  |  6   |   Vintage

3        |   Blac  | 5   |   Simple

4        |   Blac |  6   |   Simple

===================================

その行き先表はこちら

===================================

DI Description

1       |   Blue

2       |   Blac

3       |   5

4       |   6

6       |   Vintage

7       |  Simple 

=============================

Data.Table を選択

Unique.Data.Table.Colo

Unique.Data.Table.Sz

Unique.Data.Table.Other

=======================================

次に、すべての記述子を作成した後の質問の 2 つの部分は、新しいクエリを実行して製品 ID を記述子に割り当てる方法です。

PI| ディ

1 | 1

1 | 3

1 | 4

2 | 1

2 | 3

2 | 4

これを行う方法を理解することで、製品内の 300 以上の列すべてに対してこのパターンを複製できるはずです。これらのフィールドの一部は 60 文字以上あるため、スペースを大幅に節約できます。

配列を使用しますか?

4

2 に答える 2

0

わかりました。正しく理解していればdetailstable、IDと説明フィールドを持つ単一のテーブル()の列から行にすべての一意の属性を変換する必要があります。

スキーマを想定すると:

datatable
------------------
PI [PK]
Colo
Sz
OTHER

detailstable
------------------
DI [PK]
Description

まず、次のコマンドを使用して、すべての一意の属性を独自のテーブルに入れることができます。

INSERT INTO detailstable (Description)
SELECT 
    a.description
FROM
    (
        SELECT DISTINCT Colo AS description
        FROM datatable

        UNION

        SELECT DISTINCT Sz AS description
        FROM datatable

        UNION

        SELECT DISTINCT OTHER AS description
        FROM datatable
    ) a

次に、にリンクするためdatatableに、detailstable次のように定義された相互参照テーブルがあると仮定します。

datadetails
------------------
PI [PK]
DI [PK]

その後、次のことができます。

INSERT INTO datadetails (PI, DI)
SELECT
    a.PI
    b.DI
FROM
    datatable a
INNER JOIN
    detailstable b ON b.Description IN (a.Colo, a.Sz, a.OTHER)
于 2012-06-18T03:25:01.127 に答える
0

colorDescription、sizeDescriptionなど、さまざまなカテゴリの説明テーブルを分割したいと思います。

それが実用的でない場合は、カテゴリ属性を示す追加の列を用意することをお勧めします。

DI Description  Category

1 | Blue       | Color

2 | Blac       | Color

3 | 5          | Size

4 | 6          | Size

6 | Vintage    | Other

7 | Simple     | Other

そして、このテーブルの主キーを ID とカテゴリ列の組み合わせとして持ちます。

これにより、データ エラーが挿入される可能性が低くなります。それを追跡するのも簡単です。

于 2012-06-18T03:12:01.303 に答える