1

私は、アメリカのすべての州と郡の情報を1か所にまとめた大きなテーブルを持っています。

テーブル構造は

    fullCode   countyName   stateName   stateCode
1   01001        nowhere      AL          01
2   01003        somewhere    AL          01
3   02100        other        AK          02

状態コードは、常にfullCode列の最初の2つの数字で識別されます。これらは各州に固有であるため、先行する2つの番号のセットが複数ある州はありません。countyCodeの最後の3つの数字。

以下のクエリを使用して、すべての状態を含むテーブルを作成しました

select distinct stateName, statecode
into tblStates
from tblCounties

(可能であれば)一挙に各州の郡のテーブルを作成する方法に興味があります。何かのようなもの

select distinct  fullCode, countyName
into tblAlabamaCounties
from tblCounties
where stateName='AL'

しかし、すべての州のために。そしてもちろん、私はすべてのPK/FKの問題に対処する必要があります。このようなことをするために採用されるかもしれない方法をただ疑問に思います。

編集:これが設計エラーである場合、特定の州にある郡の名前を他にどのように関連付けることができますか?すべてを1つの大きなテーブルに残すこともできますが、それはデザインが悪いように思えます。

4

2 に答える 2

2

これがあなたが考えるかもしれないより良いデザインでしょう:

状態テーブル:

STATE_ID
STATE_ABBREV
STATE_NAME

郡の表:

COUNTY_ID
STATE_ID
COUNTY_NAME

サンプルデータ:

STATE_ID   STATE_ABBREV   STATE_NAME
01         AL             Alabama
02         AK             Alaska

COUNTY_ID  STATE_ID       COUNTY_NAME
001        01             Nowhere
003        01             Somewhere
100        02             Other

状態テーブルの主キーはSTATE_IDになります
。郡テーブルの主キーはCOUNTY_ID---AND ---- STATE_ID(COMBINED)になります。

この構造では、2つのテーブルしかなく、元の「大きな」テーブルと「完全なコード」フィールドを簡単に再現できます。さらに、この(はるかに単純な/より通常の)構造に基づいて、更新、クエリ、プロシージャ、関数などの作成が将来的にはるかに簡単になります。

FWIW

于 2012-06-12T19:48:53.050 に答える
1

Oracleを使用する場合は、最初にすべての異なる表を作成し、次に最近作成した新しい表にデータを入力するだけでよいPL-SQLプロシージャを作成できます。PL SQLプロシージャを使用する場合は、それを実行できます。

一方、さまざまなテーブルを作成し、挿入する前にトリガーを作成することができます。また、マスターテーブルに挿入する前に、特定のテーブルにデータを挿入します。

私の英語で申し訳ありませんが、あなたがすべてを理解し、あなたを助けることができることを願っています。

于 2012-06-12T19:53:45.717 に答える