数据库架构关系设计

时间:2016-05-14 07:26:59

标签: sql sql-server database database-design

enter image description here

你好,

我是数据库设计的新手,我正在尝试为模型设计一个非常简单的模式。

只是想知道这是否是设计它的最佳方式,因为这是我的第一次,并且不想在没有外观的情况下构建它。

Pokemon table:

  • 我得到了name, id (PK), type(FK), image and regionID(fk)
  • type是来自Type表的外键,并且具有one-to-many关系。听起来不错吗?我在想这是因为one pokemon can have multiple typesmultiple pokemon can have multiple类型对我也有意义。
  • regionID是来自Region表的外键。 many pokemon can live in many regions对我有意义。或者它应该是one pokemon can live in multiple regions?或multiple regions can have multiple pokemon

Region table:

  • 我这里只有一个PK。我是否还需要LocationWithinRegion表中的FK?
  • 我在这里有一个one to many关系,因为1 region can have multiple locations但是one location can't have multiple regions。这是对的吗?

Type table

  • 我创建了所有这些类型的位,所以我可以表示一个布尔值。我希望能够查询口袋妖怪表并查找所有相关数据,并在可以找到该口袋妖怪的地区找到真或假。

这是我第一次制作数据库架构,请让我知道它的外观!

由于

1 个答案:

答案 0 :(得分:0)

一般来说:

  • 为每个表格提供一个单数名称。每个<script id="vs" type="notjs"> attribute vec4 position; varying vec2 v_texcoord; void main() { gl_Position = position; // Since we know we'll be passing in -1 to +1 for position v_texcoord = position.xy * 0.5 + 0.5; } </script> <script id="fs" type="notjs"> precision mediump float; uniform sampler2D u_texture; varying vec2 v_texcoord; void main() { gl_FragColor = texture2D(u_texture, v_texcoord); } </script> <script src="https://twgljs.org/dist/twgl.min.js"></script> <canvas id="canvas"></canvas>User row代表用户。
  • 为每个表提供尽可能小的主键。多数情况 case int将会做的事情。
  • 在外键列上创建索引。这将有助于加入。

现在你的情况:

UsersPokemon之间存在多对多关系。所以我会从Type表中删除PokemonType string,我会创建一个表Pokemon和一个表Type(Id int Identity PK, Description string Unique)

同样是PokemonType(PokemonId int FK on Pokemon, TypeId int FK on Type, PK on both columns)Pokemon之间的多对多关系。

通常,要表示多对多关系,您需要在两个表之间使用查找表。

类似A(id)的东西 - &gt;查找(A.id,B.id)&lt; - B(id)