跳转至主要内容

数据库结构

此章节将讲解 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数据集插入时间用于显示商店创建时间
benefitMEDIUMTEXTJSON 序列化处理后的盈利分配

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 NULLBukkit 内的世界名称
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

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

项目名称数据类型默认值说明
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
数据INT UNSIGNED NOT NULL数据 ID(即 data_id
buyerVARCHAR(36) NOT NULL交易者的 UUID,实际上应该如此,因为参与交易的玩家既可能是买家,也可能是卖家
typeVARCHAR(32) NOT NULLShopType 的枚举名称
amountINT NOT NULL购买数量
moneyDECIMAL(32,2) NOT NULL购买总花费
tax_amountDECIMAL(32,2) NOT NULL0此次购买征收税费

log_transaction

TODO

log_changes

TODO

log_others

TODO