数据库设计中的反模式与解决方案
在数据库设计领域,存在一些常见的反模式,它们看似能解决问题,但实际上会带来更多的麻烦。本文将详细介绍多列属性(Multicolumn Attributes)和元数据 Tribbles(Metadata Tribbles)这两种反模式,以及相应的解决方案。
1. 多列属性反模式
1.1 识别多列属性反模式
 如果项目的用户界面或文档描述了一个可以分配多个值的属性,但该属性被限制为固定的最大数量的值,这可能表明正在使用多列属性反模式。另外,当听到以下语句时,也可能暗示该反模式的存在: 
 - “我们需要支持的标签的最大数量是多少?” 
 - “如何在 SQL 中同时搜索多个列?” 
1.2 反模式之间的关联
Jaywalking 和多列属性反模式有一个共同点:它们都是为了存储可能有多个值的属性而提出的解决方案。Jaywalking 反模式与多对多关系有关,而多列属性反模式在本章中涉及更简单的一对多关系。需要注意的是,这两种反模式有时会用于这两种类型的关系。
1.3 反模式的合理使用场景
在某些情况下,属性可能有固定数量的选择,并且这些选择的位置或顺序可能很重要。例如,一个给定的 bug 可能与多个用户账户相关联,但每个关联的性质是独特的。可以在 Bugs 表中定义三个普通列来存储这三个属性。虽然这样做可能会有一些缺点,但在大多数情况下可以接受,因为这些列更可能被单独使用。
1.4 解决方案:创建依赖表
最佳解决方案是创建一个依赖表,其中包含一个用于多值属性的列。将多个值存储在多行中,而不是多个列中。同时,在依赖
 
                       
                           
                         
                             
                             
                           
                           
                             超级会员免费看
超级会员免费看
                                         
                   订阅专栏 解锁全文
                订阅专栏 解锁全文
                 
             
       
           
                 
                 
                 
                 
                 
                
               
                 
                 
                 
                 
                
               
                 
                 扫一扫
扫一扫
                     
              
             
                   1万+
					1万+
					
 被折叠的  条评论
		 为什么被折叠?
被折叠的  条评论
		 为什么被折叠?
		 
		  到【灌水乐园】发言
到【灌水乐园】发言                                
		 
		 
    
   
    
   
             
            


 
            