【发布时间】:2012-01-12 11:43:10
【问题描述】:
我正在设置一个应用程序数据库,但我很难设置外键。基本设计涉及三个表:users、clients 和contact_map。用户有客户。用户和客户都有多个电话和电子邮件帐户。联系地图包含这些。它有 UserID、UserType、Key、Value。
UserID=来自客户端或用户表的 ID。 UserType=enum('用户', '客户') 键/值=电话或电子邮件地址键/值对。
我正在尝试做的事情是否可行,如果可以,您是如何做到的?
这是我尝试过的,但没有成功。
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 帐户。
标签: mysql database-design foreign-keys