讓表members
包含成員數據和表relations
包含成員關係數據。 relations.member_id
將會引用會員relations.related_member_id
- 發送給相關會員。 relations.type
是可枚舉的關係類型。
CREATE TABLE `members` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` TEXT NOT NULL ,
`details` TEXT NOT NULL
) ENGINE = INNODB;
CREATE TABLE `relations` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`member_id` INT NOT NULL ,
`related_member_id` INT NOT NULL ,
`type` ENUM( 'Child', 'Parent', 'Friend', 'Spouse') NOT NULL,
FOREIGN KEY (member_id) REFERENCES members(id),
FOREIGN KEY (related_member_id) REFERENCES members(id)
) ENGINE = INNODB;
UPD:的MyISAM版(除去外鍵,所有可能的外鍵的功能應該由服務器端腳本處理):
CREATE TABLE `members` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` TEXT NOT NULL ,
`details` TEXT NOT NULL
) ENGINE = MyISAM;
CREATE TABLE `relations` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`member_id` INT NOT NULL ,
`related_member_id` INT NOT NULL ,
`type` ENUM( 'Child', 'Parent', 'Friend', 'Spouse') NOT NULL
) ENGINE = MyISAM;
我認爲你需要檢討你的真實生活標識符。一個人的名字很少(大概是「家庭事務[原文如此]」表明共享姓氏!)和一個autoNumber PK將只允許重複的人進入數據庫,而不是消除重複。標識符必須標識人員,據推測他們不知道系統分配給他們的自動編號值。 – onedaywhen
對不起,我簡化了數據庫表。實際PK是:MemberID,FirstName,LastName。姓氏不適用於朋友和女朋友。我正在努力專注於如何將會員與海誓山盟聯繫起來。 –