第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 liquibase 變更集中設置多個外鍵?

如何在 liquibase 變更集中設置多個外鍵?

慕俠2389804 2024-01-05 16:23:30
我有一個由兩個表組成的聯(lián)接表,其中一個表id為主鍵,另一個表有 3 列作為主鍵,基本上是復合主鍵?,F(xiàn)在,在連接表上我應該引用哪一列,或者更準確地說,在編寫更改集時如何將多個列引用為外鍵。以下是表格:<changeSet id="Create X table"> <createTable tableName="X">  <column name="SERVICE" type="VARCHAR(50)">    <constraints primaryKey="true"/>  </column>  <column name="ACTION" type="VARCHAR(50)">    <constraints primaryKey="true"/>  </column>  <column name="TARGET" type="VARCHAR(50)">    <constraints primaryKey="true"/>  </column> </createTable></changeSet>第二個表:<changeSet id="Create Y table"><createTable tableName="Y">  <column name="ID" type="VARCHAR(36)">    <constraints primaryKey="true" primaryKeyName="XPKY"/>  </column>  <column name="NAME" type="VARCHAR(50)">    <constraints nullable="false" unique="true"/>  </column></createTable>連接表: <changeSet id ="Create X_Y_REL table"><createTable tableName="X_Y_REL">  <column name="Y_NAME" type="VARCHAR(50)">    <constraints nullable="false" referencedTableName="Y" referencedColumnNames="NAME"                 foreignKeyName="XFK1X_Y_REL"/>  </column>  <column name="X_ID" type="VARCHAR(150)">    <constraints nullable="false" referencedTableName="X" referencedColumnNames="?????"                 foreignKeyName="XFK2_X_Y_REL"/>  </column></createTable>因此,我不知道在這里放置什么作為引用的列名稱,因為表 X 中沒有單個主鍵列。它的主鍵是復合鍵。有什么建議嗎??
查看完整描述

1 回答

?
慕田峪4524236

TA貢獻1875條經(jīng)驗 獲得超5個贊

這更像是一個數(shù)據(jù)庫設計問題,而不是 Liquibase 問題,但這是我對此的想法。


您可能應該只向每個表添加一個整數(shù)或 UUID 列以用作代理主鍵。從長遠來看,這將使你和任何追隨你的人的事情變得更容易。然后始終使用該鍵作為外鍵關系。


如果您還希望數(shù)據(jù)庫強制執(zhí)行某些列組合對于數(shù)據(jù)庫的每一行也必須是唯一的,您也可以這樣做,但這是一個單獨的問題。


如果您不想添加代理主鍵,則在第三個變更集中,您可以引用組成復合鍵的多個列名稱,并用逗號分隔它們。它看起來像這樣:


<changeSet id ="Create X_Y_REL table" author="Steve">

   <createTable tableName="X_Y_REL">

     <column name="Y_NAME" type="VARCHAR(50)">

       <constraints nullable="false" referencedTableName="Y" referencedColumnNames="NAME"

                    foreignKeyName="XFK1X_Y_REL"/>

     </column>

     <column name="X_ID" type="VARCHAR(150)">

       <constraints nullable="false" referencedTableName="X" referencedColumnNames="SERVICE,ACTION,TARGET"

                    foreignKeyName="XFK2_X_Y_REL"/>

     </column>

  </createTable>

</changeSet>


查看完整回答
反對 回復 2024-01-05
  • 1 回答
  • 0 關注
  • 134 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號