6 返信 最新の回答 日時: Sep 16, 2009 1:19 AM ユーザー:isayan

    リレーションについて

    isayan

      タイトル

      リレーションについて

      フォーラムに投稿

      工事コードというフィールドを、各テーブルで作成し、リレーションを設定しています。

      この時、1つのテーブルで工事コードを変更した場合、他の工事コードも自動で変更出来ないのでしょうか?

       

      今は、工事コードが変更になるたびに、それぞれのテーブルで変更しています。

       

      どなたか教えてください。

        • 1. Re: リレーションについて
          fortune_1
            

          フィールド名を変更する、という事でしょうか?

          通常、リレーション設定してあるフィールド名を変更するのはあまりしないと思うのですが、どのような状況なのでしょうか?

           

          また、私のFM10では同じテーブル内で設定したリレーションは、フィールド名を変更してもリレーションには影響はでないようです (たとえば工事コードという名前を工事コード2に変更しても、リレーションの設定したフィールド名は工事コード2に変更されています)

          • 2. Re: リレーションについて
            isayan
               フィールド名を変更するのではなく、工事コードの番号を変更した時に、リレーションで設定してある他のテーブルの工事コードも同時に変更したいのですが。
            • 3. Re: リレーションについて
              d.o
                

              こんにちは

               

              工事コードはリレーションのキーにはなっていないでしょうか?

              なっていないならリレーションキーをもとに「全置換」やら「再ルックアップ」「計算フィールドにしておく」..等いろいろと考えられると思います。

               

              工事コードがリレーションキーになっているなら...

              出来ればリレーションキーになっている値を変える運用は避けたほうがよいと思いますが..どうしても必要なら値を変える処理を丸ごとスクリプトにでもしたほうが間違いがなくてよいと思います。

               

              • 4. Re: リレーションについて
                fortune_1
                  

                Aテーブル(マスター)

                リレーションキー:工事コード

                 

                Bテーブル

                リレーションキー:工事コード

                 

                 

                こういう状況で、Aテーブルの工事コードフィールドの値を変更したらBテーブルの工事コードの値も自動的に変更できないか?という事ですね。

                 

                やっぱりマスターとなるAテーブルのリレーションキー値は変更しないほうがよいと思います。

                 

                ・別途リレーションキーを新たに作成する

                ・変更した値を別途ぬきだしてBテーブルで 、変更した値のみ書き換える(スクリプト等)

                 

                という2つの案があるかと思いますが、新たに作成する方をおすすめします(データベースの設計として、ちょっと問題があると思いますので) 

                • 5. Re: リレーションについて
                  usuitax
                    

                  もし、根本的なリレーションの仕組みを理解していらっしゃらないなら、

                   

                  ほかのテーブルの工事コードのフィールドを

                  「フィールド設定」でメインテーブルの工事コードフィールドに変更します。

                   

                  これですべてのテーブルに同じフィールドが使われることになるので、

                  値の変更は一度で良いです。

                  • 6. Re: リレーションについて
                    isayan
                      

                    みなさん、ご回答有難うございました。

                     

                    私自身、理解出来ていなかった部分もありよくわかりました。

                     

                    ご協力有難うございました。