簡體   English   中英

使用其他唯一約束創建Surrogate Key表

[英]Creating Surrogate Key table with other unique constraints

我是自學成才的數據庫設計和MYSQL。 感謝您查看我的問題。 我目前在mySQL有一個這樣的數據庫:

在此輸入圖像描述

我使用復合鍵的原因是我希望始終保持OwnerDevName唯一性。 我可以看到的一個問題是我需要一直使用兩個外鍵,因此Data1表沒有規范化。

所以我創建了一個看起來像這樣的表,使另一個表具有代理鍵表。

在此輸入圖像描述

這看起來不錯嗎? 我不確定制作新桌子真是個好主意......

有沒有在一個具有代理鍵的表中創建它們,保持OwnerDevName的組合如此獨特?:

在此輸入圖像描述

Device3Data3對我來說很好看。 除非有一些令人信服的理由,否則我不會添加額外的表格。 創建第三個表可能有任何令人信服的理由歸結為只處理復合外鍵,就像在原始的Device / Data1模型中一樣。

似乎缺少的是UNIQUE約束。 您可以在ownerdevname列的組合上添加UNIQUE約束(即UNIQUE INDEX)。 例如

 CREATE TABLE device3 
 ( id       INT UNSIGNED AUTO_INCREMENT PRIMARY KEY
 , owner    VARCHAR(30) NOT NULL COMMENT ''
 , devname  VARCHAR(30) NOT NULL COMMENT ''
 , ...

 , UNIQUE KEY device3_UX1 (owner, devname)

 ) ...

或者,如果您已經創建了device3表,則只需添加一個唯一索引到現有表。 例如

 CREATE UNIQUE INDEX device3_UX1 ON device3 (owner, devname) 

暫無
暫無

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

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