三張表,幾句話,把對帳單問出來
這一頁裡有一個真的資料庫,就在你的瀏覽器裡跑,不用安裝、不用帳號,你打的任何東西都不會被送出去。資料全是假的,照社宅代管費對帳單的樣子做的。你按按鈕跑跑看,改壞了按「重設資料」就回來。
怎麼用:從第 1 題往下按「跑跑看」,看結果跟中文問題對不對得上。看懂了再去第 8 題自己改句子;寫不出來就把第 9 題的提示詞貼給 AI,讓它寫、你驗收。
不用背語法。你要學的只有一件事:資料分成幾張表放好之後,很多本來要翻半天的問題,變成一句話。
資料庫載入中……
01三張表長什麼樣
對帳單今天是「一筆一區塊、一個營業處一個分頁」。這裡把同一份資料拆成三張表,一件事只寫一次:案件的錢在案件表、案件歸誰在歸屬表、每家的比率在分潤表,三張表靠媒合編號互相指過去。
案件表 每月從政府清冊搬進來,一列一案一月
表格可左右滑動
歸屬表 一件案子第一次出現時填一次
表格可左右滑動
分潤表 一家一列
媒合編號照真實格式虛構(五泰+縣市+代碼+流水號),金額、比率、地址、營業處名稱全是假的。案件表裡 115.05 有兩件在歸屬表找不到,那是故意留的,第 3 題會用到。
02練習題(第 1 至 7 題)
03第 8 題|自己問一句
把上面任何一題的句子改一改:換營業處、換月份、改成弱勢戶、多加一個條件。錯了會有紅字,不會壞掉任何東西。
04第 9 題|讓 AI 幫你寫
你負責用中文講清楚要什麼,它負責寫。把下面整段連同你的問題貼給 AI,它回的 SQL 貼到第 8 題執行;結果對不對,你看得出來。
我有一個 SQLite 資料庫,三張表如下(表名與欄名都是中文,直接照用):
案件(媒合編號 文字、月份 文字、縣市 文字、弱勢戶 文字「是」或「否」、媒合費 整數、代管費 整數、期數 文字)
一列是「某一件案子在某一個月」。月份是民國年加月,寫法固定像 '115.04'、'115.05';縣市的值只有「臺北」「新北」「桃園」(臺是這個臺);期數的值是 '4'、'4.1'、'5'。媒合費只在案子第一個月有值,之後是 0;代管費每個月都有。
歸屬(媒合編號 文字、營業處 文字、物件地址 文字)
一件案子一列,記它歸哪個營業處。注意:有些新案在歸屬表裡還沒有列,用一般 JOIN 會把它們靜靜漏掉;如果問題要把它們算進去,用 LEFT JOIN。
分潤(營業處 文字、媒合費比率 小數、代管費比率 小數)
一家一列。營業處應收 = 案件.媒合費 × 媒合費比率 + 案件.代管費 × 代管費比率。
規則:只寫一段 SELECT 查詢,不要 UPDATE 或 DELETE;欄名用中文;結果欄位取中文別名;先用一句話講你打算怎麼組這三張表,再給 SQL。
我的問題是:(把你的問題寫在這裡)
05設計得好不好,就這三句話
01
一件事只寫一次
比率只寫在分潤表。第 7 題你改一列,全部對帳單就跟著變。
02
每一列要有身分證
三張表靠媒合編號互相指過去,不拿地址或名字當識別,那些會打錯、會有兩種寫法。
03
一格只放一件事
欄名也只有一種寫法:「媒合費/開發費」有八種寫法,在電腦眼裡就是八欄。
順序不能反。先盤點、再清洗、再定表格,最後才選資料庫與部署。這一頁的三張表是「定表格」那一步的樣子,不是叫你現在去建資料庫。你手上的真資料要先過前面兩步。
資料庫引擎:sql.js(SQLite 編譯成 WebAssembly,MIT 授權)。一切只在你的瀏覽器裡發生,關掉分頁就沒了。