1 回答

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>
添加回答
舉報