我将设计MMORPG原型。所以我应该在数据库中存储很多项目。
我想创建一个灵活的数据库,以实现简单的可伸缩性。以防万一不考虑。我认为[模型1]非常适合我的目标。
模型1
CREATE TABLE Unit {
Id bigint NOT NULL PRIMARY KEY
ItemId bigint
}
CREATE TABLE Items {
Id bigint NOT NULL PRIMARY KEY
Type int NOT NULL
ParentItem bigint
Field1 int
Field2 int
Field3 int
}
但我担心,它相当缓慢。 可能[Model 2]更适合我的项目。我不想用它。因为它绑定了我的手用于规模数据库。
模型2
CREATE TABLE Unit {
Id bigint NOT NULL PRIMARY KEY
ContainerId bigint
}
CREATE TABLE Items {
Id int NOT NULL PRIMARY KEY
Field1 int
Field2 int
Field3 int
ContainerId int
SubContainerId int
}
CREATE TABLE Containers {
Id int NOT NULL PRIMARY KEY
}
问题:
是否可以在此类项目中使用[模型1]?
对于大量项目,[模型1]比[模型2]慢多少?
在Items表中计划了大量更新和插入。
PS:抱歉我的英文。我的母语是俄语。
Quassnoi的加法(见评论)
生活中的例子。 该单位有一个袋子类型的物品。包有任何物品。其中一件是带有两种硬币的小袋。
我必须进行3次查询才能获得硬币列表:
SELECT ItemId FROM Units WHERE Id = 1 /* it's a bag */
SELECT Id FROM Items WHERE ParentItem = firs_query_result AND Type = POUCH /* it's a pouch */
SELECT * FROM Items WHERE ParentItem = second_query_result AND (Type = COIN1 OR Type = COIN2) /* coins in my pouch */