簡體   English   中英

不使用外鍵是否是壞習慣

[英]Is it bad practice not to use foreign key

我有一對多關系的父子表。 我所做的就是創建了一個搜索方法,用戶可以從父表中找到ID,結果顯示在A label97上。 然后,他們將插入一個子記錄,並使用標簽中顯示的結果將兩個表鏈接起來。 所以我還沒有使用@@ identity做外鍵。 所以我的問題是我做的方法不好嗎? 因為結果在數據庫中看起來不錯。 這是我的代碼。 謝謝。

Main.cs

    private void btnSearch2_Click(object sender, EventArgs e)
    {
         myCon.Open();
          cmd = new OleDbCommand("SELECT * FROM EmployMainDetails WHERE EID = @EID", myCon);
          cmd.Parameters.AddWithValue("EID", textBox2.Text);
          try
          {
              dreader = cmd.ExecuteReader();
              if (dreader.Read())
              {

                 label97.Text = dreader["EID"].ToString();
              }
                 else MessageBox.Show("No record found");
          }

          catch (Exception)
          {
              MessageBox.Show(" No Record");
          }
          finally
          {
              myCon.Close();
          }
     }

    private void btnJNew_Click(object sender, EventArgs e)
    {
        EEmployDetails.JInsert(txtJobID.Text, label97.Text, cBEmpStatus.Text, ...); 
    }

EmployDetails.cs

這是我的插入方法

 public static void JInsert(string ejobid, string eid, string employst,... )
    {
        var con = GetConnection();
        OleDbCommand cmd = new OleDbCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = (@"INSERT INTO EmploymentDetails (EJobID, EID, EmploymentStatus,...)
         VALUES(@EJobID, @EID, @EmploymentStatus, ...)");
        cmd.Parameters.AddWithValue("@EJobID", ejobid);
        cmd.Parameters.AddWithValue("@EID", eid);
        cmd.Parameters.AddWithValue("@EmploymentStatus", employst);
        ....
        ...
        cmd.Connection = con;
        con.Open();
        cmd.ExecuteNonQuery();
        con.Close();
    }

您的術語似乎很混亂。 您說您“尚未使用@@ identity完成外鍵”,但是您正在使用外鍵,否則父表和子表之間將沒有鏈接。

在您的情況下, EID似乎是子表中的外鍵 ,與父表中的對應主鍵匹配。 每個子表也可以定義自己的主鍵 ,並且該主鍵可以是一個標識列 (Access稱為“ AutoNumber”字段),但這是另一回事。

因此,您已經在使用外鍵。 達倫在上面的評論中提到了“參照完整性”,這是一種確保子記錄始終具有相應的父記錄的機制。 這通常稱為“外鍵約束”,在Access中,可以通過在兩個表之間創建“關系”,然后選擇“強制引用完整性”選項來實現。

relationship.png

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM