我有以下情形:「電話」子表可謂一舉數得父表通過聯接表,如下:唯一約束「所有者擁有的屬性」通過連接表
CREATE TABLE phone (
id BIGINT AUTO_INCREMENT,
number VARCHAR(16) NOT NULL,
type VARCHAR(16) NOT NULL,
PRIMARY KEY(id)
);
CREATE TABLE employee_phone (
id BIGINT AUTO_INCREMENT,
employee BIGINT NOT NULL,
phone BIGINT NOT NULL,
PRIMARY KEY(id),
CONSTRAINT empl_phone_u_phone UNIQUE(phone),
CONSTRAINT empl_phone_fk_employee
FOREIGN KEY(employee)
REFERENCES employee(id) ON DELETE CASCADE,
CONSTRAINT empl_phone_fk_phone
FOREIGN KEY(phone)
REFERENCES phone(id) ON DELETE CASCADE
);
讓愛麗絲和鮑勃住在同一間屋子裏,成爲同一家公司的僱員。人力資源有兩個電話號碼註冊了愛麗絲,而他們只有一個Bob,即房子的座機號碼。 有沒有一種方法可以在數據庫級強制使用此配置爲同一員工(或供應商,或以後出現的任何父代)重複使用電話號碼(數字類型)?或者我將不得不在應用層中處理這些限制嗎?我寧願不使用觸發器或表格反規範化(如在網站上的相關問題中看到的,例如this one,它們與ID一起使用,而不與其他字段一起使用),但是如果沒有其他選擇,我會公開這樣做。我正在使用MySQL。感謝您的關注。
我很困惑。 Alice和Bob可以擁有相同的電話號碼嗎? –
@GordonLinoff是的。例如,他們可能是一對夫婦。 HR需要每個人的電話號碼。 – jpangamarca