Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (中文) » MobiLink - 入门 » MobiLink 技术简介 » 研究 MobiLink 的 CustDB 示例

 

CustDB 数据库中的表

CustDB 数据库的表定义位于 samples-dir\MobiLink\CustDB 目录的特定于平台的文件中。(有关 samples-dir 的信息,请参见示例目录。)

有关 CustDB 表的实体关系图,请参见关于 CustDB 示例数据库

统一数据库和远程数据库都包含以下五个表,不过这些表在两个数据库中的定义稍有不同。

ULCustomer

ULCustomer 表包含一个客户列表。

在远程数据库中,ULCustomer 表包含下面几列:

  • cust_id   保存用于标识客户的唯一整数的主键列。

  • cust_name   长度为 30 个字符的字符串,其中包含客户名称。

在统一数据库中,ULCustomer 还包含以下附加列:

  • last_modified   包含上次修改该行的时间的时间戳。在进行基于时间戳的同步时将用到此列。

ULProduct

ULProduct 表包含一个产品列表。

在远程数据库和统一数据库中,ULProduct 表包含以下几列:

  • prod_id   包含用于标识产品的唯一整数的主键列。

  • price   标识单价的整数。

  • prod_name   长度为 30 个字符的字符串,其中包含产品名称。

ULOrder

ULOrder 表包含一个订单列表,包括有关下订单的客户、接收订单的雇员以及所订购产品的详细信息。

在远程数据库中,ULOrder 表包含下面几列:

  • order_id   保存用于标识订单的唯一整数的主键列。

  • cust_id   引用 ULCustomer 的外键列。

  • prod_id   引用 ULProduct 的外键列。

  • emp_id   引用 ULEmployee 的外键列。

  • disc   包含订单折扣的整数。

  • quant   包含产品定购数量的整数。

  • notes   长度为 50 个字符的字符串,包含订单的注释。

  • status   长度为 20 个字符的字符串,用以描述订单的状态。

在统一数据库中,ULOrder 还包含以下附加列:

  • last_modified   包含上次修改该行的时间的时间戳。在进行基于时间戳的同步时将用到此列。

ULOrderIDPool

ULOrderIDPool 表是 ULOrder 的主键池。

在远程数据库中,ULOrderIDPool 包含下面几列:

  • pool_order_id   保存用于标识订单 ID 的唯一整数的主键列。

在统一数据库中,ULOrderIDPool 还包含以下附加列:

  • pool_emp_id   一个整数列,包含订单 ID 被指派到的远程数据库的所有者的雇员 ID。

  • last_modified   包含上次修改该行的时间的时间戳。

ULCustomerIDPool

ULCustomerIDPool 表是 ULCustomer 的主键池。

在远程数据库中,ULCustomerIDPool 包含下面几列:

  • pool_cust_id   保存用于标识客户 ID 的唯一整数的主键列。

在统一数据库中,ULCustomerIDPool 还包含以下附加列:

  • pool_emp_id   一个整数列,包含用于在远程数据库生成的新雇员的雇员 ID。

  • last_modified   包含上次修改该行的时间的时间戳。

下面的表仅包含在统一数据库中:

ULIdentifyEmployee_nosync

ULIdentifyEmployee_nosync 表仅存在于统一数据库中。它包含如下所示的一列:

  • emp_id   该主键列包含一个代表雇员 ID 的整数。

ULEmployee

ULEmployee 表仅存在于统一数据库中。它包含一个销售雇员列表。

ULEmployee 表包含下面几列:

  • emp_id   保存用于标识雇员的唯一整数的主键列。

  • emp_name   长度为 30 个字符的字符串,其中包含雇员名称。

ULEmpCust

ULEmpCust 表控制将下载哪些客户的订单。如果雇员需要新客户的订单,则插入雇员 ID 和客户 ID 将会强制下载该客户的订单。

  • emp_id   ULEmployee.emp_id 的外键。

  • cust_id   ULCustomer.cust_id 的外键。主键包括 emp_id 和 cust_id。

  • action   一个字符,用于确定是否应该从远程数据库中删除雇员记录。如果雇员不再需要客户的订单,则设置为 D(删除)。如果仍然需要订单,则设置为空。

    这种情况下必须使用逻辑删除,这样,统一数据库能够识别从 ULOrder 表中删除哪些行。一旦下载完删除后,也可以从统一数据库中删除该雇员的 action 字段为 D 的所有记录。

  • last_modified   包含上次修改该行的时间的时间戳。在进行基于时间戳的同步时将用到此列。

ULOldOrder 和 ULNewOrder

这些表仅存在于统一数据库中。它们用于解决冲突,所含的列与 ULOrder 相同。在 SQL Anywhere 和 Microsoft SQL Server 中,它们是临时表。在 Adaptive Server Enterprise 中,它们是普通表和 @@spid。DB2 LUW 和 Oracle 没有临时表,因此 MobiLink 需要能够识别哪些行属于同步用户。由于这些表都是基表,因此如果有五个用户正在同步,则他们每个人都同时在这些表中拥有一行。

有关 @@spid 的详细信息,请参见变量