码迷,mamicode.com
首页 > 数据库 > 详细

SQL反模式学习笔记8 多列属性

时间:2014-10-13 13:06:49      阅读:151      评论:0      收藏:0      [点我收藏+]

标签:style   使用   strong   sp   2014   on   line   bs   size   

2014-10-13 10:32:12

目标存储多值属性

 

反模式创建多个列。比如一个人具有多个电话号码、座机号码、手机号码等。          

      1、查询:多个列的话,查询时可能不得不用IN,或者多个OR;

  2、添加、删除时确保唯一性、判断是否有值:这些都很麻烦;

  3、字段的列数无法确定具体数量。

 

如何识别反模式:当出现以下情况时,可能是反模式

     1、应该支持的动态列的数量是多少?

     2、如何才能在SQL查询中同时查询多列?

 

合理使用反模式

  在默写情况下,一个属性可能有固定数量的候选值,并且他们的存储位置和顺序都是固定的。这样的话,可以使用反模式。

 

解决方案:创建从属表,仅使用一列来存储多值属性。

             在从属表中定义一个外键,将这个值和目标表中的主键Id关联起来。

 

结论:将具有同样意义的值存储在同一列中。

SQL反模式学习笔记8 多列属性

标签:style   使用   strong   sp   2014   on   line   bs   size   

原文地址:http://www.cnblogs.com/SavionZhang/p/4021706.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!