Skip to main content

数据库结构

此章节将讲解 QuickShop-Hikari 的数据库存储格式的实现细节。

数据表​

该部分解释了 QuickShop-Hikari 创建的数据库表。
除非特别注明,表内默认的 qs_ 即为表前缀。
若要查找每个表的最新代码定义,请参阅:DataTables.java

数据​

此数据表存储此服务器上的所有现有存储数据或已删除但仍以特定形式引用的存储数据,并且不包含坐标信息。
无论如何,数据记录在创建后都不应被修改,直到它被删除。
对商店的任何新更改都应创建一个新副本,将更改应用于该副本,并将其作为新记录插入。

基本为写时拷贝。

仅当没有任何表引用其数据记录时,才会从数据库中删除数据记录 data_id.

列名数据类型默认值说明
idINT UNSIGNED Primary Key自动递增记录 ID(又叫 data_id)
ownerVARCHAR(36) NOT NULL无店主个人ID(又叫UUID)
itemTEXT NOT NULL无该商店条目经过 YAML 序列化的 ItemStack
typeINT NOT NULL0商店类型 ID,表示商店类型
currencyVARCHAR(64)NULL该商店条目使用的货币名称。 若使用 Vault 或不受支持,则为 NULL
priceDECIMAL(32,2) NOT NULL无该商店条目中每份物品的价格
unlimitedBIT NOT NULL0用于表示该商店是否为无限收购/出售,0 表示有限,1 表示无限
hologramBIT NOT NULL0表示商店展示物品的暂停状态,0 表示跟随全局设置,1 表示禁用
tax_accountVARCHAR(36)NULL税收账户的 UUID,若非空,则税收将会汇入指定账户
permissionsMEDIUMTEXT空 Json显示商店玩家权限组的覆写状态,序列化为 JSON 格式字符串
extraLONGTEXT空 Yaml用于存储 QuickShop Hikari 的实验性设定或其他插件的持久化数据
inv_wrapperVARCHAR(255) NOT NULL无该商店条目使用的 InventoryWrapper 独立 ID
inv_symbol_linkTEXT NOT NULL无用于传递至 InventoryWrapper 的界面标识符,用于定位界面
create_timeDATETIME NOT NULL数据集插入时间用于显示商店创建时间
benefitMEDIUMTEXT无JSON 序列化处理后的盈利分配

shops​

该表用于存储商店数据映射,因此商店 ID 不会在商店数据变化时变化。
多个 shop_id 可以对应同一个 data_id。

列名数据类型默认值说明
idINT UNSIGNED Primary Key自动递增记录 ID(即 shop_id)
data_idINT UNSIGNED NOT NULL无数据记录 ID(即 data_id)

shop_map​

此表用于以 Bukkit 映射的形式将商店位置存储至 shop_id 中。 另外,这也是将商店载入世界的关键记录。

列名数据类型默认值说明
worldVARCHAR(32) NOT NULL无Bukkit 内的世界名称
xINT NOT NULL无商店的实际 X 轴位置
yINT NOT NULL无商店的实际 Y 轴位置
zINT NOT NULL无商店的实际 Z 轴位置

messages​

该表用于存储离线消息。

列名数据类型默认值说明
idINT UNSIGNED Primary Key自动递增记录 ID
receiverVARCHAR(36) NOT NULL无接收方的 ID
timeDATETIME数据集插入时间消息创建时间
contentMEDIUMTEXT NOT NULL无序列化的 Adventure Component

metadata​

此表用于存储元数据,如数据库结构版本。

列名数据类型默认值说明
keyVARCHAR(255) NOT NULL Primary Key无键
valueLONGTEXT NOT NULL无值

player​

该表用于存储玩家数据,如客户端语言。

列名数据类型默认值说明
uuidVARCHAR(36) NOT NULL Primary Key无玩家的 UUID
localeVARCHAR(255) NOT NULL无玩家客户端使用的语言
cachedNameVARCHAR(255) NOT NULL无玩家最近的用户名

external_cache​

该表用于缓存网页界面的商店空间/库存,或其他纯数据库应用的内容。

Column Name数据类型默认值说明
shopINT UNSIGNED NOT NULL Primary Key无商店 ID(即 shop_id)
stockINT NOT NULL无商店库存
spaceINT NOT NULL无商店空闲位置

log_purchase​

该表记录了服务器上所有的历史交易记录。

列名数据类型默认值说明
idINT UNSIGNED Primary Key自动递增记录 ID
timeDATETIME NOT NULL数据集插入时间交易创建的时间
shopINT UNSIGNED NOT NULL无商店 ID(即 shop_id)
dataINT UNSIGNED NOT NULL无数据 ID(即 data_id)
buyerVARCHAR(36) NOT NULL无交易者的 UUID,实际上应该如此,因为参与交易的玩家既可能是买家,也可能是卖家
typeVARCHAR(32) NOT NULL无ShopType 的枚举名称
amountINT NOT NULL无购买数量
moneyDECIMAL(32,2) NOT NULL无购买总花费
tax_amountDECIMAL(32,2) NOT NULL0此次购买征收税费

log_transaction​

待续

log_changes​

待续

log_others​

待续