这是另一个问题的后续/后置问题;因为我发现了一个让我遇到新问题的解决方案。
Classes to Entities; Like-class inheritence problems
我们正在构建这个游戏系统,可以这么说;我正在使用Table Per Concrete Type概念来执行继承建模。
我关心的是可扩展性和性能。我相信我之前使用过类似的技术而且它显得相当迟钝,但我不是一个优秀的DBA,我是一名程序员。所以我对这将如何转换为SQL非常陌生。但基本上在我看来,如此多的“链接”查询一起运行将是缓慢而微弱的。我发布了我的架构和实体模型以供参考。如果我能提供更清晰的信息,请询问,因为我真的不确定与“调整”这种方法有什么关系。
alt text http://img46.imageshack.us/img46/1043/database.png
alt text http://img293.imageshack.us/img293/6454/entities.png
样本使用通常如下;
static void Main(string[] args)
{
DataContext db = new DataContext();
Character character = new Character()
{
Name = "First",
Ring = new Mapping.Ring()
};
character.Ring.Keys.Add(
new Random()
{
Dice = 2,
Sides = 30,
});
character.Ring.Keys.Add(
new Measure()
{
Maximum = 100,
Minimum = 0
});
character.Ring.Keys.Add(
new Measure()
{
Maximum = 100,
Minimum = 0
});
db.Characters.AddObject(character);
db.SaveChanges();
foreach (Character c in db.Characters)
{
Console.WriteLine(c.Name);
Console.WriteLine(new string('-', 80));
foreach (Measure k in c.Ring.Keys.OfType<Measure>())
Console.WriteLine(String.Format("{0}/{1}", k.Minimum, k.Maximum));
foreach (Random k in c.Ring.Keys.OfType<Random>())
Console.WriteLine(String.Format("{0}d{1}", k.Dice, k.Sides));
}
Console.ReadLine();
}
答案 0 :(得分:1)
我认为这很大程度上取决于数据库的调整方式,表格中的索引以及数据的范围。
为了真正“证明”一个数据模型,我非常喜欢用大量数据填充表格,并查询它,看看会发生什么,这是验证性能的唯一真正方式,或者缺乏申请。