【より良い】データモデリング【モデルを】 (537レス)
上下前次1-新
101(1): 04/01/25 23:31 ID:HFlIdygC(1) AAS
渡辺幸三ってひとの本がすごいっておもうんですがどう?
102(1): 04/01/27 11:18 ID:??? AAS
ウルトラマンとガンダムどっちが強いかって喧嘩してる子供と同じだな
銀の弾など無いんだし、お前がそれで納得のいく仕事ができればそれでいいじゃないか…
103: 04/01/27 23:50 ID:??? AAS
>>102
探しているのは銀の弾ではなくガンド・ロア クラスの兵器かと。
104(2): 04/01/31 03:52 ID:??? AAS
DBDesigner使ってる人少ないのか?オープンソースの良ツール
なんだが。
http://fabforce.net/dbdesigner4/
メニューとか英語なのは痛いが、一応日本語も(難あり)使えるし、
モデリングには結構いいツールなんで、使ってみてくれ。
Delphi使える人とか、日本語化してくれると尚良いなぁ。
105: 04/01/31 04:51 ID:??? AAS
日本語使いたきゃ別のツール使うんじゃない?
SIとかさ。
106(1): 04/02/12 22:56 ID:??? AAS
シンプルな商品マスタはこんなのでしょう
〔商品M〕 商品C 販売単価 仕入単価
~~~~~~
ABC \300 \200
カラー・サイズがないならこれで充分でしょう。
ところがこれで販売管理を作って運用すると
大変な事がわかります。商品数が5000件もある
ならまず間違いなく運用出来ません。
−−−−−−−−−−−−−
省2
107: 04/02/13 00:00 ID:??? AAS
まずは、なぜ徹夜作業が必要なのか考えてみ。
108(4): 04/02/13 17:07 ID:??? AAS
>>106
長年の疑問だが、商品マスタの単価の扱いは、どうするのがベストなのだろう。
COBOLの時代なら、同一レコードに単価項目を2つ(新旧)持ち、適用年月日
で判断するというのが一般的だったけど。
厳密に正規化すれば、単価は、商品マスタとは別に、
商品単価マスタ{商品コード、適用年月日、単価}を作ることになるけど、
この場合、適用年月日の判断が入るため、SQL一発で単価を取得できない。
そこで、ストアド・ファンクション使ったりするのだけど、内部的には結局カーソル
処理を行うことになる。
一方、旧来のCOBOL的なレイアウトだと、OracleならDecode関数で、一発取得
省3
109(1): 04/02/13 22:16 ID:??? AAS
>この場合、適用年月日の判断が入るため、SQL一発で単価を取得できない。
なんで?
110(1): 04/02/13 22:48 ID:Y1CFmVqe(1) AAS
>>108
>厳密に正規化すれば、単価は、商品マスタとは別に、
>商品単価マスタ{商品コード、適用年月日、単価}を作ることになるけど、
「単価」を繰返し項目ととらえないなら、正規化違反じゃないよ
エンティティをリソースとイベントに分ける考え方からいうと、
全項目に日付を入れるとイベントに近くなってしまう
ホストだと、過去データの洗い換えするためにそういう実装
することがあるけど、バッチ処理をなくす方向で考えた方が、
パソコン(鯖)向きだと思う
111(2): 108 04/02/14 00:32 ID:??? AAS
>>109
え、できるの?
できるなら、ぜひそのSQLを教えて欲しい。
>>110
>「単価」を繰返し項目ととらえないなら、正規化違反じゃないよ
漏れもそう考えてたんだけど、最近、佐藤正美氏の本を読んで(まだ理解が浅いけど)、
むしろ、商品単価エンティティはeventと考えるべきなのかなという気がしている。
「eventの定義は、「DATE」が帰属するentityである、とする。」だそうだ。
読み違いの可能性も強いが・・・・。
別にT字型ER手法をマンセーするつもりはないけど、佐藤氏の本は色々考えさせられる。
112(5): 04/02/14 09:17 ID:CE18kft9(1) AAS
>111
:問い合わせ年月日 時点の単価を求めたい場合
select A.商品名, B.単価
from 商品マスタ A
join 商品単価マスタ B on ( B.商品コード = A.商品コード )
where A.商品コード = :問い合わせ商品コード
and B.適用年月日 <= :問い合わせ年月日
and not exists (
select * from 商品単価マスタ
where 商品コード = A.商品コード
省3
113: 108 04/02/14 16:02 ID:po36sjDo(1/2) AAS
>>112
Thanks!!!
確かに、やってみると出来る!
でも、理屈が理解できん(泣
Exists、Not Existsを勉強し直そう。
114: 108 04/02/14 16:51 ID:po36sjDo(2/2) AAS
直積表を書いてみて、やっと理解できた。
きっと、知ってる人にとっては当たり前の手法なんだろうけど、凄いなあ。
こういう方法があるとは。
Not Exists内のSQLは、主キーのみ参照なので、アクセスも軽い。
重ね重ねThanks>>112
115(1): 04/02/15 00:59 ID:EVaACx4p(1) AAS
>>111
>「eventの定義は、「DATE」が帰属するentityである、とする。」だそうだ。
本では、従業員マスタの例があったと思うけどイベントだととらえる
のは「入社イベント」であってマスタじゃない
佐藤さんの言うDATEを文字通りとらえると、全部のエンティティが
イベントになるよ。更新日付くらい全部に持つからね
「適用日付」でなく「登録日」が重要な意味をもつならイベントだろう
けど、やはりこれはリソースととらえるべきだとおもわれ
ただ、T字形でどうなるかはわからない。乞詳しい方
116: 04/02/15 22:14 ID:??? AAS
>>115
更新日に関する記事
http://www.sdi-net.co.jp/sdi_169.htm
http://www.sdi-net.co.jp/FAQ193.htm
単価に関する記事
http://www.sdi-net.co.jp/FAQ245.htm
単価変更に関する記述はなかった。
117(2): 04/02/15 22:58 ID:fM+BL24T(1) AAS
>>112
スレ違いで申し訳ないです。
こっちのほうがシンプルでよさそうな気がするけど、、、ダメ?
select A.商品名, B.単価
from 商品マスタ A
join 商品単価マスタ B on ( B.商品コード = A.商品コード )
where A.商品コード = :問い合わせ商品コード
and B.適用年月日 <= :問い合わせ年月日
order by B.適用年月日 desc;
レコード数の抑制は
省1
118: 04/02/16 00:35 ID:??? AAS
>>101
どのへんが?
>>104
MySQL用じゃないのか?
>>117
1票
119: 04/02/17 00:22 ID:??? AAS
>>117
> >>112
> こっちのほうがシンプルでよさそうな気がするけど、、、ダメ?
結果は同じだけど、order byを使うと普通コストが高い
10万件程度のデータを作ってテストすればわかる
(はず・・実装によって違うから)
120: 04/02/21 02:48 ID:yCOAnZGt(1) AAS
TH法ってのを聞いたのですが、
メリット・デメリットとかご存知ですか?
マイナ〜な手法なんでしょうか
上下前次1-新書関写板覧索設栞歴
あと 417 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 1.256s*