MySQL Workbench - 规范化数据列表

时间:2014-07-22 21:25:53

标签: mysql database vb.net winforms database-design

关于该计划

请原谅这个含糊不清的标题,但我对mySQL和数据库并不熟悉。我是VB.NET的开发人员,需要创建一个连接数据库的程序。该程序是游戏的指南,当您选择任务时,该程序的一部分会为您提供下一个目标的指示。例如,从应用程序(在WinForms中制作)中,您选择" 任务"从组合框控件中,将根据数据库中的目标填充文本框。另一个例子可以显示如下:

你选择" 第一个Misson "来自Combo-Box控件。

文本框控件现在按顺序包含 a 数字列表,如下所示:

  1. 找到John。
  2. John要求你找到武器
  3. 将武器交给约翰
  4. 帮助约翰击退怪物
  5. 约翰要你用魔药治疗他
  6. 帮助John在隧道尽头到达门户网站
  7. 与John谈论你的奖励
  8. 现在,问题是如何使用数据库显示上面的列表?我正在阅读规范化;但是,我仍然没有看到如何做到这一点。

    这是应用程序的一个示例(只是模拟,但非常相似):

    enter image description here

    现在说用户从位于应用程序顶部的组合框中选择了 misson 。该应用程序将填充如下:

    enter image description here

    通过规范化的想法

    我知道我可以创建两个单独的表格,其中包含与misson相关的数据。例如,我或许可以创建一个名为" Stages" 的表,以及一个名为" Missons" 表,但是我看到这个效率低下,更不用说填充数据库本身需要很长时间。我很快发现你不能(显然)将列表存储在一个单元格中。因此,作为一名程序员,而不是使用数据库的人,我感到非常沮丧。

    (如果它有所帮助,我也可以改变从数据库中检索数据的应用程序,以允许以不同的方式显示列表。)

    整体问题

    可能有"解决方案"解决这个问题,但我不知道该怎么做。我不明白你如何使用数据库显示这些数据。我了解如何连接数据库并使用查询检索数据,而不是列表。此外,对于像我这样的新手,我会非常感谢一个精心设计的答案。

2 个答案:

答案 0 :(得分:1)

您可能应该阅读实体关系

实体是数据库用语,例如gamemissionrequirementplayer(一个人)。

关系是数据库用语,如

之类的语句
  1. 每个game中都有一个或多个mission
  2. 每个mission中都有一个或多个requirement,按顺序显示
  3. 零个或多个player可以播放每个game
  4. rdms中的每个都是特定实体的实例集合。因此,例如,您将拥有一个requirement表,它将记录每个需求的以下信息,每个表位在表格的各行中,例如

    game_id     the game for which this is a requirement
    mission_id  the mission for which this is a requirement
    requirement_ordinal  1,2,3,4 etc for which requirement in sequence this one is.
    description  the text describing the requirement: "Speak to John about normalizing your rewards."
    

    您可以声明前三个项目的特定组合唯一标识每个requirement,也就是说(game_idmission_idrequirement_ordinal)是{em}主键表示requirement表。

    MySQL Developer和MS Access等桌面应用程序具有图形设计工具,可以让您在图表中绘制这些内容。这是一篇文章。 http://docs.oracle.com/cd/A87860_01/doc/java.817/a81358/05_dev1.htm这种实体关系建模业务可以非常精细和深奥,所以要小心不要太深入。

    全力以赴是数据库设计的意义所在。我不能为你设计这整件事,但我可以为你提供一些术语和概念框架,帮助你弄清楚如何搜索它。

答案 1 :(得分:1)

从我读到的内容来看,您似乎主要依赖于数据库关系。别担心!当你想要一个"列表"在数据库中,这意味着您正在寻找一对多关系或多对多关系。这是一个brief tutorial,解释了这些类型的关系之间的差异。

数据库设计的第一步是定义您的实体(即您的表格)。通常,您的实体通常是您业务问题的主要名词。在这种情况下,您显然拥有以下实体(表格):MissionObjective。表单上显示的唯一其他数据是任务位置的文本框和任务要求的文本框。这两个字段都可以是Mission表的单个属性。

下一步是定义您的实体关系。您可以按如下方式定义关系:

  • Mission有一对多Objectives
  • Objective属于一个Mission

最后,让我们列出我们已知的属性:

  • Mission有一个名称(文字)
  • Mission有一个位置(文字)
  • Mission有一项要求(文字)

现在我们可以创建一个基本的数据库模式。所以。这会是什么样的?

enter image description here

每张桌子都有自己的primary key,由上图中的关键图片表示。主键是一行数据的唯一标识符,通常用整数表示。 Objective表还有一个foreign key,即missionID字段。这就是在这些表之间定义一对多关系的方式。

这样,如果我们使用missionID 1创建Mission,我们可以将此missionID分配给许多Objectives。就像一个列表,但在关系数据库的语法中。见下图:

enter image description here

enter image description here

为了一次检索有关两个实体的信息,您可以使用JOIN查询。希望这有帮助!