1. 程式人生 > >BeX5開發中MySQL視圖使用的一個小問題

BeX5開發中MySQL視圖使用的一個小問題

bex5開發中mysql視圖使用的一個小問題

問題

數據操作中的查詢是極端重要的,使用頻繁。MySQL數據庫中視圖概念的存在十分類似於微軟Access小型關系數據庫中的查詢(二級考試重點)。視圖的存在極大減小了數據表的創建數量,而且還有更為高級的運用技巧。本文介紹在基於起步科技的BeX5平臺上使用MySQL數據庫中視圖時反向生成本體時註意的一個小問題。


MySQL數據庫中表在BeX5平臺開發中對應於“物理表”概念,但是為了增強軟件開發中數據層的靈活性(軟件需求階段的實體結構不是一下百分之分確定的;有時需要不斷調整),平臺引入了本體的概念。


實際開發中,一般需要先創建本體,再由本體生成物理表。但是,有時在已經存在物理表的情況下,也需要由物理表反向生成本體。


上面提到了視圖(相當於ACCESS的選擇查詢)的重要性;但是,要想在BeX5平臺開發中使用視圖技術,則必然需要和本體打交道。這就需要由視圖反向生成本體。


第一,在MySQL中創建視圖是比較簡單的,如下例:

CREATE VIEW v AS mv_homepage_person_view
SELECT a.fID,a.fLegCode,a.fCaseName,a.fBeginDate,a.fWho,b.fPersonName,c.fEndDate
FROM MV_LegInfo a,MV_Person2 b,MV_Penalty2 c
where a.fLegCode=b.fLegCode and b.fLegCode=c.fLegCode


上述視圖一旦保存,便生成MySQL中的一個物理表(這一點與Access的生成表查詢是一致的)。


第二,在平臺端即可由上述由視圖創建的表反向生成平臺開發要求的本體。


此過程中,許多初次使用這個功能的同學往往在創建上面視圖時忽略了字段a.fID的選擇,而這個字段在默認的平臺生成的本體中是擔當主鍵作用的,而且其默認值為guid()。如果不選擇這個字段,則創建UI2端.W文件時引用此本體對應的ACTION必然出現錯誤(提示大致內容是缺少fID字段)!


解決辦法


經過上面分析,解決上述問題的辦法就很簡單了。但是,要註意兩個小問題:


(1)在上面創建視圖時一定要選擇某一個表的fID字段(其實也未必一定是這個字段,只要是直到主鍵作用的字段理論上講都可以--但後面的guid()函數很可以不再適合了,需要根據需要靈活表達)。


(2)在反向生成本體後,一定要修改一下“主鍵關系”,類似於下圖:


技術分享


點擊上面的“主鍵關系”後在彈出的對話框中選擇你創建視圖時選擇的主鍵即可。當然,在此高度建議使用默認的fID作為主鍵。這就要求生成視圖的子表中要提供fID字段(這個是平臺默認支持的)。


之後的其他操作便不再贅述。盡管視圖生成的子表是“死”的,但是由於創建視圖的create view語句可以輕松修改,即可以根據開發需要隨時創建需要的這種臨時表;所以,視圖的應用在數據庫端是高頻的。相應地,在BeX5平臺上由視圖反向生成本體的操作也會是高頻的。


本文出自 “青峰” 博客,請務必保留此出處http://zhuxianzhong.blog.51cto.com/157061/1943409

BeX5開發中MySQL視圖使用的一個小問題