2011年8月16日 星期二

Mobile Service 資料分類及資料庫存放位置

Mobile Service 是利用 Drupal 所開發出來的平台,Mobile Service 提供後台讓各單位人員可以註冊以及登入至系統發佈新聞等訊息,並且將這些訊息在前台顯示出來,除此之外也提供了校園單位簡介地理位置等資訊。

既然平台是利用 Drupal 所開發,所以要拉取資料庫的資料前,必須先來看一下各個資料存放於哪些資料表中。基本上與之前介紹的位置相似,可參關於Drupal新增content時的資料表變動Map 功能用到的 Drupal 資料 此兩篇介紹。


首先來看一下我對於 Mobile Service 所作的資料分類,目前的資料分類是依照新聞發佈、行事曆 以及部分地圖功能所做規劃。( 這裡為什麼說是部分的地圖功能,原因在於這部分只是存放發佈訊息及活動的位置,完整的地圖功能將包含了各類型單位、公車資訊等 )。




Type
Field
功能說明
building
(
建築物)


name
建物名稱
Floor
建物樓層
introduction
建物簡介
latitude
緯度
longitude
精度
units
(
單位或院所)


atBuilding
所在建物
name
單位名稱
atFloor
所在樓層
introduction
單位簡介
number
單位室碼
phone
單位電話
fax
單位傳真
web
單位網址
type
單位類型(學術、行政)
hasGroup
是否有組別
group
(
組別或系所)
atBuilding
所在建物
name
組別名稱
atFloor
所在樓層
atUnits
所在組別
introduction
組別簡介
number
組別室碼
phone
組別電話
fax
組別傳真
web
組別網址
member
(
成員)


atUnits
所屬單位或組別
name
成員姓名
title
職稱
phone
成員電話(分機)
news
(
新聞)


pUnits
發佈單位或組別
pMember
發佈成員
title
新聞標題
content
新聞內容
date
發佈日期
time
發佈時間
mediaUrl
多媒體檔連結位置
mSource
多媒體檔來源
mediaType
多媒體檔類型
events
(
事件 行事曆用)


pMember
發佈人員
pUnits
發佈單位或組別
title
事件標題
content
事件內容
pDate
發佈日期
pTime
發佈時間
aDate
活動日期
aTime
活動時間
aPlace
活動地點
alatitude
活動地點座標緯度
alongitude
活動地點座標精度
mediaUrl
多媒體檔連結位置
mSource
多媒體檔來源
mediaType
多媒體檔類型


此表為目前規畫在 Drupal 上的資料分類 (請注意這並非資料庫中實際的資料表或欄位 ),目的是為了新聞發佈及行事曆兩項功能,基本的功能都已經在表上有描述,此處將不再敘述,接下來將記錄實際在 Drupal 上的資料庫位置。

目前 Mobile Service 上共有 130 個資料表,同樣的這些資料表大多數是 Drupal 所必須使用;而此處因為有特別為了可以直接拉取資料庫而做分類與設計,所以在位置上較不會分散在各處。

常用到的資料表有 node, node_revisions, node_type, users, users_roles, role, permission, content_type_* 。

users, users_roles, role, permission 這四個資料表可以讓我們取得註冊者與系統權限及 uid 等關聯,並且在資料分類中設計了 member 的類型後,更可以利用 content_type_member.nid 來將各單位的人員與系統帳號做綁定的動作,如此一來,雖然發佈新聞或是其他訊息時系統看的是 uid 以及 系統權限 rid ,但是在前台或是其他自行由資料庫抓取資料的平台時,可以清楚顯示發佈者是哪個單位的成員,並且利用綁定的動作來做行動裝置上的權限控管,方便未來行動裝置上發佈功能的開發。

至於上面表中的各個 type 對應到資料庫中的資料表分別為 content_type_building, content_type_units, content_type_group, content_type_member, content_type_news, content_type_events。而這邊的設計概念十分簡單,由大至小,大的包含數個小的。
建築物 > 單位院所 > 組別系所 > 成員 > 新聞、行事曆
我們不管取得哪個部份的資訊,都可以經由 at* 或是 pMember 這兩個 field 取得更上面層級的資料,經由此步驟就可以一路的追尋回去,取得所在位置、樓層或是相關簡介等,如此也可以在地圖上標示此訊息的發佈位置;當活動資訊內無活動地點的經緯度時,也可以利用活動地點 aPlace 這個 field 來向上追朔取得地標。


和之前所使用的生活資訊平台相比較,經由這樣簡單的設計可以減少建構資料時必須輸入大量重複的資料,也讓使用者也就是訊息發佈者可以減少輸入的資料量,同時也兼顧了部分的關聯問題,以減少需要特定資料時多餘的運算步驟。


至於要如何利用 Drupal 所建立的資料庫,要求特定的資料這邊就不再贅述了,可以參考關於Drupal新增content時的資料表變動Map 功能用到的 Drupal 資料以及配合此表的介紹就可以編寫出需要的 SQL 指令。

0 意見:

張貼留言

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Powered by Blogger