資料變多後,我就思考如何讓資料庫結構更加有擴充性,應付各種題型,我把現有結構丟入後AI之後,如下。
QuestionBank
---
AI講一個建議-用JSON(JavaScript Object Notation)合併所有選項及合併Content,Image。很久沒碰程式設計領域的資料,就直接凹AI 給我範例。
---
ID - 題目唯一ID,Type - 題型,--
Level - 難度,Tags - 標籤,
Content - 題目內容(文字及Latex),
Image - 題目所需圖片連結,
OptA - 選項內容(文字及Latex),
OptB - 選項內容(文字及Latex),
OptC - 選項內容(文字及Latex),
OptD - 選項內容(文字及Latex),
OptE - 選項內容(文字及Latex),
Answer - 正確答案,
Solution - 詳解(文字及Latex)
AI講一個建議-用JSON(JavaScript Object Notation)合併所有選項及合併Content,Image。很久沒碰程式設計領域的資料,就直接凹AI 給我範例。
看完範例後只有滿滿的佩服,心裡OS是「能想出用這種純文字結構來統整龐雜資料的人,腦迴路到底多強大? 」。
來看看,AI 給的範例
單(多)選題
[ { "id": "A","content": "30^\\circ","isFixed": false},
{ "id": "B","content": "45^\\circ", "isFixed": false },
{ "id": "C", "content": "60^\\circ", "isFixed": false },
{ "id": "D", "content": "\\text{以上皆非}", "isFixed": true}]註:isFixed 標記此選項在隨機排序時是否要固定在最後
選項中有圖片
[{ "id": "A","type":"image","content":"URL strings","caption": "一隻坐著的貓"},{ "id": "B","type":"image","content":"URL strings","caption": "一隻坐著的貓"}]
選項有不同計分權重
[{ "id": "A","content": "立即進行心肺復甦術 (CPR)","score": 5,"weight": 1.0},{ "id": "B","content": "先檢查呼吸道,再觀察","score": 3,"weight": 0.6},{ "id": "C","content": "給予止痛藥","score": -2, "weight": -0.4}]
看完後,我立刻理解JSON的結構屬於隨時可擴充、甚至是任意擴充的純文字儲存概念,也就能把原本的content(題目本文),與Image(題目所需圖片連結) 兩欄位合併單一欄位,再進行相對複雜的圖文排版,而不用侷限在傳統「一欄文字 + 一欄圖片」架構。
用現況來說,現在題目版型就是靠 Content,Image,OptA~OptE兜出來的「一欄文字 + 一欄圖片」架構,雖然簡單明瞭,但很難控制版面,也很難製作題組、甚至現在流行的混合題。
同時,對應的前端Form 也只能根據題型-單選、多選、非選 做調整,但都是制式化格式,如下圖所示。
一旦 我選擇單一欄位的題目混圖片的JSON,其範例(文+圖+文)如下,經過程式碼渲染就能產出相應的效果,提升學生閱讀的經驗。
--
[{ "type": "text",
"content": "如圖所示,滑輪質量與摩擦力不計,物體 A 質量為 2kg,物體 B 質量為 3kg。"},{ "type": "image",{ "type": "text",
"src": "ULR ", "caption":"圖說" ,"width":"80%"},"content": "若重力加速度 $g = 10 m/s^2$,試求物體 A 的加速度量值為何?"}]
--
也就是說既然可以用圖片URL,就表示能替換成影片、聲音等多媒體素材,進而擴展成線上英檢。同時,前端Form形式就能更多元化。真要玩的話,透過 Vue.JS 是可以玩到跟Google表單一樣花。
也就是說既然可以用圖片URL,就表示能替換成影片、聲音等多媒體素材,進而擴展成線上英檢。同時,前端Form形式就能更多元化。真要玩的話,透過 Vue.JS 是可以玩到跟Google表單一樣花。
再次聲明,我寫ASP/ASP+/PHP 與 MySQL連線的時間點是民國89年(公元2000年),當時是Server-Side Rendering(SSR)的動態網頁技術,與此同時JSON也還沒出現。
當物理老師之後,光教書及處理學生問題就煩死了,沒空去弄懂Client-Side Rendering / AJAX的動態網頁技術。(謎之音:你到現在 一樣不會教物理啊!!!)
雖然運作模式不同,但對我來說基礎概念是相同的,所以我凹AI,凹得很順手,如下圖所示。
參考資料
1.JSON,https://zh.wikipedia.org/zh-tw/JSON
1.JSON,https://zh.wikipedia.org/zh-tw/JSON
2.Vue.js,https://vuejs.org/