回答

收藏

涉及多个表的一对一关系

技术问答 技术问答 72 人阅读 | 0 人回复 | 2023-09-13

说,
! s0 J7 I4 F# q# K. H) @) Y( t我有3张表。
, ~2 z' r$ L+ H+ p. s- p. F: `User 包含用户的基本信息。0 U( X# l3 A. s' |2 v" P6 b
SectionA 包含更多关于用户的信息。
; z5 o; E, x- ]SectionB 还包含更多关于用户的信息。3 H# _" M, w. }6 a% E' k
每个用户只能有一个SectionA和SectionB数据。
" D# E) `( @# d8 Y* a- \我的想法是创建这样的表设计:
1 k9 w* m- R% m* s3 A+ q0 m( tid  name   section_a_id   section_b_id1   matt   1               1问题是,section_a_id并且section_b_id不能自动增加,因为它们不是主键。* Y8 u1 X; S# }! V4 {4 E. Q
因此,我尝试了另一种方法来决定输入id主键User应该是引用section_a_idand6 }6 l  M8 J% ~+ _
section_b_id`外键。但我不能这样做,因为mysql只允许引用一个表。6 o' x" O' ]8 a, o
那么我应该如何处理这种情况呢?
# h7 S  t( a& ^; w8 T# q! G                                                               
& D$ v* b. B! M: k    解决方案:                                                                0 F8 _5 ]3 ]2 K$ q, S
                                                                如果是一对一的关系,总是很容易把三个表合并成一个大表。Section表,这些表可以是空的。
' W! ^' p/ E3 ]7 g) e  E对于这种方法,我可以看到一些积极的观点:
+ c7 J* }" t& E, ~. Q插入、更新和删除操作方便。
) }6 g, c  }6 i( s. W当要使用的连接较少时,数据检索速度更快。/ d  O' l& e( I$ ]: L
索引空间较小,因为你在索引一个表而不是三个表的主键。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则