(現在 過去ログ50 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■7610 / inTopicNo.1)  マスタの運用(管理)に関して
  
□投稿者/ くおんたむ -(2013/08/25(Sun) 20:47:04)
    本来なら、ここの掲示板で書くものではない内容だと
    思いますが、ご容赦ください。

    皆さんは、マスタのコードをどのようにしているので
    しょうか?

    ここでいう、マスタは何でも構いません。例えば、商
    品マスタとか、取引先マスタとか等色々とあると思い
    ますが、なんでも構いません。

    過去に色々と、話題になっているかと思いますが、主キー
    について、今少し悩んでおります。

    仮に「SEQ(カウンタ)」、「CD」、「名前」とあります。
    本来、主キーなら「SEQ」にすべきだと思いますが、大きな
    壁になっているのが、削除であります。
    削除には、2種類あると思いますが、「論理削除」「物理
    削除」だったと思います。
    その使い分けについて悩んでいる状態です。
    「論理削除」・・・削除はせず、使えないようにする(フラグを立てる)
    「物理削除」・・・削除するので、データの整合性が狂う場合もあり。

    間違っていたら、スミマセン。

    現在組んでいるシステムの中に累計というファイルを
    用意してあるのですが、中身は、過去のデータを累積
    しているというものです。

    現行のデータであれば、問題は少ないと考えているのですが、
    上記の累計ファイルには、科目コードと対応するSEQを入れて
    あるのですが、あまり、いい方法ではないような気がしているの
    です。

    多分、正規化をきちんとやっていないのだろうと思いますが、
    そのケースも含めての考え方を教えて頂きたいのです。

    内容がよくわからないかなと思いますが、ようにするマスタの
    管理方法をどのようにするべきか知りたいのです。
    特に、削除に関するものです。

    もし分けありませんが、宜しくおねがいします。
引用返信 [メール受信/OFF] 削除キー/
■7612 / inTopicNo.2)  Re[1]: マスタの運用(管理)に関して
□投稿者/ ONnoji -(2013/08/26(Mon) 15:24:08)
    No7610に返信(くおんたむさんの記事)
    > 現在組んでいるシステムの中に累計というファイルを
    > 用意してあるのですが、中身は、過去のデータを累積
    > しているというものです。
    >
    > 現行のデータであれば、問題は少ないと考えているのですが、
    > 上記の累計ファイルには、科目コードと対応するSEQを入れて
    > あるのですが、あまり、いい方法ではないような気がしているの
    > です。
    >
    > 多分、正規化をきちんとやっていないのだろうと思いますが、
    > そのケースも含めての考え方を教えて頂きたいのです。


    老婆心ながら。(^^ゞ

    ■削除する/削除しない

    データは現実に対応したものという性質があります。

    これは、従来の手書きの帳簿でも、機械化によるコンピュータのデータでも同じです。

    そしてマスタでも非マスタでも同じです。

    なぜ削除するのか考えてみると、誤ってデータを登録した場合が考えられます。

    不要なデータを登録したのであれば、削除するのは普通だと思いますよ。

    ※こういうミスオペは少ないと思いますが、人はミスを犯すものです(マシンもですが…)。

    ■経年変化

    データは現実に対応したものという性質がありますから、

    時間が経つと、対応する現実の方に変化が生じることがあります。

    例えば、取引先マスタに登録されていた取引先が廃業するかもしれません。

    この場合、取引先マスタの該当レコードを削除してしまうのは良くないです。

    なぜならば、取引先はかつて存在していたので、

    取引履歴データには、この取引先のデータが存在するはずです。

    というわけで、安易にマスタのレコードは削除できない次第です。

    なお、冗長ですが、取引履歴データに取引先名が保存されていた方が良い場合もあります。

    頻繁に商号変更する取引先の場合には、その方が判りやすくなります。

    ■正規化

    ちなみに、参照整合性機能なんて、データベースソフトウェアベンダーの独善でしかないことがあります。

    正規化は必要ですが、ほどほどにしておくのが良いと思いますよ。


    <蛇足>

    マスタの内容を書き換える場合には、書き換える前の該当レコードを書き出しておくと、

    変更の履歴が判るので便利ですよ。


引用返信 [メール受信/OFF] 削除キー/
■7613 / inTopicNo.3)  Re[2]: マスタの運用(管理)に関して
□投稿者/ くおんたむ -(2013/08/26(Mon) 23:32:52)
    どうも、ONnojiさん

    成程、参考になりました。
    私は、開発者でもなくエンジニアでもないので、
    参考書レベルしか見なかったので、成程なぁと思いました。

    削除のケースですが、色々あるみたいで、過去から遡って
    見る為に、ワザといらないマスタを残しているということも
    聞いたことがあります。
    実際に職場で運用しているシステムでは、残っています。
    なので、同じマスタが2つあってどちらが正しいのか混乱
    した経験があります。
    その時に、聞いたのが上記です。
    削除すると、一から探す必要があって、手間を省きたいので、
    更新マスタを作って、そこから表引きみたいにしているとの
    ことでした。


    仮に、下記のマスタがあったとします。
    [SEQ]カウンタ
    [CD]文字列(例:000とか001とか)
    [NAME]文字列

    主キーは本来なのかは、分かりませんが[SEQ]に設定すべき
    なのでしょうか?
    私は、[CD]を多用するので、[CD]に設定するのが筋ではない
    だろうかと思っておりますが?

    入力用テーブルに
    [CD]
    [NAME]
    [OKANE]
    としているので、どうしても[CD]を頼らざるを得ないのです。

    今は、苦肉の策として[SEQ]に主キーを設定して
    入力用テーブルに
    [CD]
    [CDSEQ]
    のような感じで、運用しているのです。

    データベースは運用するものによって一長一短があると思い
    ますので、上記の場合として考えてください。

    宜しくお願いします。
引用返信 [メール受信/OFF] 削除キー/
■7614 / inTopicNo.4)  Re[3]: マスタの運用(管理)に関して
□投稿者/ ONnoji -(2013/08/27(Tue) 10:47:52)
    2013/08/27(Tue) 10:51:54 編集(投稿者)

    > 仮に、下記のマスタがあったとします。
    > [SEQ]カウンタ
    > [CD]文字列(例:000とか001とか)
    > [NAME]文字列
    >
    > 主キーは本来なのかは、分かりませんが[SEQ]に設定すべき
    > なのでしょうか?
    > 私は、[CD]を多用するので、[CD]に設定するのが筋ではない
    > だろうかと思っておりますが?

    ■主キー

    [主キー]はユニークなデータならばOK。

    ユニークとは唯一無二、つまり重複しないということ。

    だから、重複しなければなんでもOKサというわけ。

    だからデータ型もなんでもOKでしょ。

    カウンタ型ということは、0 〜 4294967295(ヘルプ参照)の範囲の整数ですね。

    ■コード

    コードというは符丁・符号のことです。

    時々、コードは数字で構成されると思い込んでいる人がいますが、

    数字以外に、アルファベットやひらがなを含んでいてもOKです。

    例えば、自動車のナンバーなどは数字だけで表記していないでしょう。

    また、コードは計算(四則演算)の対象ではないので、数値型である必要はありません。

    コードは符丁・符号のことなので、文字列型が自然でしょう。

    ■有意コードと無意コード

    特定のけたに意味を持つものを「有意コード」といい、持たないものを「無意コード」といいます。

    詳しくは、“有意コード”でググルといろいろあります。

    ・うぃっとWorks: 有意コードと無意コード

    ・データベースエンジニアへの道(4):システムの寿命はコードで決まる! (1/3) - @IT

    ・未来に向けて考えよう! マスター管理の基本

    ・ERPの落とし穴part4〜コード設計の難しさ: プログラマの思索

    ・まだ顧客コードは必要なの?:泉谷 章のITソリューション考察:ITmedia オルタナティブ・ブログ

     :
     :

    ※私自身は、有意コードでも無意コードでもどちらでも構わないと考えています。


引用返信 [メール受信/OFF] 削除キー/
■7615 / inTopicNo.5)  Re[3]: マスタの運用(管理)に関して
□投稿者/ 尾形 -(2013/08/27(Tue) 12:36:37)
    どうも、こんにちは

    コードは、主キー[SEQ]を探すための物
    商品名の一部と考えるといいのでは


    > 今は、苦肉の策として[SEQ]に主キーを設定して
    > 入力用テーブルに
    > [CD]
    > [CDSEQ]
    > のような感じで、運用しているのです。
    これでいいのではないでしょうか
    [品名]も入力明細にあると思うので

引用返信 [メール受信/OFF] 削除キー/
■7616 / inTopicNo.6)  Re[3]: マスタの運用(管理)に関して
□投稿者/ 通りすがり -(2013/08/27(Tue) 13:41:03)
    マスタの[SEQ]と[CD]どちらかは不要

    *名簿マスタ.tbl
    [名簿ID]:主キー
    [NAME]
     ([名簿ID]は、カウンタでも文字列でも良い、文字列の方が格好良い)

    *入力テーブル.tbl
    [入力ID]:主キー
    [名簿CD]:外部キー(名簿マスタ.名簿ID とリンク)
    [OKANE]
     (キチンと参照整合性を設定する事!)
引用返信 [メール受信/OFF] 削除キー/
■7637 / inTopicNo.7)  Re[1]: マスタの運用(管理)に関して
□投稿者/ くおんたむ -(2013/09/06(Fri) 22:38:41)
    どうも、みなさん

    連名レスで失礼します m(_ _)m

    ONnojiさん、尾形さん、通りすがりさん
    色々とありがとうございます。

    色々と現在勉強中です。

    新たに質問が発生しました。

    このケースはどう対応しているのでしょうか?
    2つのキーを持つもの

    例)[CODE1]と[CODE2]の場合。

      アクセスだと、複数の主キーを設定できますが、
      桐は出来ませんよね?
      この場合は、どうとらえたらいいのでしょうか?


     一つのコードとして設定して、その中から
     [CODE1]と[CODE2]に計算式(#Sstr文)を使用するべき
     でしょうか?
引用返信 [メール受信/OFF] 削除キー/
■7639 / inTopicNo.8)  Re[2]: マスタの運用(管理)に関して
□投稿者/ 通りすがり -(2013/09/08(Sun) 12:47:28)
    > アクセスだと、複数の主キーを設定できますが、
    > 桐は出来ませんよね?
    アクセスでも桐でもマスタには複合キー使えない、参照整合性制約を設定できない→マスタとしては使えない
    
    [CODE1]、[CODE2]はどちらもユニークじゃないってこと??
    
    お勧め順
    1.[CODE1]、[CODE2]を使ってる業態を見直して全部構築し直す
    2.サロゲートキーを作る、整数の[ID]ね
    3.http://www.kthree.co.jp/kiri/kiri_sis/index.html
    4.データベースの基本を勉強する
    5.マスターでの運用せずに 表引き表 で運用
    
    苦労せずに幸せに慣れそうな順は、上記の逆

引用返信 [メール受信/OFF] 削除キー/
■7743 / inTopicNo.9)  Re[1]: マスタの運用(管理)に関して
□投稿者/ くおんたむ -(2013/11/24(Sun) 22:34:57)
    どうも、ONnojiさん、尾形さん、通りすがりさん

    連名で失礼します。

    マスタに関しては、色々とあることが分かりました。
    まだ、勉強中ですが、少しずつ改良してい行きたいと
    思っています。

    当面は、2つのコードを持つことにしました。
    [SEQ]と[CD]で、入力は[CD]で行い、メインとなる、
    テーブルには、[SEQ]を取得して入れるという形に
    落ち着きました。
    ただ、問題として残っているのが、過去のデータと
    現在のデータの統合性かなぁと思っております。
    そちらの方では、また頑張っていきたいと思います。

    取りあえずは、これで、解決済にしたいと思います。

    ありがとうございました。 m(_ _)m
解決済み!
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -