GeneXusがデータベースを作成する際、 デフォルトだと 参照整合制約(外部キー制約)も生成します が、 あくまでもデフォルトであり、プロパティで変更することができます。 データストアのプロパティで[Declare referential integrity]がYesだと生成します。 Noだと生成しません。 ※但し、初回に設定しておくか、Noにした後に「DBの再編成」を行う必要があります。 Declare referential integrity property https://wiki.genexus.com/commwiki/servlet/wiki?9093,Declare+referential+integrity+property, 「参照整合制約」があるとどうなるか、ですが。 1)データ移行や、テストデータ作成時にDB構造を考慮する必要がある 親子関係の場合、子のデータを先に作ることができません。 親のデータを削除することができません。 トランとマスタの関係の場合も同じで、マスタが無いとエラーになります。 これは結構大変です。 GeneXusはアジャイル開発で進めることが多いですので、 テーブル構造が固まってないタイミングでもプロトタイプをガンガン作っていきます。 その際に、テストデータを用意するのに、 DB構造を踏まえてデータの投入や作成をするのは面倒ですし、 あまりDBに詳しくないメンバーがいた場合、 エラーの内容が理解できずに時間を浪費してしまうこともあるでしょう。 2)DB再編成時に失敗する これはGeneXus特有で、少々困った事象ですが、 DBを再編成する際にGeneXusはデータも移行しようとします。 機能自体は非常に有益です。 テストデータをなるべく残してくれるので助かります。 ただ、適当なテストデータが入っていて、「参照整合制約」がある状態だと DB再編成時に失敗して、生成し直しになってしまうことが割とあります。 3)テーブル同士の関連で不整合なデータが生成されない 親子関係、マスタとトランの関係をDBが管理しますので、 もし、システムの仕様が誤っていたとしても、DB側がエラーを出します。 ですので、確実にデータの整合性が管理されます。...
コメント
コメントを投稿