数据库中表是什么关系?

货郎大叔 2020-02-14 04:27:11
订单表和订单明细表,是一对多关系,也就是说订单明细表,一定对应一个Order,一定有一个OrderId。那对于酒店的团单和入住单,是什么关系呢?团单包含多个入住单,但是有些个人入住的,入住单就不属于任何团单,也就是说入住单不一定对应一个团单。

问两个问题:
1、项目中的实体关系,是不是一定要匹配关系呢?
2、团单和入住单,是什么关系呢?一对多吗,一对一吗?
...全文
189 点赞 收藏 5
写回复
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
货郎大叔 2020-02-16
引用 2 楼 啥都不懂所以不当程序猿 的回复:
团单和入住单没啥一定的关系啊。对于团单,可以设置两个表,一个团单ID+时间+别的字段,再有一个团单详细表,设计字段为团单详细表ID+团单ID+具体身份信息(比如姓名+身份证号+手机号),其中团单详细表中的团单ID要与团单表一直。团单表与团单详细表是一对多的关系,一个团单ID对应多个团单详细表ID。然后入住单就是一个单独的表,记录实际入住的人员信息,入住单数据可以从团单详细表数据中取得(表示这类人是通过团单入住),也可以直接添加(表示这类人是直接来酒店柜台入住)。
我觉得这样设计不安逸,团单详细表和入住单实际上除了团单Id,其它字段都是一样的。而且在实践中,还会存在把入住单拉进团单的情况,难道要把入住单改变成团单详细? 我是这样设计的:就是团单表和入住单表,入住单有一个可空的团单Id,二者也是一对多关系,只不过不是HasRequired,是可选那个。 不知道这样设计行不行?
回复
引用 4 楼 货郎大叔的回复:
[quote=引用 2 楼 啥都不懂所以不当程序猿 的回复:] 团单和入住单没啥一定的关系啊。对于团单,可以设置两个表,一个团单ID+时间+别的字段,再有一个团单详细表,设计字段为团单详细表ID+团单ID+具体身份信息(比如姓名+身份证号+手机号),其中团单详细表中的团单ID要与团单表一直。团单表与团单详细表是一对多的关系,一个团单ID对应多个团单详细表ID。然后入住单就是一个单独的表,记录实际入住的人员信息,入住单数据可以从团单详细表数据中取得(表示这类人是通过团单入住),也可以直接添加(表示这类人是直接来酒店柜台入住)。
我觉得这样设计不安逸,团单详细表和入住单实际上除了团单Id,其它字段都是一样的。而且在实践中,还会存在把入住单拉进团单的情况,难道要把入住单改变成团单详细? 我是这样设计的:就是团单表和入住单表,入住单有一个可空的团单Id,二者也是一对多关系,只不过不是HasRequired,是可选那个。 不知道这样设计行不行?[/quote] 团单详细表与入住单字段的确大多相同,但是我想问你这样一种情况,通过团单下单的人是否一定会进行入住?本来团单和入住单就是两个实体,干嘛非要写在一张表里呢?对于你的那个问题,其实更好的做法是多设计出一个人员信息表出来,因为人员信息其实也是一个实体。无论是下团单还是直接来酒店入住,全都写进这张表里,这样一来,就可以避免字段的重复,在其他表里需要用户信息的直接添加一个字段,用个人员表ID就行了。这样设计才更符合第三范式。实际应用中,可以不按照更高范式的要求来弄,你会发现范式越高,中间操作就越复杂。实际怎么弄,还是看你自己考虑。
回复
对于你的第一个回答,肯定是不一定的啊,有些实体是单独的,不一定要与别的实体有什么联系。
回复
团单和入住单没啥一定的关系啊。对于团单,可以设置两个表,一个团单ID+时间+别的字段,再有一个团单详细表,设计字段为团单详细表ID+团单ID+具体身份信息(比如姓名+身份证号+手机号),其中团单详细表中的团单ID要与团单表一直。团单表与团单详细表是一对多的关系,一个团单ID对应多个团单详细表ID。然后入住单就是一个单独的表,记录实际入住的人员信息,入住单数据可以从团单详细表数据中取得(表示这类人是通过团单入住),也可以直接添加(表示这类人是直接来酒店柜台入住)。
回复
正怒月神 2020-02-14
1 不一定 2 团单和入住单,应该不是直接关系。 当然你也可以在入住单这个表中增加一个团单id列。 比如说 用户id,入住单id,团单id 但是普遍的,我认为,应该是两张表 1 用户id,入住单id 2 入住单id,团单id
回复
发动态
发帖子
C#
创建于2007-09-28

10.4w+

社区成员

.NET技术 C#
申请成为版主
社区公告

全世界最好的语言,没有之一.