php – SQL Members表,用于显示成员之间的家庭关系
作者:互联网
我一直在努力设计这个数据库.我正在设计它,然后在MYSQL Server上实现PHP Web应用程序.
我有一张桌子:
会员
> MemberID(autoNumber,PK)
>会员名称
>会员详细信息
会员可以与其他会员建立很多关系,这可能是儿童,家长,朋友,配偶等.看一位会员,我希望能够与现有会员建立新的关系,然后从相关成员无需进一步输入.成员还应该能够列出他们所有的关系.
你能告诉我该怎么做吗?我尝试了一些选项,但似乎没有一个按预期工作.我对SQL很满意,我只是遇到了一元关系设计的问题.
-编辑-
此外,我忘了添加,由于服务器限制,这将无法使用INNODB.最有可能是MYISAM,虽然我仍然需要参考完整性:(
解决方法:
让表成员包含成员数据,表关系包含成员关系数据.
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;
标签:php,sql,relational-database,entity-relationship 来源: https://codeday.me/bug/20190530/1185125.html