開發CMP關係的時候,是建立主鍵表CMP關係然後指向外來鍵表CMP,還是反之?

henry.t發表於2004-02-04
我用的是jbuilderx

比如資料庫兩個表,一個是student 對應的CMP是 studentCMP
一個是desk 對應的CMP是 deskCMP
student裡面有個FIELD叫deskid是desk的主鍵,作為自己的外來鍵
那麼很顯然,desk是主鍵表,student是外來鍵表,

我現在建立了studentCMP 和 deskCMP兩個CMP對應這兩個表,想讓studentCMP含有一個關係域 desk,反之就不用了。注意,在建立關係前,studentCMP已經含有了一個FIELD名叫 deskid了,這個是於資料表對應的。

這時我建立關係,在studentCMP上點選增加關係,然後連線指向deskCMP,然後點選Edit RDBMS Relation設定資料表關聯欄位,發現student表在左邊。我設定完畢。

結果我到部署描述XML檔案裡面一看,說是主鍵表是student,外來鍵表是desk,我莫名其妙。於是我刪除關係,改為從deskCMP建立關係指向studentCMP,進入Edit RDBMS Relation後發現desk表在左邊了,進入XML檔案一看,正確,主鍵表是desk。

我的疑問1就是:這個關係從哪個BEAN設定是不是決定了誰是主鍵表誰是外來鍵表?

我的第二個疑問:照MASTER EJB2.0裡面的例子,studentCMP含的一個FIELD名叫 deskid是不能存在的,因為這個外來鍵代表了關係,應該由關係域desk代替,所以我必須在建立關係後把這個deskid域刪掉。我重新試了一次,一開始就不新增這個域,建立了關係以後進入Edit RDBMS Relation一看,發現表圖中的studentCMP裡面根本沒有deskid這個欄位,但是我又必須在這個欄位和desk主鍵之間連線。這下我就不知道怎麼辦了,難道每次都要先建立外來鍵欄位,然後又刪除嗎???有這種莫名其妙的事情????????

相關文章