本帖最后由 jakbb2003 于 2009-06-17 13:34:49 编辑

解决方案 »

  1.   

    谢谢楼上的朋友“建议你把存放服务信息的表设计成支持树形结构的表,那么套餐和套餐包括的服务就可以用树的父子节点表示”这是我主管的邮件原话,我也理解不懂,可能是要我把数据结构弄成像树形结构那样吧,我的需求是:  这里有一些信息 怎么建立表比较规范合适并且具有可扩展性。信息如下:vip套餐 由各种不同的服务组成
    例如:vip套餐=服务1+服务2+服务3 组成服务的属性有名称 、价格、 服务的属性常量值(这个常量类型不确定)、属性常量值的类型、vip需要记录userid 和购买的服务内容用户服务信息表 需要记录用户购买的服务信息。有购买时间 服务id  过期时间 购买数量  等。在这个用户信息表里边既可以记录vip套餐的信息,也可以记录单独购买某项服务的信息。我迷惑的是到底怎么样建表比较合适。我是这么理解的
    这个树形结构大体是这样Root用户服务信息表
    VIP套餐1  ------------------------(父节点)
      ·服务项目1  --------------------(叶子节点)
         ·属性1 
         ·属性2
         ·属性3
      ·服务项目2
    VIP套餐2  
      ·服务项目3
      ·服务项目4
    单独服务
     ·属性1 
     ·属性2
     ·属性3请教下 这个需求怎么建立表?建几个表合适,我最初建立了3个表 
    一个表是服务项目表
    二个是vip套餐表
    第三个是用来记录购买套餐和服务的表。
      

  2.   

    照你上面的图看,
    实体如下。1. 客户,
    2. VIP套餐
    3. 服务项目
    4. 属性
    5. 客户购买记录建这五个表
      

  3.   


    呃 建这么多表啊? 我只建了三个表 
    一个表是服务项目表
    二个是vip套餐表
    第三个是用来记录购买套餐和服务的表。 客户那里 已经有一个单独的表了 有一个uid 作外键就可以了 
    属性只是 服务项目下的属性而已 比如服务项目的名称 单价等
      

  4.   

    因为看不到你的数据,所以只能猜啊。建议你提供一些样例数据来描述,否则类似的错误还会有,比如不可能知道你已经有用户表了,也不可能猜出来你的属性是些什么。画ER图,然后按照范式设计就行了。VipValue   String   No  Vip值 服务id的字符串集合 例:1;2;3;至少这个已经违反了1NF的要求。
      

  5.   

    今天开完会了领导全盘否定,叫我打杂即可!等他给我表后 贴上来 。主管是Inter公司的 。
      

  6.   

    咦,本来是给ACMAIN_CHM 加了20分的 怎么又没有呢?难道是点击无满意结贴,就不给分了?
      

  7.   


    •增加user表字段,Amount 金币
    Columns Data type Allow NULLs Notes
    amount Int(11) Yes 金币
    服务项目service
    Columns Data type Allow NULLs Notes
    Service_id Int(11) No 服务id
    Name Vachar 255 No 服务名称
    Auth_code Vachar 128 Default null 授权码,用于在程序中,检查用户是否被授权使用服务的代码。并不是所有的服务都有授权码,套餐类型的服务就没有授权码。
    Status Int 11 No 1 - 激活状态
    2 - 无效状态
    Created Datetime No 创建时间
    服务项目计费策略 service_price
    这个表包含了服务的定价策略。每个服务按消耗单位分可分为计次消费和计时消费,按销售方法分可分为单个销售或者打包销售。
    Columns Data type Allow NULLs Notes
    Price_id Int 11 No
    Service Int 11 No 与service表连接的外键'
    Full_price Double No 全价
    Discount Double No 折扣
    Parent Int 11 Default null '表明价格所依赖的上级价格,只有用户认购了上级价格的服务,才能以该价格购买对应的服务。如果该字段为空,表明这是可以独立购买的价格。
    Unit_type Int 11 No 消耗单位,1 - 次,2 - 月,3 - 年。程序按照这个字段计算出用户购买的服务的有效期。
    Pack_size Int 11 No 包装数量。包装是用户购买的最小单位,一个包装可以包含多个消耗单位'
    Effective Datetime No 策略生效日期'
    Expiration Datetime Default null 策略失效日期'
    用户购买服务的订单user_order
    Columns Data type Allow NULLs Notes
    Order_id Int 11 No 订单号
    User Int 11 No
    Created Datetime No
    Changed Datetime Default
    用户订单明细user_order_service
    Columns Data type Allow NULLs Notes
    Pk_order Int 11 No 数据类生成器使用字段,与order字段值等同'
    Pk_price_policy Int 11 No 数据类生成器使用字段,与price_policy字段值等同'
    Order Int 11 No
    Price_policy Int 11 No 所购买的价格策略'
    Quantity Int 11 No
    用户支出明细表user_outgo
    Columns Data type Allow NULLs Notes
    Item_id Int 11 No
    Order Int 11 No
    Amount Int 11 No
    Created Datetime No
    用户服务清单user_service
    这个表包含用户购买过的服务清单。系统从这个清单中获取用户使用服务的授权'
    Columns Data type Allow NULLs Notes
    Pk_user Int 11 No 数据类生成器使用字段,与user字段值等同'
    Pk_service Int 11 No 数据类生成器使用字段,与service字段值等同'
    User Int 11 No
    Stock Int 11 No 该服务剩下的使用次数。如果用户同时也购买了该服务的使用期限,那么在使用期限内,次数不会因为用户的使用而被扣减。
    Effective Datetime Default  使用期限的生效日期'
    Expiration Datetime Default 使用期限的失效日期'
    用户对授权服务的使用量user_service_usage
    Columns Data type Allow NULLs Notes
    Userage_id Int 11 No
    User Int 11 No
    Is_deduct Tinyint 1 No 是否需要减次数'
    Deduct_count Int 11 Default 当需要减次数为真时,这个字段值非空,为要减掉的数值,否则为空'
    Created Datetime No
    这个是后来上头搞的。