2012-04-03 55 views
0

我正在为项目使用MySQL数据库和JSP。在我的项目中,有哲学,技术,艺术,体育等类别。这些类别具有多种价值,如运动有曲棍球,板球,橄榄球等。如果我使用数据库来存储此值,则会发生冗余。
例如运动蟋蟀,运动曲棍球等高效地将多个密钥存储在一个类别中

所以我的问题是,有没有任何有效的方式来存储这些值,以便当任何人进入板球比较与板球运动类别?

回答

0

这听起来像你有一个经典many-to-many relationship

一个category可以有很多value记录和value可以与许多category记录关联。

要建模,可以创建三个表格:category,value和联结表,category_value

类别

  • ID
  • 名称
  • 等...

价值

  • ID
  • 名称
  • 等...

Category_Value

  • 类别ID
  • VALUEID
0

您的典型DBMS不明白的 “指针” 的概念, ,所以为了“关联”两个表,来自o的一些值ne表格必须物理复制到另一个表格。此外,无论何时创建索引,索引列中的数据副本都将存储在该索引中。

为什么数据库中没有指针有很好的理由。最值得注意的是,DBMS可以在物理存储器内移动数据,而不用担心挂指针。仅凭这一点就值得有点增加存储需求(通过使用指针而不是副本的假设DBMS),所以你只需要忍受它。


话虽这么说,不规范您的数据。该Michael Fredrickson's answer已经涵盖了M:N的关系,但如果这实际上是1:N(即一个值不能超过一类),你需要这样的事:

enter image description here