- 締切済み
一対一のテーブル分割(ACCESS2003)
ACCESS2003にて、フィールド数が上限の255、レコード数がおよそ1万件の商品マスタテーブルを作ったとします。入力必須フィールドは主キーである商品ID、あと商品名ぐらいで、あとは商品によって入力したりしなかったりするフィールドで、テーブルを開くと空欄が非常に多く目立ついわゆるスカスカの状態になっているとします。そこで商品マスタテーブルを数個に分割(商品の価格情報、商品の品質情報等々)し、商品IDを主キーにもたせ一対一の外部結合でつなげて、密度の濃い(?)テーブルを複数作ったほうが、ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか?(一対一の結合はあまり使用しないのが一般的なようですが、このような場合使用すべきでしょうか?)教えて頂きたくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- umazanpai
- ベストアンサー率38% (53/137)
>ファイルサイズの縮小やクエリ等のパフォーマンス向上にメリットがあるのでしょうか? フィールド数255や容量2G弱を超えてないのに分割する必要もメリットのありません。異常なフィールド数はきになります。
- imogasi
- ベストアンサー率27% (4737/17069)
情報の主体は何ですか。それも質問にかかず質問しても判りにくい。 主体とは、人(職員、得意先)、もの(商品)、金(勘定)、抽象物(日付、現象(例温度)、情報などです。 ーー それらが同じであっても、内容、担当部署、習慣・伝統・詳しさ (まとめ)などで普通は分かれる(分ける)と思うが。 それが分かれてない。 しかし質問が抽象的なので、この指摘が外れているかもしれないが。 そこに1テーブルに出来るだけ押し込むべきという圧力を感じる必要はない。データベースでの、データの重複記録とは別の問題と思う。 ーー (1)さて255を超えるフィールドは、何らかの基準で、普通は分類できる(される)のではないですか。 原書のある場合、同じ原書でデータが入手されると言った理由でも (作業能率上)原書でテーブルを分けてもよいのでは それらが整理されておらず、別テーブルになっていないのでは。 (2)スカスカの解消は、例えば、データのない日があるのに、フィールドに毎日を設定してデータを記録しているとかなら、表構成を変えれば 2009/5/1 234(計数) 2009/5/10 1234(計数) ・・ とできるが。 2009/5/1 2009/5/2 ・・・2009/5/10 234・・・・・・・・・・・1234 としてしまうようなことはありえる。 データの有るときだけレコードが現れる記録方式を考えられないか。後は必要の都度レポートの様式を工夫して解決する。 (3)多面的な情報は(例交渉記録など分類の難しいものは) コード化して((2)の考えとも似ている)取り合あえず同じフィールドに入れて置くとか。 使うとき(活用資料作成時)に分類とかをしわ寄せする。
- okdeath
- ベストアンサー率28% (13/46)
こんにちわ。 同じような内容を繰り返し入力するのなら、ファイルを分割することにより、作業効率を上げる意味があると思います。 しかし、内容からすると、現状特に問題があったり、困っているわけではないようなので、そのままでいいんじゃないですか? 基本的には分割すると、内容が分かりやすくなったり、修正が楽なメリットがあるってことだと思います。(基本を知らない俺がいうのであてにはなりませんが・・) 参考まで。
- darter
- ベストアンサー率48% (12/25)
具体的にどんな構造なのかはわかりませんが、フィールド数が255までいってしまうのはデータモデリングと正規化が不十分なのではないかと感じます。 テーブルの接続にはコストがかかるので、実行速度を考えると すべての項目をベタに並べることにもある程度意味がありますが、 ファイルサイズと開発効率(修正効率)を考えると、 きちんと構造化したほうがいいと思います。 ただ専門家ではないので、私はこう思う、ぐらいの参考意見としてください。