目前,我正在尝试构建一个存储与文件相关的详细信息的数据库,例如作者,创建日期以及最重要的标签。
我不确定如何为一个文件存储多个标签,我能想到的最简单的方法是将它们全部存储为一串超链接。但这引发了能够在列表视图中将标签显示为Windows应用程序中的链接以及如何使用此方法过滤搜索结果的问题。
我有一个更复杂的想法是创建一个单独的标签表,为每个标签分配一个唯一的3位整数,该整数将存储为多个标签的组合长整数。
e.g。
001 - tag1
002 - tag2
003 - tag3
然后如果所有三个标记都与文件相关,则将它们作为001002003
存储在文件详细信息中。
如果我这样做,我是否必须在我的应用程序中将每个mod声明为类“Mod”的对象,然后将超链接重新分配给每个标记值并将标记存储为Tag对象的集合作为每个mod的属性?这是一个可以收费的想法还是让我过度复杂?
编辑:
仍然处于开发的早期阶段,还没有测试它的实现,但目前我正在查看大约50-100个标签。
我如何构建files_to_tags表?我对关系数据库建模还不熟悉,我更擅长使用CSV来存储数据,但效率不高!
答案 0 :(得分:2)
这是桥表的一个很好的例子。假设您在数据库中有:
file_info
---------
file_id
author
create_date
tag_info
--------
tag_id
tag_name
tag_id
是代理键,对于每个新标记都是唯一的递增值。所以它可能看起来像:
tag_id tag_name
------ --------
1 Apples
2 Pears
3 Peaches
然后创建桥,将文件链接到适用的标记:
file_tag_bridge
---------------
file_id
tag_id
file_id / tag_id的组合在表格中是唯一的(它是复合键),但是给定的file_id可能与多个(不同的)tag_id相关联,反之亦然。 / p>
对于与文件关联的每个标记,此表中将有一行:
file_id tag_id
------- ------
1 1
2 2
2 3
在这种情况下,文件1与Apples
标签相关联;文件2与Pears
和Peaches
相关联。文件3未与任何标签关联,因此未在桥接表中表示。