• 締切済み

DBが複雑すぎる

airhead-no1の回答

回答No.9

なんか、質問内容と回答に対する補足を見ていると... 設計側の物を、使用者側に、そのまま見せてる感じ? たとえば 「設計側」 コードマスター(ID,名称) 1,'北海道' ..... 20,'東京' ..... 47,'沖縄' 社員出身マスタ(社員コード,社員名,出身コード,方言) 1,'あ',1,1 1,'い',2,2 となっているとすると 「使用者側」 社員名を入力 or 選択(同姓同名がいる場合があるため、社員コード入力等が望ましい) 出身を選択(北海道, 東京, 沖縄 等から選択) 方言を選択(北海道, 東京, 沖縄 等から選択) 多くのシステムでは、こうなっています。 ですので、使用者側がコード入力する箇所は、社員コードぐらいですね。 ただし、昔から(汎用機)のシステムを使っていて、ずっと同じように使いたいという 会社もあります。 そのような場合、コード入力の方が、選択 or 漢字入力よりも慣れているため あえて、コード入力を使用者側がするということもあります。

関連するQ&A

  • データベースのフラグについて

    会社でよく見ることがあるDBのデータの格納形式ですが、ファイルサイズを節約しようとするのか、画像通りコードで格納されています。 大したことをしてませんが、ぱっとみ分かりづらいですし、しょうもないことでSEの人に結合してもらわないと誰も分かりません。 でさらに「鈴木朝食4」「山田夕食唐揚定食」みたいなイレギュラーなケースがあると、マスタ不備、コードブック再構築などの業務が発生して社内がごちゃごちゃです。 でさらにさらに簡単な入力画面になると、メインテーブル・サブテーブル・内部コード・マスタメンテなど莫大な業務が発生します。 よその会社でもこんなデータの持ち方をしますか?もっと効率的な方法はありませんか? ほんとにバイトでもできる、大したことしてませんので、くだらないことで毎日苦労するのはほんとに不愉快です。お願いします。

  • 異なるデータベース間のテーブル結合

    DB名:db1 TABLE名:得意先マスタ DB名:db2 TABLE名:ユーザマスタ 以上のように、異なるデータベースに存在する2つのテーブルをLEFT JOINさせたいです。 結合条件は ユーザマスタ.得意先コード = 得意先マスタ.得意先コード とします。 この場合の結合方法を教えてください。 以下のようなSQL文を書いても駄目でした。 SELECT * FROM db1.ADMINISTRATOR.得意先マスタ AS  得意先マスタ   LEFT OUTER JOIN db2.ADMINISTRATOR.ユーザマスタ AS ユーザマスタ ON ユーザマスタ.得意先コード = 得意先マスタ.得意先コード よろしくお願いいたします。

  • 複雑すぎる給与計算

    給与計算担当ですが、ここ何年かで 細々とした手当が増えて、チェック処理が複雑になり、 現場、総務1人目、総務2人目と 3重のチェック体制でやっていますが それでも毎回かなりのチェック漏れが出てしまっています。 現場の人に配慮した結果ですが、 困ったものです。 どうにかならないものでしょうか。 給与大臣を使い、アクセスで外付けした システムを使っています。 システム云々の前にタイムカードからの入力ミス 等人的ミスが多いです。 チェックのマニュアルもちゃんとしたものはなく、 何年も前の通達を遡ってみないと計算できなかったり するものもあります。 チェックして、ミスをみつけて、 見つけた方がミスしたものを責めて、 気まずい感じで、 こんなことばかりに労力を割いていて もっと他に改善すべきところがあったり するんじゃないのかなぁと思ったりします。

  • テーブルの結合の仕方 MSAccess97→MSSQLServer2000Dev

    初心者なので初歩的な質問かもしれませんがどうぞよろしくお願いします。 現在MSAccess97(Win2K)のDBをVB6sp4(Win2K)で操作しておりますが、 MSAccess97のDBをMSSQLServer2000に移行しようと考えておりましてクエリー(VBで作成したクライアント内のSQL文)での記述のしかたについて質問したいのですが、下記のように○売上明細テーブルと○商品マスタが存在していて いままで(Access)は SELECT 売上明細.*,商品マスタ.* FROM 売上明細 LEFT JOIN 商品マスタ ON 売上明細.商品コード = 商品マスタ.商品コード; で結合して追加・削除・更新などしておりました。 商品マスタの内容は変更・削除しないで売上明細のほうは削除できました。 移行(MSSQLServer)しようとSQL文を書き直し SELECT 売上明細.*,商品マスタ.* FROM 売上明細 LEFT OUTER JOIN 商品マスタ ON 売上明細.商品コード = 商品マスタ.商品コード; として(SQLServerのDBを)削除すると商品マスタのほうまで削除されてしまいます。SQLServerのViewで直接削除してみても同じでした。 +-----+-------+--+----+-------+ |商品コード| 商品名   |単価| 数量 |  金 額  | +-----+-------+--+----+-------+ |00001 |        |50 |  20 |  1,000 |          ↑                              ここに設定する項目が売上明細にないので         商品マスタから参照したい(参照のみで更新・削除はしない)   SQLServerで商品マスタを変更・削除せずに商品明細のレコードを削除できる結合方法はないでしょうか?どなたかよろしくお願いいたします。

  • レコードの一致方法

    テーブルA(マスター) [コード]、[商品名]        ○○○、△△△ テーブルB [コード]、[商品名]       ○○○、△△△ テーブルC [コード]、[商品名]       ×××、△△△ 以上のように、3つのテーブルの不一致クエリーなどを 抽出する場合、テーブルAとB同士の場合は、一致しないのはコードを結合線で結べば、すぐに出てきますが、テーブルAとCの比較の場合は、コードを結合線で結んだところで、違うのでうまくできません。 商品名は△△△なので、コードが違っていても、商品名はあっているので、不一致ではなく、一致しているというように考えたいのです。 △△△についてのコードは×××、○○○というように2つ以上持っているような感じですれば、うまくいくとおもっているのですが、こういう場合はテーブルAにコードのフィールドを2つ作っておいて、結合線でつなぐときに切り替えてするしかないのでしょうか? テーブルA(マスター)で、このような、2つのコードを持っているとおもわれる商品はレコード100以上あって、それをそれぞれ選びながら入力していかないかとおもうと、大変な作業化とおもっているのですが、アドバイスあればお願いします。

  • レコード更新について

    レコード更新について 環境:ACCESS2000 状況:メインフォーム(マスター登録ボタン付)    サブフォーム(マスターテーブルをドラッグして貼り付けたもの)    マスターテーブル(品番 / レンタル日 / 返却日 / 貸出状況) やりたい事:サブフォームに表示してあるデータに       返却日をサブフォーム上で入力し(件数は不定)、そして       返却日が入力されたものの貸出状況を"返却済"と変更登録したい。 現状:コマンドボタンのイベントに Private Sub マスター登録ボタン_Click() Dim db As DAO.Database Dim rs As DAO.Recordset Set db = CurrentDb Set rs = db.OpenRecordset("マスターテーブル", dbOpenDynaset) If rs!返却日 <> "" Then rs.Edit rs!貸出状況 = "返却済" rs.Update End If rs.Close Set rs = Nothing db.Close Set db = Nothing End Sub しかし、上記コードでは返却日はマスターテーブルに反映しているのですが 貸出状況が変わってなく、どのようにしたら良いかわからないため ご質問させて頂きました。 まだまだACCESS勉強中で未熟なため、検討違いなコードになっているかもしれませんが コードの修正・改善、または全く違う方法等ご教授願えればと思います。        

  • アクセス2010の操作について

    こんばんは! アクセス2010を勉強しておりますが、さまざまの本を読んでもインターネットで検索しても、なかなか基本を理解できず又周囲にも質問できる人がいなく困っております。 以下の内容について数点の質問をさせて頂きますのでご指導をお願いいたします。 作成内容。 社員の成果を入力できるフォームを作成したく、保存したいデータは社員名、社員コード、成果です。社員名は、コンボボックスから選択を行いたい。(できれば社員名を表示すると、自動的に社員コードも表示したいのですが)以下の方法で作成したのですが、うまくできません(質問項目は下段です) ~作成の流れ~ 〇テーブルを作成・・・以下の2つのテーブルを作成し社員データを予め入力。 ・社員マスタ・・・・・・(フィールドは2つ)  「社員名」(テキスト型)  「社員コード」(テキスト型) ※主キー ・入力テーブル・・・・(フィールドは3つ)  「ID」(オートナンバー型)  「社員コード」(テキスト型)  「成果」(テキスト型) ※主キー 〇「社員マスタ」「入力テーブル」の2つのテーブルからクエリを作成。  ・社員コード同士を結合線で結ぶ(自動的に結ばれます)    (フィールド)  ID            社員名     社員コード   成果  (テーブル)   入力テーブル   社員マスタ  社員マスタ   入力テーブル 〇作成したクエリを基にフォームを作成  社員名をコンボボックスから選択できるように変更(値集合ソース→社員マスタ)  社員名をコンボボックスから選択し、社員コードを入力。成果を入力しようとすると。  入力できません。 (質問です)  (1)成果を入力するためにキーボードを押すと、文字が出ずにエラーメッセージ「レコードを追加でき ません。テーブル"入力テーブル"の結合キーがレコードセットにありません」と表示されますがなぜ でしょうか?  (2)、(1)でエラーメッセージが出ても保存を押すと、新規入力画面のコンボボックスに先ほどの入力 内容が追加されてしまうがなぜでしょうか?  (3)クエリとリレーションシップの使い分けの判断は?(今回はクエリから結合線で結びましたが、リレ ーションシップでも似たような事ができます)  (4)入力テーブルのフィールドは上記の3つでよろしいのでしょうか?  (5)このようなものを作成する時の手順を教えて頂けると非常に助かります。 よろしくお願いいたします。  

  • Access2002 マスタテーブル変更時の影響範囲の調べ方

    いつもお世話になっています。 2つのAccessデータベースを統合しようとしています。 両方に テーブル:「会社マスタ」 フィールド: ・会社コード ・会社名称 というテーブルがあり、ほぼ同じ内容なのですが、若干コードが異なる運用をしていたため、どちらかに統一すると、弊害が出ることが予測されます。 そこでお聞きしたいのですが、マスタテーブルの名称を変更する(実際は、どちらか一方に合わせるため、他方を削除する)場合、影響範囲を簡単に調査する方法はないでしょうか? (削除するほうのますたテーブルを参照しているフォームやクエリを洗い出したいのです) 別の人間が作ったDBですので、なかなか解析が難しく・・・。 どうぞよろしくお願いします。

  • ページ遷移せずにjava部品を実行したい。

    strutsのフレームワークを使い、プログラムを作り始めていますが。 strutsのページ遷移しなんとかデータのやり取りは出来るようになりました。 今回、画面から商品グループを入力し、その後、商品コードリストを プルダウンするとDBの商品マスタにアクセスしにいき、 入力された商品グループに対応する商品コードがプルダウンされるようにしたいと思っています。 こういうようにページ遷移しないでjavaの部品を起動する場合、 普通にJSPの<%= %>等を利用して、書くものなのでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Access 意図しないパラメータ入力

    クエリを作成中なのですが、意図しないパラメータ入力ボックスが表示されます。 テーブルでは店マスタを一側 それ以外の項目が多側になっています。 エクセル用に横並びにするため多側を抽出条件で各項目ごとにクエリを作成しました。 これを一まとめのクエリにしようとしましたが項目が10以上あり クエリが複雑すぎる、ということで二つに分けようとしたのですが 二つ目のクエリでなぜかパラメータ入力が表示されます。 抽出条件は指定していません。 なぜこのようなことになるのでしょうか? 店マスタはテーブルのものを使用。 ゴルフ、球技ボール・・・は多テーブルから各条件を指定し抽出したクエリ。 SELECT ■店マスタ.店コード, ゴルフ.*, 球技ボール.*, 釣.*, 登山・アウトドア.*, 海・水中.*, 武道.*, その他.*, 合計.* FROM (((((((■店マスタ INNER JOIN ゴルフ ON ■店マスタ.店コード = ゴルフ.店コード) INNER JOIN 球技ボール ON ■店マスタ.店コード = 球技ボール.店コード) INNER JOIN 釣 ON ■店マスタ.店コード = 釣.店コード) INNER JOIN 登山・アウトドア ON ■店マスタ.店コード = 登山・アウトドア.店コード) INNER JOIN 海・水中 ON ■店マスタ.店コード = 海・水中.店コード) INNER JOIN 武道 ON ■店マスタ.店コード = 武道.店コード) INNER JOIN その他 ON ■店マスタ.店コード = その他.店コード) INNER JOIN 合計 ON ■店マスタ.店コード = 合計.店コード;