mysql效率:自联接与两个表拆分



我只是想从设计、效率和空间的角度来看,什么是更好的选择?自联接还是使用两个表然后联接?

我有一个MySQL数据库,它存储产品设计细节,designer_type可以是company_staff,也可以是某个customer_type

最初我想有两个表,一个叫staff_design,一个叫做customer_design

无论哪种方式,design信息都几乎保持不变,只是如果是客户,则有两个额外的列是员工设计不需要的,一个是staff_designID的外键,另一个则是design_name(用户而非员工可以添加)。这两列都可以为NULL。

因此,如果我设计数据库,使这两个表合并,并且只有一个design表,那么这个表将有3个额外的列,这些列可能经常为NULL:它需要有design_type(指定customerstaff),然后是我上面提到的两个额外列。(design_namestaff_designFK)。

哪种设计更好?

我倾向于单表设计,主要是为了减少硬盘处理(获取两个不同的表,而不是一个)。然后我将不得不使用大量的自联接。

在专业上,什么被认为是更好的方法?预计工作人员将保存数千个设计,而只有高级和需要额外费用的客户才能保存自己的定制设计。因此,员工设计肯定会比客户设计多得多。

由于记录的数量级只有几千,我建议采用单表设计。这将使您的生活更轻松,而且表的大小并不能证明拆分表的优化是合理的。

如果它能让你的生活更轻松,那么如果我很好地理解你的设计,将所有内容合并到一个表中也没什么错。

特别是如果您的Mysql数据库使用Innodb引擎:NULL字段不占用空间(或者可以忽略不计,1位左右)。

这里所拥有的基本上是继承(即类别、子类型、泛化层次结构等)。

在实现它的三种可能方法中,您描述的是"一个表中的所有类"。这并没有错——每种方式都有自己的利弊,这一点似乎适合你的情况。

最新更新