2017-09-30 9 views
0

私がしようとしているアプリケーションは病院管理システムです。 EnterPatientDiagnosisフォーム(最後にスクリーンショットがあります)では、患者の診断情報を追加してから関連する請求情報を追加する必要があります。ここでは、テーブルの主キー列の両方がID列です。 これは多くのシステムの共通のステップですが、達成方法の詳細はまだ見つかりませんでした。患者診断情報を1対1の関係で提供した後に課金情報を挿入する方法

私が考えた解決策の1つは、ストアドプロシージャを使用してFK_billId属性Nullを保持しているすべての診断情報を挿入し、ストアドプロシージャの出力パラメータとしてDiagnoseIdを取得することでした。その後、ユーザーが請求情報を提出すると、BillIdとDiagnosisIdを使用して、診断テーブルの以前に挿入された行を更新します。しかし、私はこのアプローチが2つの理由で好きではありません。

最初に,追加の更新クエリがあるためです。以来、私は、この2つのデータベーステーブルの間で外来キーとしてDiagnIdIdをBillIdではなく使用した場合、この更新クエリの必要はありません。しかし、私はどこにキーをあなたが1対1の関係でFKとして使用するべきであるかのルール/優先順位を与えるどこにも見つかりませんでした。

第2に,これは、作成したエンティティクラスと競合します。私はEntity Layerのこの2つのテーブルに対して2つのクラスを手動で作成しました。ですから、エンティティ・レイヤーを通して行を挿入したいのであれば、Billingクラスに私のデータベース・テーブル・スキーマと矛盾するDiagnosisIdという名前の新しいプロパティを与える必要があります。ここ は、エンティティ、レイヤ2つのクラスである:ここで

public class EntityPatientDiagnosis 
{ 
    //Diagnosis Id is automatically assigned 
    public int DiagnosisId { get; set; } 
    public int PatientId { get; set; } 


    public string Symptoms { get; set; } 
    public string DiagnosisProvided { get; set;} 

    public string AdministeredBy { get; set; } 

    public DateTime DateofDiagnosis { get; set; } 
    public string FollowUpRequired { get; set; } 
    public DateTime DateOfFollowUp { get; set; } 
    public int BillId { get; set; } //BillId -> Foreign Key 

} 

public class EntityBilling 
{ 
    //BillId -> Primary Key ->set automatically 
    public int BillId { get; set; } 
    public int BillAmount { get; set; } 
    public string CardNumber { get; set; } 
    public string ModeOfPayment { get; set; } 
} 

テーブルやWebフォームのERDの写真です: ERD of One-to-One R

Enter Patient Diagnosis Web Form

+0

私が完全に理解しているかわかりません。しかし、課金情報が追加されるまで、クラスオブジェクトの情報を保持することができます。両方が済むと、最初にBillingテーブルに挿入します。これによりBillIdがFKとして診断テーブルに使用されます。 –

答えて

1

あなたは違ったアプローチを試すことができます。エンティティPatientDiagnosisとBillingの関係を変更することができます。したがって、最初にPatientDiagnosisエントリを作成してから、それに対するBillingエントリを作成することができます。

public class EntityPatientDiagnosis 
{ 
    //Diagnosis Id is automatically assigned 
    public int DiagnosisId { get; set; } 
    public int PatientId { get; set; } 
    public string Symptoms { get; set; } 
    public string DiagnosisProvided { get; set;} 
    public string AdministeredBy { get; set; } 
    public DateTime DateofDiagnosis { get; set; } 
    public string FollowUpRequired { get; set; } 
    public DateTime DateOfFollowUp { get; set; } 

} 


public class EntityBilling 
{ 
    //BillId -> Primary Key ->set automatically 
    public int BillId { get; set; } 

    //DiagnosisId -> Foreign Key unique 
    public int DiagnosisId { get; set; } 

    public int BillAmount { get; set; } 
    public string CardNumber { get; set; } 
    public string ModeOfPayment { get; set; } 
} 
+0

2つのエンティティ間の関係は、それらの相互作用、およびそれらがシステムでどのように定義されているかによって異なります。 システムに複数の請求書がある場合は、1対多の関係を使用する必要があります。そうでない場合は、1対1の関係を使用できます。 –

+0

私はまた、私の記事で "最初に、追加の更新クエリがあるので...."と述べました。しかし、まず私の所与のプロジェクト要件がこのように設定されたテーブルスキーマを持っていたので、私はそれをしたくありません。また、私はあなたが関係を変更するときにそれがなぜ機能するのか理解していません。その1対1の関係は、私が知っている限り、私が関係を作るために使用しているテーブルの主キーとは何の違いもないはずです。それでも、ここでは明確な違いがあります。私はまた、さまざまなオンラインショップや他のシステム/ウェブサイトがそれをどうやっているのか知りたい。 –

関連する問題