物件型介面
物件型介面
為了更好的理解之後章節的示例,我們先了解一下示例中用到的資料模型。
[資料模型描述方式]
下面是幾個資料表,每個表都應有個作為主鍵的id欄位,是可自動增長的整數型別,即使是關聯表也應定義id欄位作為主鍵。
使用者:
@User: id, uname, phone(s), pwd, name(s), createTm
訂單:(用Ordr而不是Order詞是避免與SQL關鍵字衝突。)
@Ordr: id, userId, status(2), amount, dscr(l)
- status: Enum. 訂單狀態。CR-新建立,RE-已服務,CA-已取消.
訂單日誌:
@OrderLog: id, orderId, tm, action(2), dscr
- action: Enum. 操作型別。CR-建立訂單,PA-付款,RE-完成服務,CA-取消訂單.
介面呼叫日誌:
@ApiLog: id, tm, addr, app, ac, retval&, req(t), res(t)
一個使用者對應多個訂單(通過userId關聯),一個訂單包含多個物件,以及有多個訂單日誌(通過orderId關聯),表示如下:
User 1<->n Ordr (userId)
Ordr 1<->n OrderLog (orderId)
在設計文件DESIGN.wiki中,我們用@表名: 欄位名1, 欄位名2
這樣的格式來定義資料模型。前面講過,通過tool/upgrade.php工具可以把它們建立或更新到資料庫中。
欄位名的型別根據命名規範自動判斷,比如以id結尾的欄位會被自動作為整型建立,以tm結尾會被當作日期時間型別建立,其它預設是字串,規則如下:
| 規則 | 型別 |
| ----------------------------------- | -------------------- |
| 以"Id"結尾 | Integer |
| 以"Price"/"Total"/"Qty"/"Amount"結尾 | Currency |
| 以"Tm"/"Dt"/"Time"結尾 | Datetime/Date/Time |
| 以"Flag"結尾 | TinyInt(1B) NOT NULL |
例如,"total", "docTotal", "total2", "docTotal2"都被認為是Currency型別(欄位名後面有數字的,判斷型別時數字會被忽略)。
也可以用一個型別字尾表示,如 retval&
表示整型,規則如下:
| 字尾 | 型別 |
| -- | ------- |
| & | Integer |
| @ | Currency |
| # | Double |
字串可以指定長度如status(2)
,name(s)
,字串長度以如下方式描述:
| 標記 | 長度 |
|----- | ------------------- |
| s | small=20 |
| m | medium=50 (default) |
| l | long=255 |
| t | text |
為了簡化介面物件到資料庫表的對映,我們在資料庫中建立的表名和欄位名就按上述大小寫相間的風格來,表名或物件名的首字母大寫,表欄位或物件屬性的首字母小寫。
某些版本的MySQL/MariaDB在Windows等系統上表和欄位名稱全部用大寫字母,遇到這種情況,可在配置檔案my.ini中加上設定:
[mysqld]
lower_case_table_names=0
然後重啟MySQL即可。
相關文章
- 物件型介面 / 定製操作型別和欄位物件型別
- 物件導向基礎(2)--抽象類 介面 集合 泛型物件抽象泛型
- 內部類,類修飾符,上轉型物件,多型,介面回撥物件多型
- 物件導向-介面物件
- 物件轉型物件
- 非標準物件介面物件
- COM 物件 和 介面 (轉)物件
- 介面即泛型泛型
- 函式型介面函式
- 介面卡模式(類介面卡 物件介面卡)模式物件
- 介面卡模式(類介面卡,物件介面卡,介面介面卡)模式物件
- TypeScript 泛型介面和泛型類TypeScript泛型
- 物件業務的select介面物件
- 物件業務的追加寫介面物件
- 物件業務的截斷介面物件
- ORACLE物件型別表Oracle物件型別
- 物件導向-多型物件多型
- java之物件轉型Java物件
- 泛型物件的使用泛型物件
- 手寫Spring,定義標記型別Aware介面,實現感知容器物件Spring型別物件
- java 介面,介面的特性,介面實現多型,面向介面程式設計Java多型程式設計
- JS中資料型別、內建物件、包裝型別物件、typeof關係JS資料型別物件
- addEventListener中的EventListener介面物件dev物件
- 物件業務的重新命名介面物件
- 物件業務的修改資料介面物件
- 專案過程中如何使用物件導向的特徵:繼承,封裝,多型,介面物件特徵繼承封裝多型
- 領域物件裡有個屬性的型別是介面,如何用hibernate持久化物件型別持久化
- JAVA物件導向之多型Java物件多型
- Java物件導向--多型Java物件多型
- 時間物件、引用型別物件型別
- java之物件轉型2Java物件
- 【JavaScript】Function型別是物件JavaScriptFunction型別物件
- JavaScript的型別和物件JavaScript型別物件
- 如何講清楚 Java 物件導向的問題與知識?(類與物件,封裝,繼承,多型,介面,內部類...)Java物件封裝繼承多型
- 物件儲存服務中物件業務的非標介面物件
- TypeScript 混合型別介面TypeScript型別
- TypeScript 可索引型別介面TypeScript索引型別
- xlua中lua物件到c#物件的轉型物件C#