zoukankan      html  css  js  c++  java
  • 动态表单数据库设计

    需求:

    能够根据数据库在界面动态显示表单,包括表单类型、名称等,并且必须提供 添加新表单,修改表单等功能。

    为了满足客户不断的需求变化,有时候需要为某商品增加、修改、删除、属性,这样的话以往的数据库表就很难实现,

    因为表的字段是定死了 如果你需要增加一个属性的时候 ,就必须修改表,听说这是不允许的~~。

    所以我们要设计一个灵活的数据库 下面以电脑设备为例:

    pc 现有属性 name cpu ram disk 现在我们要为pc添加一个 mainboard 属性。

    既然必须提供增加表单,那么我们创建表的时候就不能以cpu ram disk 为PC表的列名, 能够修改的话只能是值

    所以应该建立以个属性表 来保存这些值

     create table y_property(
     proid varchar2(16) primary key,
     proname varchar2(64),--属性名称
     htmltype varchar2(64),--界面类型
     isneed  number --是否必填 
     )

    proid proname htmltype isneed 
    p001 型号 text 0
    p002 cpu text 0
    p003 ram select 0
    p004 disk select 0

    然后要建立以个表来保存这些电脑属性的值

     create table y_provalues(
     proid varchar2(32)  , --属性id
     entity varchar2(32) , --实例id
     provalue varchar2(1024) ,--属性值
     constraints pro_fk_proid foreign key (proid) references  y_property(proid),
     constraints provalues_pk primary key (proid,entity) 
     )

    proid entity provalue
    p001 e001 联想扬天V45
    p002 e001 AMD5200
    p003 e001 金士顿
    p004 e001 wd500g
    p001 e002 HP450
    p002 e002 INTEL458
    p003 e002 黑金刚
    p004 e002 wd320g

    其实也可以这样理解: 

    y_property 这个表就是一个类

    y_provalues 这个表就是 y_property 这个类的实例。entity属性就是实例编号,就是一个实际存在的产品编号。

    另外我们还可以在这个基础上面拓展其他的表使其功能更为丰富,

    如 电脑档次表、cpu表(这样的话我们就可以y_provalues中的provalue  与其他表关联,在界面就可以提供下拉列表显示,选择)

     这样下来的话就能对电脑商品添加属性了。

    接下来的任务就是做一个工程实现界面的动态表单了

  • 相关阅读:
    day01--计算机硬件基础笔记
    22 Jun 18 Django,ORM
    21 Jun 18 Django,ORM
    20 Jun 18 复习, mysql
    20 Jun 18 Django,ORM
    19 Jun 18 复习, 正则表达式
    19 Jun 18 Django
    15 Jun 18 复习, shutil模块
    15 Jun 18 Django
    14 Jun 18 复习, form表单
  • 原文地址:https://www.cnblogs.com/soundcode/p/4379363.html
Copyright © 2011-2022 走看看