みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
作業テーブルのメンバー外部キーと、メンバーテーブルのメンバー主キーをリレーションさせています。このリレーションを利用してレコードの作成を許可にチェック。
作業のレイアウトに、ポータルを配置し、ポータル設定で、メンバーテーブルを指定し、フィールドはメンバー氏名としています。
ブラウズモードでメンバーを入力すると、1人目は入りますが、2人目を入れると、「主キー」は、値を必要とするように定義されていますが、このレイアウトでは利用できません。このフィールドに値を割り当てるために、他のレイアウトを使用してください。と言われます。
ポータルを作り直して、フィールドにメンバー主キーも入れるようにすると、2人目のメンバー主キーが1人目の主キーと同じになって、「主キー」は、ユニークな値のみと定義されています。ユニークな値を入力してください。と言われます。
メンバーリストでは、それぞれUUIDで主キーを作っています。
いろいろなサイトを調べましたが、解決策が見つからなかったので、よろしくお願いします。
Offline
前のトピックに書きましたが、1つの作業に複数のメンバーを登録する場合は、ポータルに入れるのはメンバーテーブルではなく「作業ごとのメンバー」テーブルが必要です。
作業テーブル 作業メンバーテーブル メンバーテーブル
主キー = 作業外部キー
メンバー外部キー = メンバー主キー
質問者さんがポータルでやりたいのは「作業」に参加する「メンバー」の入力ではないでしょうか?
それに対して「作業」テーブルと「メンバー」テーブルしか作成していません。
「作業」は作業で1レコード、メンバーはメンバーで1レコードとなるテーブルです。
現状は「作業」に対して個人を管理する「メンバー」をリレーションしているので、
当然「メンバー」は1人1レコードになりますから「作業」に紐付けて作成することは理屈があいません。
同じメンバーを2つの「作業」に入れようとすると「メンバー」が1人1レコードではなくなる(複数の作業に存在してしまう)のでこれまた理屈にあいません。
「作業に参加するメンバー」として作業とメンバーの組み合わせで1レコードとするテーブルが必要でしょう。
データモデリングについてリソースのドキュメント等から知識を深められると良いのではないでしょうか。
Offline
> 作業テーブルのメンバー外部キーと、メンバーテーブルのメンバー主キーをリレーショ
ではだめですよ。
メンバーテーブルにテキストフィールドをひとつ作り、作業テーブルのメンバー外部キーとリレーションをはります。それだけで動きます。
そのリレーションには、メンバー主キーは関係しません。
Offline
現状、
メンバーテーブルは、
メンバーがユニークなメンバーマスタですか?
とすれば、
Shinさんの方法はやめたほうがいいですよ。
同じメンバーのレコードが増えてしまいます。
前のお二方が言われるように、テーブルを増やすべきですね。
Offline
メンバーの名前だけを保持させるテーブルのつもりなんですが。メンバーのマスターテーブルは、質問のなかでは必要なさそうです。
Offline
そういう解釈もあり得ますが、その場合「作業テーブルのメンバー外部キー」ではなくなりますから、多分現状のはメンバーのマスターテーブルのつもりで作ってると思います。
皆様、アドバイスありがとうございます。多対多の中間テーブルを作る要領でしょうか。解説動画を見たことあるので、できそうです。
その動画では、映画と俳優で解説されていましたが、作業とメンバーも、よく考えれば同じような関係でした。
Offline
ヘビメタ先生のファイルメーカーオンライン講座を見て、ポータルに、中間テーブルの主キー、作業テーブルの外部キー、メンバーテーブルの外部キー、メンバー氏名のフィールドを作ると、うまく動作するようになりました。
実用上は、メンバー氏名だけでいいので、(入力時にはメンバーふりがな)、このレイアウトのコピーを作って、他のフィールドを削除するとうまく行くようです。
(「主キー」は、値を必要とするように定義されていますが、このレイアウトでは利用できません。このフィールドに値を割り当てるために、他のレイアウトを使用してください。)とあるのは、中間テーブルの主キーを入れるフィールドのあるレイアウトが必要と言うことでしょうか。
メンバー外部キーのフィールドを、レイアウト編集の右パネル、データタブ、値一覧でデータ書式を上書き、とすると、メンバーIDとふりがなが入力されますが、データベースソフト側が欲しいのは、メンバーIDだけと思うので、ふりがなまでがメンバー外部キーフィールドに入力されると、不都合が起きませんか。
Offline
実用上は、メンバー氏名だけでいいので、(入力時にはメンバーふりがな)、このレイアウトのコピーを作って、
テーブル・レイアウトを混同されているように見受けられます。
中間テーブルにはそれぞれのテーブルの主キーを格納する外部キーフィールドだけ作れば動作します。
ふりがなを外部キーに入れるということがまず有り得ません。動作に関係しません。
質問中にあるエラーはいずれかの主キーのフィールドが「空欄不可」になっているのにも関わらず、レイアウトに主キーが配置されていないためでしょう。
多くの場合主キーには入力値の自動化を設定します。
中間テーブルの主キーを入れるフィールドのあるレイアウトが必要と言うことでしょうか。
どの主キーでエラーが出ているか分かりませんが、
多対多の解決の目的で用意した中間テーブルの主キーを入れるフィールドが他のテーブルに必要になることは考えづらいです。
いまいちど多対多の中間テーブルによる解決を見直されては如何でしょうか。
Last edited by Moz (2023-04-29 10:20:20)
Offline
中間テーブルには、主キー、作業テーブルの外部キー、メンバーテーブルの外部キーだけで十分です。
作業テーブルのポータルとして表示しておき、メンバーを入力していくという手順になるのでしょうが、メンバーのふりがなを入力、というのは、どこかのフィールドに手入力されているのですか。
メンバーが何百人、というのでなければ、ドロップダウンリストで選択させるのが簡単です。
値一覧を作ります。全てのフィールドの値から作るようにして、フィールドの設定はメンバーの主キーを一覧にします。第2のフィールドとして、メンバーふりがなを選択しておきます。その下の表示の設定で、第2のフィールドだけを表示 にしておきましょう。
その値一覧を、メンバーの主キーのフィールドに設定します。そのフィールドへ入ると、メンバー名のドロップダウンが表示され、選択したメンバーの主キーがフィールドに設定されます。メンバー名の表示が必要でしたら、メンバー主キーからメンバーテーブルへリレーションを張り、関連フィールドとしてメンバー名を表示させます。
Offline
中間テーブルには、中間テーブルの主キー(ハウスキーピングフィールド)、作業外部キー、メンバー外部キーを設定しています。
これまで、ポータルのフィールドに メンバー外部キー(2番目のフィールド=ふりがなをホップアップメニューから選択し、最初のフィールド=メンバー主キーを入力)と、メンバー氏名を設定してうまく行きませんでしたが、中間テーブル主キーと作業テーブル外部キーのフィールドを加えるとうまく行くようになりました。
MOZ様、今のところ、主キーはUUIDの自動作成にしているので、作業TOアンカーのレイアウトのポータルに、中間テーブルの主キーを入れるフィールドが必要なのかなと思っています。
Shin様、メンバーの値一覧を、ファイル 管理 値一覧 で、フィールドの値を使用 の所で、レイアウトごとに、そのTOの メンバー_作業、メンバー_サービスA開始時、 メンバー_サービスA終了時 などと設定しています。そしてレイアウト編集の左パネルの関連テーブルから、メンバー氏名フィールドを選択しています。
目的の動作ができると嬉しいですが、それが理解できたためなのか、偶然うまく行っているのか、わからない所がまだまだです。
Offline
空欄不可のフィールドオプションが設定されているフィールドが以下の状態の時にダイアログが表示されます。
・入力値の自動化が設定されていない
・レイアウト上に配置されていない
ダイアログの中で「主キー」と書かれていますから、「主キー」という名前のフィールドのいずれかがその状態なのでしょう。
中間テーブルの主キーを入れるフィールドというのは何でしょうか?そのフィールドの名前が「主キー」なのですか?
作業TOアンカーのレイアウトのポータルのTOはどのテーブルでしょう?
いずれにしても「主キー」がすべてUUIDの自動入力になっているならそのエラーは出ないでしょう。
Offline
Offline
Moz様、中間テーブルの主キーで、作業_メンバー割当て_主キー といった感じのフィールドです。
作業TOアンカーのレイアウトのポータルのTOはどのテーブルでしょう? 作業_メンバー割当てテーブル、いわゆる中間テーブルです。
Shin様、参考ファイルをありがとうございます。リレーションシップグラフは同様ですが、
作業テーブルのポータルに、メンバー外部キーとメンバー名だけで、うまく動作しています。
自分で同様に作っても、うまく動作せず、ヘビメタ先生の動画を参考に、ポータルに作業_メンバー割当てテーブルの主キーを加えると動作するようになったので、
そのようなフィールドが必要かなと思っていました。ポータルに中間テーブル主キーを入れないファイルを作って検討してみます。
Offline
ポータルから、中間テーブルの主キー、作業テーブルの外部キーを除いても、うまく動作するようになりました。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 558.65 KiB (Peak: 579.55 KiB) ]