1 回答

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個(gè)贊
這更像是一個(gè)數(shù)據(jù)庫設(shè)計(jì)問題,而不是 Liquibase 問題,但這是我對此的想法。
您可能應(yīng)該只向每個(gè)表添加一個(gè)整數(shù)或 UUID 列以用作代理主鍵。從長遠(yuǎn)來看,這將使你和任何追隨你的人的事情變得更容易。然后始終使用該鍵作為外鍵關(guān)系。
如果您還希望數(shù)據(jù)庫強(qiáng)制執(zhí)行某些列組合對于數(shù)據(jù)庫的每一行也必須是唯一的,您也可以這樣做,但這是一個(gè)單獨(dú)的問題。
如果您不想添加代理主鍵,則在第三個(gè)變更集中,您可以引用組成復(fù)合鍵的多個(gè)列名稱,并用逗號分隔它們。它看起來像這樣:
<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>
添加回答
舉報(bào)