繁体   English   中英

数据库架构关系设计

[英]Database Schema relationship design

在此输入图像描述

嗨,您好,

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

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

Pokemon table:

  • 我得到name, id (PK), type(FK), image and regionID(fk)
  • typeType表中的Foreign Key,具有one-to-many关系。 听起来不错吗? 我在想这个因为one pokemon can have multiple types 还有multiple pokemon can have multiple类型对我有意义。
  • regionIDRegion表中的外键。 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

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

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

谢谢

一般来说:

  • 为每个表提供单数名称。 User不是每个Users
    row代表用户。
  • 为每个表提供尽可能小的主键。 在大多数情况下,标识int会这样做。
  • 在外键列上创建索引。 这将有助于加入。

现在你的情况:

PokemonType之间存在多对多的关系。 所以我会从Pokemon表中删除PokemonType string ,然后创建一个表Type(Id int Identity PK, Description string Unique)和一个表PokemonType(PokemonId int FK on Pokemon, TypeId int FK on Type, PK on both columns)

也是PokemonRegion之间的多对多关系。

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

类似A(id) - > Lookup(A.id,B.id)< - B(id)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM