在这种情况下如何设置关键字?

时间:2015-07-02 03:52:03

标签: database ms-access database-design

我正在制作一个数据库,其中包含图纸/文件/注释或这些项目的链接。然后我正在创建一个程序,让用户输入一个关键字,它将为他们提供指向图纸/文件/或笔记的链接。但我不确定如何存储所有关键字,并且仍然足够快速地工作。

Example Table Main
ID  Area  Type  Specific  File  Keywords
1   RX1    icc   tester   ..    Lock, SG1, Va2, CN1, CN2, SGP, Vu, Boof
2   RX1    ECU   tester   ..    SG1 , BA3, yys, yyz, yyx, Lock
3   RX3    ECU   Control  ..    SG2, SG3, VA2, YYS
etc.... 

因此,用户将选择区域,然后键入特定的,并键入关键字以获取结果。大约有10,000行。关键字可以是1到200之间的任何地方。

第二个可以在MS Access db中完成吗?我知道Access有限制,但这是我已经安装并习惯使用的。

1 个答案:

答案 0 :(得分:3)

不要将关键字保留在主表中。相反,请为多对多关系保留关键字表和fileToKeyword表。 然后,您对每个项目的关键字数量没有限制。

此表的主键应该是列(fileId,keywordId),并且您的搜索将是3表连接。

I answered a similar question yesterday

评论中根据您的要求提供的表格示例:

Table Main
----------
ID  Area  Type  Specific  File
1   RX1    icc   tester   ..
2   RX1    ECU   tester   ..
3   RX3    ECU   Control  .. 

Table Keywords
--------------
Keyword_Id  Keyword_Text
1           Lock
2           SG1
3           Va2
4           CN1
5           CN2
6           SGP

Table FileToKeyword
-------------------
FileId   KeywordId
1        1
1        2
1        3
1        4
1        5
1        6
2        1
2        3

备注:
在关键字表

  • Keyword_Id是主键
  • Keyword_Text是唯一的

在FileToKeyword表中

  • FileId是表main
  • 的外键
  • KeywordId是表关键字的外键
  • 两列的组合是主键

您的选择应如下所示:

SELECT ID, Area, Type, Specific, File
FROM Main
INNER JOIN FileToKeyword ON(ID = FileId)
INNER JOIN Keywords ON(KeywordId = Keyword_Id)
WHERE Keyword_Text IN('Lock', 'SG1')
AND Area = 'RX1'
-- any other conditions you might want to add