![](/img/trans.png)
[英]How Can I specify in my Table that I cannot have two same values in 3 columns with unique or other commands?
[英]Can I have 2 unique columns in the same table?
我有2張桌子:
在MySQL MYISAM的同一張表中,id和name字段可以唯一嗎?
如果以上情況可行,我正在考慮將表格更改為:
...因為這有助於我不要在演示文稿中對功能進行額外的查詢,因為前端用戶無法使用ID。
當然,您可以將它們之一設置為PRIMARY,然后將其設置為UNIQUE。 或兩者都唯一。 或者,如果您願意,可以選擇一個PRIMARY和四個UNIQUE
是的,您可以為除主鍵以外的其他列定義UNIQUE約束,以確保數據在行之間是唯一的。 這意味着該值只能在該列中存在一次-任何嘗試添加重復項的操作都將導致唯一約束沖突錯誤。
我正在考慮將FEATURES表更改為features [id(PK),名稱,roomtypeNAME],因為這有助於我不要在演示文稿中對功能進行額外的查詢,因為前端用戶無法使用ID。
有兩個問題:
ROOM_TYPE_NAME
唯一約束將不起作用-您將具有給定房間類型的多個實例,並且唯一約束旨在阻止這種情況。 ROOM_TYPES
表中使用外鍵,因此您可能會遇到“ Double”,“ double”,“ dOUBle”等值 為了您的數據,我建議您堅持使用原始設計; 您的應用程序可以將房間類型轉換為相應的ROOM_TYPE
記錄,而UI則可以將其顯示。
我希望這樣,否則MySQL不符合SQL標准。 您只能有一個主鍵,但可以將其他列標記為唯一。
在SQL中,這可以通過以下方式實現:
create table tbl (
colpk char(10) primary key,
coluniq char(10) unique,
colother char(10)
);
還有其他方法可以做到這一點(尤其是使用多部分鍵),但這是一個簡單的解決方案。
是的你可以。
還請記住,MySQL在唯一列中允許NULL值,而作為主鍵的列不能具有NULL值。
再次感謝您提供非常有用的答案。
1個房間類型可能具有許多功能
1個功能可能分配給許多房間類型
那我有什么類型的關系? M:N?
如果是,我看到的解決方案是將表結構更改為roomTypes [id,...,featuresIDs] features [id(PK),name,roomtypeIDs]多個用逗號分隔的roomTypesID?
1個RoomType可能具有許多功能
1個功能可以分配給許多RoomType
那我有什么類型的關系? M:N?
您有一個多對多關系,必須用一個額外的表來表示。
該關系表將具有2個字段:RoomTypes的PK和Features的PK。
關系表的PK將由這兩個字段組成。 如果有用,則可以添加諸如“數量”之類的其他字段。
我想鼓勵您閱讀有關數據庫規范化的知識,這是他為關系數據庫創建正確設計的過程。 您可以為此搜索Google,或最終在這里查看 (關於此的書籍/網頁很多)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.