Date: Tue, 1 Aug 2000 15:11:05 +0900
From: Akira Horikawa <who@example.ne.jp>
堀川です、こんにちは
本題とは関係ありませんが、なんだか複雑なテーブルなので
一言アドバイス
>CREATE TABLE [dbo].[部品使用TBL] (
> [登録ID] [char] (3) NOT NULL ,
> [利用者ID] [char] (8) NULL ,
> [部品1] [int] NULL ,
> [部品2] [int] NULL ,
> [部品3] [int] NULL ,
> [部品4] [int] NULL ,
> [部品5] [int] NULL
>) ON [PRIMARY]
サーバー側データベースのテーブル設計であれば、もう少し考慮して欲しい
と思います
たぶん昔のテーブル設計を、そのままサーバーに持ち込んでいるのでしょうね
時間に余裕があれば、直したほうがよいでしょう
たしかVBマガジンの『テーブル設計添削教室』でも書いた記憶がある
のですが、リレーショナルデータベースのテーブルでは、列は固定的な
ものです。
テーブルを設計するときに決めた列構成を後から増やすことは、一般的
には大変なことになります。
それに対して、行(レコード)は可変です。何行でも記憶することが
できます。
この特性を覚えておきましょう。
さて上のテーブルでは、部品管理を列方向で行っていますね
これでは将来部品管理の点数が増えた場合には、このテーブル構造
を変更し、新しい部品の列を追加し、関連するストアドプロシージャや
ビューなどの変更が大変になります
テーブルを設計するときに、部品管理の点数は5点で良いのか、将来
増える可能性はないのかを検討すべきだと思います
いろいろ方法はありますが、例えば
( [登録ID] , [利用者ID] , [部品] )の3列で、連結主キーとする
方法が、簡単でしょう
こうすれば部品の個数管理は、可変となります
また、([登録ID] , [利用者ID] , [部品] )の組み合わせですぐに検索
することができますね
これを、部品1,2,3,4,5のように列方向で管理したために、部品番号検索を
行うときに全ての部品列を調査しなければいけません
何か特別な理由で、部品1,2,3,4,5,***,のように、列で管理しているのかな?
−−−−−−−−−−−−−−−−−−−−−−−−
堀川 明(mailto:who@example.ne.jp)
#ただ今、出先です
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|