MSDE FunClub
Microsoft Data Engine FunClub
MSDE技術者向けメーリングリスト過去ログ[185]番
 
[TOP]>[MSDE技術者向けメーリングリスト過去ログ(185番)]>[ウィンドを閉じる]
 
SQLServer2005時代でも
開発の基本は T-SQL
上巻で T-SQL の基礎作り
 
SQLServer2005時代でも
運用の基本はバックアップ
下巻でバックアップ手法を学びましょう
PASSJ人気コンテンツで学んだ後は下巻でさらなる学習を!
 
ウィンドを閉じる
MSDE/SQLServer FAQ
MSDE / MSDE2000 
技術情報サポート
初心者向け
メーリングリスト
過去ログの表示
技術者向け
メーリングリスト
過去ログの表示
メーリングリスト
活動状況の
表示
MSDE TOP メニュー
MSDEトップメニューに移動します
 

 
テーブル設計のアドバイス( Re: StoredProc での値取得・判定 2)

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 技術サポート情報一覧]

MSDE TOP ページに移動する

 
 
 
 
 
 
 
MSDE FunClubに関するご意見・ご要望等ございましたら、
msdefun@horikawa.ne.jp までご連絡下さい。
MSDEを始めとする各種データベースシステムの開発、コンサルタントに関するご要望等は、
msdedev@horikawa.ne.jp までご連絡下さい。