2010-04-08 64 views
0

我们有三种类型的数据(表):最佳的数据库(MySQL的)结构,这种情况下:

  • 书(ID,姓名,作者...)(约3排万元)
  • 类别(ID,姓名)(约2000行)
  • 位置(ID,姓名)(约10000行)

一本书必须至少有1种型类别(最多3个)和一本书绝只有一个位置。

我需要这个数据关联到这样的语句更快:

选择图书类别为“CAT_ID”和位置=“loc_id”

选择书籍,其中匹配(名称)对('的名字书')和位置='loc_id'

请我需要一些帮助。 谢谢

+2

你是说表已经存在,你需要一个有效的查询?或者你想知道如何有效地制作表格? – MJB 2010-04-08 13:24:23

+0

如何制作表格,如何关联它们,用右键快速查询。 – robert 2010-04-08 13:27:43

回答

1

有另外一个表,比如bookscategories,它有'id,bookid,categoryid'作为字段。

使用此功能将书籍映射到类别。

您的原始查询不会受到影响,因为第一个查询需要一个特定类别和位置的书籍,第二个查询需要符合标题和一个位置的书籍。

+0

嗯......如果我做这个表: | ID | BOOK_ID | CAT_ID | LOC_ID | 查询将如何与NAME和LOC_ID匹配? – robert 2010-04-08 13:59:27

+0

我同意zaf。制作额外的桌子,然后尝试一下。我没有具体说我的答案 - 我想我应该有。 – MJB 2010-04-08 13:59:27

+0

@robert:不要那张桌子。 Loc_Id应该在BOOKS表中,而不是BOOKCATEGORY表中。 – MJB 2010-04-08 14:02:39

0

随着表的这种大小,我认为这是中型(不小,不大),它是更有可能的指标,将有所作为。正确创建表并正确连接它们(在索引的主键和外键上),并且性能应该没问题。

+0

是的,但如何关联他们......我的意思是一本书可以有3个差异类别,我把这些ID?在书桌或我需要另一个表来关联它们? 书本 - > Category_ID1书本 - > Category_ID2书本 - > Category_ID3也 书本 - > LOCATION_ID – robert 2010-04-08 13:38:40

相关问题