我正在尝试规范化我正在构建的数据库。其中一部分是我有许多不同的测试,每个测试可以有许多不同的标签。你会怎么处理这个?
您是否有一个包含标签的表格,然后对每个测试的标签数量进行限制?
我是数据库的新手,更不用说正常化的整个想法了,如果这是一个非常简单的问题,请原谅我。
答案 0 :(得分:4)
通常,这将使用两个表来处理。一个tags
表,每个记录由tag_id
和tag_name
组成(可能包含您想要包含的其他元数据)。然后,标签将通过另一个表test_tags
与其测试相关联,其中test_id
和tag_id
将被存储。
如果您想限制每次测试的代码数量,您可以轻松运行SELECT COUNT(tag_id) FROM test_tags WHERE test_id=#
查询,以确定他们已经添加了多少代码。
答案 1 :(得分:2)
通常你会这样做的方法是有一个表tags
,如:
INT id PRIMARY KEY
VARCHAR(255) name
然后,对于允许标记的每个对象,您需要一个桥接表。因此,如果您有另一个表tests
,并且有自己的id
列,那么您将拥有另一个表tests_tags
:
INT test_id PRIMARY KEY
INT tag_id PRIMARY KEY
然后,您可以通过获取测试ID来枚举所有带有标记的测试,其中tag_id
是您感兴趣的标记ID;同样,您可以通过获取标签ID来枚举测试中的所有标签,其中test_id
是您感兴趣的测试ID。
这是建立多对多关系的标准方法。