動態表單數據庫設計


需求:

能夠根據數據庫在界面動態顯示表單,包括表單類型、名稱等,並且必須提供 添加新表單,修改表單等功能。

 

 

為了滿足客戶不斷的需求變化,有時候需要為某商品增加、修改、刪除、屬性,這樣的話以往的數據庫表就很難實現,

因為表的字段是定死了 如果你需要增加一個屬性的時候 ,就必須修改表,聽說這是不允許的~~。

 

所以我們要設計一個靈活的數據庫 下面以電腦設備為例:

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  與其他表關聯,在界面就可以提供下拉列表顯示,選擇)

 

 這樣下來的話就能對電腦商品添加屬性了。

接下來的任務就是做一個工程實現界面的動態表單了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM