urizakaです。
現在、VISIO5.0Professionalを使ってデータベースのER図を作っています
が、その際にあるテーブルのフィールド(PrimaryKey)と関連付けたテーブルに
おける複数のフィールドを関連付けたいと考えておりますが、普通にやると関連
付けられるのは一つだけのような気がするのですが、何とか複数のフィールドを
関連付けることはできるでしょうか?
具体的にいうと、従業員マスターテーブルの従業員コード(主キー)を外部キーとして仕事トランザクションテーブルに持ってきて、監督者、指示者、従事者、と
して使いたいと考えているのですが・・・何かいい方法があるでしょうか?
すみませんが、教えてください。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.2
- 回答日時:
またまた再びです。
その構造なら、2つのテーブル間に3つの関連で仕方がないですね。
でも、もっと正規化すれば、美しくはなります(?)
従業員マスターテーブルはそのままで、それ以外に3つテーブルを作ります。
一つは役割テーブルで次のような構造です。
---------
|ID| 役割 |
---------
| 1| 監督者|
| 2| 指示者|
| 3| 従業者|
---------
次に仕事テーブルです
---------
|ID| 仕事 |
---------
| 1| 準備 |
| 2| 調査 |
| 3| 実行 |
---------
そして最後は、今までの3つのテーブルの交差テーブルです。
-----------------
|従業員ID|役割ID|仕事ID|
-----------------
| 1 | 1 | 1 |
| 2 | 2 | 1 |
| 3 | 3 | 1 |
| 1 | 3 | 2 |
| 2 | 1 | 2 |
| 3 | 2 | 2 |
| 1 | 3 | 3 |
| 2 | 2 | 3 |
| 3 | 1 | 3 |
-----------------(すべての列で複合主キーを設定する)
完全に正規化していますので、E-R図は非常にきれいだと思います。(Oracleならスタークエリが使えます)
ただ、非正規化の例としてurizakaさんの構造は非常にいいと思います。(パフォーマンスは最高でしょう)ただ、汎用性を考えたり、美しさを考えるなら、上記のようにするか、または役割テーブルと仕事テーブルを引っ付けた非正規化がいいのではと思います。
Visioで2つ以上の関連は、リレーションを複数ドラッグして、urizakaさんの見つけた右クリックで一つ一つ関連を作るしかないのではないでしょうか?
No.1
- 回答日時:
再びです。
従業員テーブル 仕事トランザクションテーブル
---------- --------------
|ID|従業員| |ID| 仕事 |FK|
---------- --------------
|1|Aさん| |1|監督者|1|
|2|Bさん| |2|指示者|1|
|3|Cさん| |3|従業者|2|
---------- --------------
というイメージでしょうか?
これなら、関連は1つですよね。(ということは違う・・・)
もしかして、多対多のリレーションなのではないでしょうか?
それならば、交差エンティティを作ってください。(私がとんでもない勘違いをしているような気もしますが・・・)
交差エンティティの例
交差テーブル
------------
|従業員|仕事|
------------
| 1 | 1 |
| 1 | 2 |
| 2 | 3 |
| 3 | 1 |
------------
この回答への補足
こん××わ、msystemさん。
ええと、私のやりたいことですが、違います。
従業員マスタ
------------------
名前 ID
------------------
A 1
B 2
C 3
==================
仕事トランザクションテーブル
_____________________
仕事名 |監督者 指示者 従業者
-----------------------------------------
準備 1 2 3
調査 2 3 1
実行 3 2 1
---------------------
です。
今のところ、マスターからトランザクションに「監督者」用、
「指示者」用、「従業者」用の関連を作って繋げていますが、これだと
線が何本にもなってしまって非常に美しくないもので…
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(データベース) 更新クエリをリンクデータベーステーブルに実行し実行時エラー3362固有インデックスに重複する値が含ま 1 2022/09/21 11:44
- Access(アクセス) AccessVBAで降順にするテーブル作成クエリを使用して作成したテーブルを削除し同一のテーブル作成 1 2023/01/06 11:17
- Access(アクセス) アクセスの更新クエリでカレントレコードのみ更新したい 1 2022/06/02 23:32
- その他(データベース) IT用語について質問です。 以前ITパスポートの試験を受けた際にデータベースが何の集まりかについての 2 2022/12/10 12:29
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- その他(Microsoft Office) ピボットテーブルへの集計フィールド挿入 1 2023/02/26 11:33
- 会社・職場 Excel、Googleスプレッドシートなどへのデータ入力 2 2023/07/06 05:59
- Access(アクセス) Access2016でフォーム内にExcelの複数シートを 表示させるイメージで複数テーブルの デー 1 2022/11/25 15:30
- Access(アクセス) Access VBA を利用して、フォルダ内のファイルの名称を変更したい 1 2023/08/03 08:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
1つのテーブルに同じデータを参...
-
飲み会で、座敷orテーブルどち...
-
会社の飲み会の幹事になり、座...
-
テーブルリンク リンク元を知...
-
外部キーだけのテーブル(主キ...
-
一致するデータのみ削除したい
-
複数のテーブルの項目を同時に...
-
面接のときテーブルが正面に。...
-
L2SWはARPテーブルを持っている?
-
SQLのサブクエリについて
-
DBのテーブルの設計ができず困...
-
【エクセル】データテーブルの...
-
下の画像はSQLの4大命令の性質...
-
LAG関数に似た関数があればご教...
-
飼い犬に噛まれて大出血しまし...
-
テーブルへの最終アクセス時刻(...
-
置き配された食べ物を袋からど...
-
まるいテーブル 円い 丸い 漢字...
-
件数の多い順にselect
-
mysqlのupdate構文についての質...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
テーブルリンク リンク元を知...
-
L2SWはARPテーブルを持っている?
-
1つのテーブルに同じデータを参...
-
まるいテーブル 円い 丸い 漢字...
-
外部キーだけのテーブル(主キ...
-
【PHP】SQL文のSUM関数で出力し...
-
複数テーブルにわたるCOUNT
-
飲み会で、座敷orテーブルどち...
-
「テーブルに座って……」という...
-
アクセスのリンクテーブル一覧...
-
論理名とコメント構文(?)について
-
会社の飲み会の幹事になり、座...
-
一致するデータのみ削除したい
-
MySQLで複数テーブルを作成する
-
面接のときテーブルが正面に。...
-
オーダーの覚え方について
-
1対1のリレーション(主キー同...
-
お金持ちのテーブル
-
【エクセル】データテーブルの...
-
ACCESS での LEFT JOIN 時の WH...
おすすめ情報