【问题标题】:Database design for various objects各种对象的数据库设计
【发布时间】:2017-04-13 07:55:19
【问题描述】:

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

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

我想解决办法:

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

  2. 将信息存储在不同的表中 对象:id、标题、object_type、价格 object_params: id, param_title, param_type(integer,text,float,etc.) object_param_values:id_param,id_object,value(text 类型的列)
    优点:非规范化,前端保证当 object_type='flat' 时,只有 flat 的参数显示给用户(在1. 它也是这样工作的)
    缺点object_param_values 中的 value 具有 text 类型,这对速度不利。

【问题讨论】:

  • 查看与我添加的 EAV 标签相关的问题。

标签: mysql database-design


【解决方案1】:

还有第三种选择,使用两张表。

一个表来存储对象的基本信息: id、title、object_type

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

【讨论】:

    猜你喜欢
    • 2010-11-18
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 2011-11-16
    • 2014-02-19
    相关资源
    最近更新 更多