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 意見:
張貼留言