【问题标题】:Database Design ~ have no idea where to start数据库设计~不知道从哪里开始
【发布时间】:2012-07-25 04:03:56
【问题描述】:

我有一些事情让我完全困惑,我不知道如何将这么多数据存储在数据库中。下面我将准确解释我认为我需要在数据库中存储什么以及我打算如何使用这些数据(以有效地存储它)。

好的,所以。我在一个网格上有大约 40 个点。我称它们为“对象”。它们具有与它们相关的信息,例如坐标 (x,y)、ID、编号、资源,然后是许多其他对象以及在网格上“保护”该点的数量。有超过 100 种不同类型的单位可以防守这一点。这些单位可以由任意数量的玩家拥有。 ID 和号码可以很容易地相互派生(因此可能不需要存储两者)。

我需要做的是,每次我扫描这些点时存储所有这些信息,同时我正在扫描它们。然后,我需要将这些信息从数据库中取出,以创建玩家单位随时间变化的图表,以查看它是增加还是减少。我还想绘制随着时间的推移对象的总防御,以跟踪总体变化情况。

我扫描这些物体的频率可能会有所不同,甚至最多每分钟一次。我什至无法想象如何将所有这些信息存储在数据库中。

感谢任何帮助!提出您需要的任何和所有问题。我知道这是一堵文字墙,但请阅读!

编辑:网格上的对象数量可以随时改变。我们可以得到一个,也可以失去一个。

【问题讨论】:

    标签: database database-design


    【解决方案1】:

    真正的出发点是了解实体关系建模。尽管您的要求对您来说看起来非常独特,但就实体关系模型而言,它们已经过时了。基本上 都是关于重要对象之间关系的类型。了解一对一、一对多和多对多关系。实体模型是开始的地方,一些工具甚至可以让你生成表格。一旦您了解给定关系如何转换为关系数据库模型,您就可以开始了。例如,一支球队有许多棒球运动员。所以这是一对多的关系。一旦你明白了这一点,就会更容易理解为什么你需要在表中使用外键,以及每行唯一的 id 等。在构建表时,请记住先对关系建模,然后再对所有属性建模。

    另一种方法是首先设计您的对象模型,例如使用 UML。仍然是关于关系、继承、组合等的,这些也将转化为数据库设计。但是如果你想在数据库之外进行设计,那么实体关系建模是最好的选择。

    【讨论】:

    • 谢谢!我以前听说过它,但是对于我的(简单的,或者我认为很简单的)任务来说,这似乎工作量太大了。我去看看!
    • 你需要看几个例子。您可以从一个表开始,points_table 包含您所描述的内容,例如 (x,y) 等,但是当它指向不仅仅是一个字段的内容时,您需要另一个表。但是你可以用一张桌子做很多事情。
    • 您可以对列等进行求和,因此一旦您将数据输入数据库,它就非常强大。我建议您首先设置 points_table 并将其与另一个表相关联以开始使用。
    • 在添加更多内容之前先让查询工作以进行创建、更新等。
    • 顺便说一句,您是否考虑过使用 Ruby On Rails 来完成您的工作。它使使用数据库变得轻而易举。