[英]How to add a nullable column as part of primary composite key of the table?
我們有一張包含生產數據的表:
CREATE TABLE VerifiedUsers (
Mobile varchar(20) NOT NULL,
Email varchar(255) NOT NULL,
Name varchar(255),
PRIMARY KEY (Mobile,Email)
);
我們有一個新的要求,我們需要在此表中保存用戶的唯一設備ID,以便我們根據(Mobile,Email,DeviceId)而不是(Mobile,Email)唯一標識用戶。
新列DeviceId必須為Nullable,因為我們不能確保每個客戶端都會向我們發送DeviceId。 另一方面,我們必須使其成為主鍵的一部分,因為我們現在可以具有相同(Mobile,Email)但設備ID不同的多行。
我們應該如何解決。 如果它為null,我們是否應該通過給DeviceId提供一些默認值來解決呢?
我會建議:
CREATE TABLE VerifiedUsers (
VerifiedUserId int auto_increment primary key,
Mobile varchar(20) NOT NULL,
Email varchar(255) NOT NULL,
DeviceId varchar(255), -- or whatever
Name varchar(255),
UNIQUE (Mobile, Email, DeviceId)
);
主鍵的組件不能為空。 將單個自動增量列作為主鍵很方便,原因有很多:
在這種情況下,默認值僅會保持為null便無濟於事。 無論哪種方式,這兩個值都無法幫助識別用戶。 自動增量主鍵將是一個理想的解決方案,但前提是您的情況允許這樣做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.