各种对象的数据库设计

时间:2017-04-13 07:55:19

标签: mysql database-design

我有应用程序,用户可以创建/更新有关不同对象(公寓,房间,房屋,土地等)的信息。

每种类型的对象都有不同的参数集。

我看到解决方案:

  1. 将所有信息存储在一个表格中 id,title,object_type,rooms_count,house_floors_count,land_area,flat_area, description, etc..
    优点:快速搜索(因为每列都有正确的数据类型,rooms_count - 整数,说明 - 文字)
    缺点:巨大的非规范化

  2. 将信息存储在不同的表中 对象:id,title,object_type,price object_params:id,param_title,param_type(整数,文本,浮点数等) object_param_values:id_param,id_object,value(类型text的列)

    优点:非规范化,前端保证在object_type='flat'时,只有flat的参数会显示给用户(在1.中,它也会像这样工作)
    缺点value中的object_param_values类型为text,这对速度有害。

1 个答案:

答案 0 :(得分:0)

还有第三个选项,使用两个表。

一个用于存储对象基础知识的表: id,title,object_type

另一个存储参数的表: id,object_id(来自上一个表),参数,数据