用户问答场景ER图设计咨询:Question实体判定及图的正确性
关于ER图设计的疑问解答
1. Question完全可以作为实体引入ER图
在你的业务场景里,Question本身具备独立的属性(比如问题ID、标题、内容、发布时间、状态等),而且它是业务流程的核心对象——用户围绕它提问、回答,同时它归属于某个Subject,完全符合实体的定义(实体是现实世界中可区分的事物,拥有独立存在的意义和自身属性)。所以把Question作为实体是完全合理的,这也是这类场景下的常规设计方式。
2. 关于Answer的设计问题
你把Answer作为User和Question之间关系的派生属性,这是不合理的。因为一个Question可以被多个User回答,每个Answer本身也会有自己的属性(比如回答内容、发布时间、点赞数等),它本质上是一个独立的业务对象,应该单独作为实体,而不是派生属性。正确的关联逻辑应该是:
- User和Answer是一对多关系(一个用户可以发布多个回答)
- Question和Answer是一对多关系(一个问题可以有多个回答)
3. 现有ER图的问题及修正方向
你的现有设计里,核心问题出在Answer的处理上,另外需要明确各实体的关联关系:
- User与Subject:多对多关系(一个用户可以报名多个科目,一个科目可以被多个用户报名)
- Subject与Question:一对多关系(一个科目下可以有多个问题,一个问题归属于一个科目)
- User与Question:一对多关系(一个用户可以发布多个问题)
- User与Answer:一对多关系(一个用户可以发布多个回答)
- Question与Answer:一对多关系(一个问题可以有多个回答)
如果坚持不把Answer作为实体(不推荐),那只能将回答内容作为User和Question关系的多值属性,但这种方式会丢失回答的其他属性(比如时间),也无法处理一个问题多个回答的场景,完全不适合你的业务需求。
内容的提问来源于stack exchange,提问作者Saajidh Borham
相关产品推荐
相关产品推荐

