Web常用工具 二维码美化 在线压缩 JavaScript AI工具汇总网站 ASP.NET控件源码查询 W3CHTML W3SCHOOL 开源中国 51aspx github codeproject SQLBACKUP 几种排序算法比较 SQL中deny权限 MSDN下载 HttpWebRequest类 HTML5 stackoverflow ASP.NET 页生命周期概述 IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述 [SQL Server]视图sys.sysprocesses brnshop学习 SQL视频 Fiddler帮助文档 Sprint.Net SQLServer牛人博客 codeplex IIS官网 IE11 Developer Jquery源码视频上 Jquery源码视频下 Jquery Bugs jquery.miaov.com 正则表达式 Jquery API 1.9 Service Broker Javascript Object中的方法讲解 Microsoft webcast 微信开发接口 ECMAScript5 Underscore Jquery Bugs SQL存储过程事务嵌套 官网SQL事务锁 2345天气插件 Json数据查看 C++ jquery-plugin-validate 博学谷(传智播客) Swift视频 IOS代码论坛 SWIFT设计模式 操作系统下载 AngularJS VueJS ASPNETCORE 前端题库 Node.js ASPNETCORE 腾讯课堂 SwiftUI SwiftUI疑问解答 ADO.NET SMO 数字化企业网 Unicode码查询 Redis使用文档 .NET 微服务:适用于容器化 .NET 应用程序的体系结构 .NETCore5.0微软官方文档 CSS3.0 在 ASP.NET Core 中配置 Windows 身份验证 Maven使用教程 Maven Repository Thymeleaf Thymeleaf中文CSDN Spring官方文档 Spring中文文档 SpringBoot SpringData SVG在线设计工具 SVG教程01 SVG教程02 fontawesome图标库 mybatis官网 mybatis-spring中文 mysql教程 python教程 python的scrapy教程01 python的scrapy教程02 VS开发python xpath教程 腾讯向量数据库教程 JSZip浏览器内存中创建文件与文件夹 axios的使用文档 SheetJS(JS操作excel)的使用文档

huaan011

 

动态表单数据库设计

需求:

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

 

 

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

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

 

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

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 --是否必填 
 )

 

proidpronamehtmltypeisneed 
p001型号text0
p002cputext0
p003ramselect0
p004diskselect0

 

 

 

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

 

 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) 
 )

 

proidentityprovalue
p001e001联想扬天V45
p002e001AMD5200
p003e001金士顿
p004e001wd500g
p001e002HP450
p002e002INTEL458
p003e002黑金刚
p004e002wd320g

 

其实也可以这样理解: 

y_property 这个表就是一个类

 

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

 

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

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

 

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

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

 

第一次写技术blog 感觉表达不是很清楚,。希望大家能看懂,看不懂的地方给我指出来吧

posted on 2012-09-16 07:41  华安  阅读(713)  评论(0编辑  收藏  举报

导航