用于存储库存项目槽的数据库架构
Database schema for storing the inventory item slot
我正在做一个小型 Web 项目,我想在其中拥有像 RPG 游戏或射击游戏中的用户清单。我想让它尽可能简单。我想要实现的是存储物品的插槽,以便下次加载页面时,物品会保持在正确的位置 position.Items 将有固定的位置,例如,一个步枪插槽,一个头盔插槽.
我应该为此创建什么样的关系和数据库模式?我正在使用 MySQL
到目前为止我有以下架构:
我假设有些物品可以占据几个位置之一。我会创建几个新的 tables:
create table slots (
id int primary key,
name varchar(20) -- 'headgear', 'rifle', 'coin pocket'
);
create table inventory_slot (
item_id int not null,
slot_id int not null,
primary key (item_id, slot_id),
foreign key (item_id) references inventory_item(id),
foreign key (slot_id) references slots(id)
);
每个可能的库存项目在 inventory_slot
中至少有一行,如果允许在多个位置持有同一项目,则同一项目在 inventory_slot
中可能有多行给定用户的库存。
然后修改用户库存table:
create table user_inventory (
id int primary key,
user_id int not null,
item_id int not null,
slot_id int not null,
unique key (user_id, slot_id),
foreign key (user_id) references user(id),
foreign key (item_id, slot_id) references inventory_slot(item_id, slot_id)
);
由于 unique key
,每个用户每个槽位只允许一个项目。这些项目必须引用 inventory_slot
中的一行,以便您知道它们只能存放在已指定为给定项目正常的插槽中。
我正在做一个小型 Web 项目,我想在其中拥有像 RPG 游戏或射击游戏中的用户清单。我想让它尽可能简单。我想要实现的是存储物品的插槽,以便下次加载页面时,物品会保持在正确的位置 position.Items 将有固定的位置,例如,一个步枪插槽,一个头盔插槽.
我应该为此创建什么样的关系和数据库模式?我正在使用 MySQL
到目前为止我有以下架构:
我假设有些物品可以占据几个位置之一。我会创建几个新的 tables:
create table slots (
id int primary key,
name varchar(20) -- 'headgear', 'rifle', 'coin pocket'
);
create table inventory_slot (
item_id int not null,
slot_id int not null,
primary key (item_id, slot_id),
foreign key (item_id) references inventory_item(id),
foreign key (slot_id) references slots(id)
);
每个可能的库存项目在 inventory_slot
中至少有一行,如果允许在多个位置持有同一项目,则同一项目在 inventory_slot
中可能有多行给定用户的库存。
然后修改用户库存table:
create table user_inventory (
id int primary key,
user_id int not null,
item_id int not null,
slot_id int not null,
unique key (user_id, slot_id),
foreign key (user_id) references user(id),
foreign key (item_id, slot_id) references inventory_slot(item_id, slot_id)
);
由于 unique key
,每个用户每个槽位只允许一个项目。这些项目必须引用 inventory_slot
中的一行,以便您知道它们只能存放在已指定为给定项目正常的插槽中。