dポイントプレゼントキャンペーン実施中!

こんなデータベースを作成しています。

データとしては、社員番号、氏名、端末番号の3種類で、1つ目の
テーブルには社員番号(キー)と氏名、もうひとつのテーブルには
端末番号(キー)と社員番号があり、社員番号間でリレーション
シップを作成しています。なぜひとつのテーブルにしないかと
いいますと、以下の希望があるからです。

 ・社員番号は重複不可
 ・端末番号も重複不可
 ・ただし、端末番号は、使用していない番号もある。
  (つまり、最後に端末番号順のレポートとして出力する際に、使用
   していない端末番号があっても、それは使用者「なし」として
   出力したいということです。)

ということで、2つ目のテーブルには、端末番号のみのレコードが
多数あります。この状態で、クエリにて社員番号、氏名、端末番号の
ものをつくり、ある社員の端末番号を変更しようとすると、エラーが
出てしまうのです。おそらく、空きの番号は2つ目のテーブルにて
社員番号「なし」で登録されているので、それと重複という扱いに
なっているのだと思います。私の考えだと、そこで自動的に端末番号の
テーブルの方も書き換えが起こると考えていたのですが・・・

アドバイスをお願いします。
この文ではよくわからない点もあるとは思いますので、補足もしたいと
思っています。

A 回答 (5件)

表題と質問内容があっていませんね



表題を無視して回答します
ご質問の内容から推理すると
社員の端末使用状況を管理したいとうことのようですね

この場合社員と端末とは多対多の関係にあると思われますから
テーブルが2つでは不足です

テーブルは以下の3つになります
[社員マスタ](社員番号、氏名、・・・)
[端末マスタ](端末番号、端末名、・・・)
[使用状況](社員番号、端末番号)

多対多についてはヘルプで研究してください

この回答への補足

ありがとうございます。
悪戦苦闘しております。

テストとして、教えていただいた通りにテーブルを作って、リレーション
シップを設定してみました。で、クエリを作ってみたのですが、社員
コード順のもの(社員コード、氏名、端末名、・・・)はできたのですが、
全端末番号の一覧(端末番号、社員コード、氏名、・・・)を作ろうと
すると、エラーが出てしまいます。(あいまいな外部結合が含まれて
いるので・・・)というものです。

実は、表題の内容はここに絡んできていまして、空いている番号も
一覧として出したいのです。ただ、リレーションシップを設定する際に
「端末マスタ」の全レコードと「使用状況」の対応するレコードとの
結合にすると、上記のエラーが出てしまいます。お互いの一致する
レコードのみ結合とするとエラーは出ませんが、使用していない端末は
表示されなくなってしまいます。

状況が伝わりましたでしょうか??

補足日時:2006/10/16 16:32
    • good
    • 0

>クエリのデザイン画面で設定する関連付けと、リレーションシップの


>画面で設定する関連付けは異なる種類のものということですか??
そうです
Accessは初心者用のDB。SQLを覚えなくてもデータベースができる
というあたりが売りで、本来ならSQLで記述しなければならない
クエリがクエリデザインビューで(全てのクエリには対応していませんが)
テーブルの定義がテーブルデザインビューで出来るようになっています
テーブルの方はデザインビューだけでは定義できないテーブルの関係
をリレーションシップウィンドウでの定義で補っています

ややこしいのはここからで
初心者に優しいDBの続きなんでしょうが

クエリでのテーブル結合の際に(本来は関係ない)
リレーションシップで定義した結合を結合候補として表示したりする
サービスをしてくれるところです
(このサービスのおかげで両者を同じと誤解する初心者が出てくるのでしょうね)
    • good
    • 0

誤解があるようですよ


リレーションシップはテーブル間の(参照)関係を設定するものです
SQLで言えばCONSTRAIN句の設定です

クエリの結合はどのフィールド同士をどのように結びつけるかを設定します
SQLで言えば、JOIN句の設定です

2つにはよく似ていますが別の物です

この回答への補足

う~ん・・・ また混乱してきました。

クエリのデザイン画面で設定する関連付けと、リレーションシップの
画面で設定する関連付けは異なる種類のものということですか??

補足日時:2006/10/18 16:04
    • good
    • 0

>全端末番号の一覧(端末番号、社員コード、氏名、・・・)を作ろう


こうしたければ「端末マスタ」と「使用状況」を外部結合することになります
外部結合もヘルプで研究してください

この回答への補足

外部結合は、なんとなく理解していました。

おそらくこれがわかれば解決だと思いますので教えてください。
リレーションシップのプロパティ(内部結合とか外部結合とか)は、
クエリごとに変えることができるということでしょうか?
(わたしはいつもメインメニューのリレーションシップから変更
していました。)

補足日時:2006/10/16 17:29
    • good
    • 0

入力はどのようにするのでしょうか?


もし、フォームとかから入力するのならば
重複不可のためにテーブルを分ける必要はないかと。
入力checkの時に重複もついでに調べれば良いので。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!