筋斗云接口编程 / 对象型接口

对象型接口

为了更好的理解之后章节的示例,我们先了解一下示例中用到的数据模型。

[数据模型描述方式]

下面是几个数据表,每个表都应有个作为主键的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),字串长度以如下方式描述:

标记长度
ssmall=20
mmedium=50 (default)
llong=255
ttext

为了简化接口对象到数据库表的映射,我们在数据库中创建的表名和字段名就按上述大小写相间的风格来,表名或对象名的首字母大写,表字段或对象属性的首字母小写。

某些版本的MySQL/MariaDB在Windows等系统上表和字段名称全部用大写字母,遇到这种情况,可在配置文件my.ini中加上设置:

[mysqld]
lower_case_table_names=0 

然后重启MySQL即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值