0

私はPHPMySQLに比較的慣れていないので、「実践的な」アプローチで学習することに専念しています。幸いなことに、私は現在、(非常に)大規模なデータベースを持っており、すべて1つのテーブルで処理するコインデータに関連しています。現在、次の列があります(各行は単一のアイテム[コイン]を表します)。

Group
ItemNo
ListNo
TypeCode
DenomCode
PeriodCode
ActualDate
SortDate
CostPrice
SalePrice
Estimate
StockLevel
DateEntered
DateSold
Archived
ArchiveWhenSold
Highlight
KeepSold
OnLists
NotForSale
Proof
StockItem
OnWeb
Cats
Ref1
Ref2
Variety
Picture
Description
TypeName
TypeHeading
DenomName
DenomHeading
DenomValue
PeriodName
PeriodHeading
PeriodStartYear
PeriodEndYear

新しいテーブルのグループ化は比較的明白です。

限目:

PeriodCode
PeriodName
PeriodHeading
PeriodStartYear
PeriodEndYear

デノム:

DenomCode
DenomName
DenomHeading
DenomValue

タイプ:

TypeCode
TypeName
TypeHeading

残りはすべて、コインテーブルの下にあります。

Group
ItemNo
ListNo
TypeCode
ActualDate
SortDate
CostPrice
SalePrice
Estimate
StockLevel
DateEntered
DateSold
Archived
ArchiveWhenSold
Highlight
KeepSold
OnLists
NotForSale
Proof
StockItem
OnWeb
Cats
Ref1
Ref2
Variety
Picture
Description

だから私はテーブルを指定されたテーブルに正規化しようとしています。私はJOINを見ていることを知っていますが、それを実行するための最良の方法を考えています。最初に各データグループ(Denom、Period、Type)で新しいテーブルを作成し、次にJOINステートメントを使用してデータを挿入しますか?または、JOINステートメントを使用して「オンザフライ」で新しいテーブルを作成する方法はありますか。私はここで素晴らしい本を開いており、MySQLのセクションをうまくフォローしていて、このサイトも調べていますが、これを行うための「正しい」方法を理解できていません。

ここで知識のあるアドバイスを求める理由は、「関係」やキーなどを維持する方法が少しわからないためです。つまり、「Denom」というテーブルを作成して、すべての現在のテーブルデータと一意の主キーを作成します。次に、この新しい主キーへの参照をDenomテーブルからメインCoinテーブル(新しいアイテムDenomIDの下)に挿入して、それらが一致するようにするにはどうすればよいですか?

基本的に、このテーブルを4つの別々のテーブルに分割する必要があります。Access 2007のテーブルアナライザウィザードを使用してこれを試しましたが、私のようなn00bには有望に見えましたが、データが多すぎて実際にクラッシュしました。繰り返し。おそらく最善の策ですが、今はいくつかのベストプラクティスと、それを実践する方法を知る必要があります。アドバイス/ヘルプ/関連リンクをいただければ幸いです。

4

1 に答える 1

0

最初にテーブルを作成します。テーブルを結合できるように、メイン テーブルの主キーを含むすべての子テーブルに外部キー フィールドを追加することを忘れないでください (また、新しいテーブルごとに主キーを取得する必要があります)。主キーがない場合は、他の操作を行う前に作成する必要があります。

データをテーブルに入れるのは簡単な挿入です

insert tableb (field1, field2)
select field1, field2 from tablea

データベースを取り出すために参加するので、新しいテーブル、特に外部キー フィールドにインデックスを作成することを忘れないでください。

于 2009-11-24T15:53:10.737 に答える