我有一个实体(职业)可能与其他实体有关系的情况。与其他实体有随机关系的实体
我可能有一个用户有家务管理作为一个职业,而另一个用户有烹饪作为一个职业,但我们必须指定他在哪个国际厨房烹饪,所以我们有X是西班牙和亚洲厨房的厨师, Y在管家。
与其他实体的条件关系取决于行业的业务类型。
我有以下表格:
- 用户:ID,姓名,...
- 职业:ID,标题,linked_entity_name
- User_Profession:USER_ID,profession_id, entity_id
如果行业没有链接到实体,则表User_Profession中的实体ID将为零。
这种方法在网站表格标准化,性能和数据搜索方面是否有效?
实体可能有或没有关系的最佳实践是什么?
CREATE TABLE `user` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`fullName` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `profession` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`title` varchar(100) NOT NULL,
`linked_entity_name` varchar(100) NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `user_profession` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL ,
`profession_id` int(11) NOT NULL ,
`entity_id` int(11) NOT NULL DEFAULT 0,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `kitchen` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`kitchen_name` varchar(100) NOT NULL,
`kitchen_origin` varchar(100) NOT NULL,
`kitchen_desc` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
SQLFiddle:http://sqlfiddle.com/#!9/ece75
'用户&职业'之间的关系的基数是什么?如果“一对多”,那么我认为最好的做法是像你一样保留一张单独的桌子。 – 1000111
是的,用户可以拥有多个专业@ 1000111 – KAD
这意味着什么:*表中的实体ID将为零User_Profession,以防专业链接到实体* – Drew