zoukankan      html  css  js  c++  java
  • 动态属性 的简单思考

    动态属性表

    我们最常见到的应该算是论坛了吧。

    现在的论坛很多会有房产版块。然后房产的贴子会具备一些属性。

    比如小区,几房几厅,但并不是所有的帖子都需要这个。 未来用户也可能自己定义一些类型的属性。

    我的最基本设计是

    如果是简单的二级结构的话我们采用两个表

    Attribute
        ID
        Name                名字 比如 小区位置
        DisplayOrder        (排序id)
        ControlType         (某种类型) 用来前台控制的时候显示出dropdownlist checkbox 或者是ColorPicker等等
        
    AttributeItem
        ID
        AttributeID
        Name                 
        DisplayOrder

    AttributeValues
        ID
        AttributeItemID     XX小区的id了
        PostID             (某个主要的表的id 论坛就是主题ID了如果是产品就是ProductId了...)


    这样一个Attribute就是一个属性了。比如颜色,AttributeItem就有红色蓝色绿色 AttributeValues不关联到具体的颜色了

    然后如果是一个比较大的系统比如论坛, 就需要对某些Attribute进行归类了 归到某一个版块,当这个版块发贴子的时候这个相关的 Attribute就会显示出来让用户可以选了。

    但是当用户想自己添一些东西的时候呢? 比如 价格 上面的结构就不太合适了. 因为你不太可能把所有的价格都给定义了


        
    动态属性表

    Attribute       
        ID
        Name                 
        DisplayOrder
        Type (int or string decimal  ...)

    AttributeDefaultValue
        AttributeID
        DefaultValue
        DisplayOrder
        
    AttributeValues (这边是多对多的)
        ID
        AttributeID     
        PostID          (某个主要的表的id 论坛就是主题ID了如果是产品就是ProductId了...)
        NumberValue    (decimal类型, 将Datetime等等转成number类型的)
        StrValue      

    如果更进一步的话就是 AttributeValues 变成了

    AttributeStringValues
        ID
        AttributeID     
        PostID          (某个主要的表的id 论坛就是主题ID了如果是产品就是ProductId了...)
        StrValue      

    AttributeDecimalValues
        ID
        AttributeID     
        PostID          (某个主要的表的id 论坛就是主题ID了如果是产品就是ProductId了...)
        DecimalValue

    AttributeDateTimeValues
    ....
        


    这样 Attribute哪就是 Color AttributeDEfaultValue就有 red green blue
    而 AttributeValues哪边就是填直接的值了

    好象这个结构叫EAV.

  • 相关阅读:
    线段树优化dp——牛客多校第一场I(好题)
    字符串dp——牛客多校第五场G
    凑出和相等的k组数,玄学结论——hdu6616
    主席树/线段树模拟归并排序+二分答案(好题)——hdu多校第4场08
    思维题+贪心——牛客多校第一场C
    线性基算贡献——19牛客多校第一场H
    俞敏洪语录
    睡眠长短决定寿命!人每天应该睡多少小时
    Java程序员从笨鸟到菜鸟之(三十一)大话设计模式(一)设计模式遵循的七大原则
    spring源码剖析(五)利用AOP实现自定义Spring注解
  • 原文地址:https://www.cnblogs.com/lovebanyi/p/1723501.html
Copyright © 2011-2022 走看看