我正在設置應用程序數據庫,並且我很難設置外鍵。基本設計涉及三個表格:用戶,客戶端和contact_map。用戶有客戶。用戶和客戶都有多個電話和電子郵件帳戶。聯絡地圖包含這些。它有UserID,UserType,Key,Value。MySQL - 使用複合模式設置外鍵(將多個表映射到一個映射)
UserID =來自客戶端或用戶表的ID。 UserType = enum('user','client') Key/value =電話或電子郵件地址鍵/值對。
正是我想要做的事情,如果是的話,你如何做到這一點?
這是我試過的,但沒有奏效。
CREATE TABLE CONTACT_MAP
...
CONSTRAINT 'ContactMap_Users'
FOREIGN KEY ('UserID', 'UserType')
REFERENCES USERS ('ID')
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT 'CONTACT_MAP_CLIENTS'
FOREIGN KEY ('UserID', 'UserType)
REFERENCES CLIENTS ('ID')
ON DELETE NO ACTION
ON UPDATE NO ACTION)
你是不是想用'CONTACT_MAP'表來表示用戶和客戶之間的關係(並且是1:N或M:N)?或者,'CONTACT_MAP'實際上獨立於用戶和客戶可能擁有的任何關係? –
它與他們的關係無關。簡單地說,用戶和客戶都擁有多個電話號碼,電子郵件地址,Facebook,Google +,Twitter帳戶。 –