将字符串定义为字段或单独的表格?

时间:2013-05-11 08:43:11

标签: sql sql-server-ce

我有一个数据库,其中存储了大量用户创建的产品。 用户还可以创建“视图”,作为容纳这些产品的容器,让我们称之为类别。 如果每个产品都有一个包含类别ID的类别字段,那将很简单,但是每个产品都可以添加到多个类别中,这样就不起作用了。 目前,我通过在category-table中使用字符串字段“products”来解决这个问题,这是一个以逗号分隔的product-id列表。 我想知道的是,基本上这样做是否“好”?它被普遍接受吗?它会导致我没有意识到的某种问题吗? 创建另一个名为productsInCategories的表有没有更好的选择,它有2个字段,一个有category-id,另一个有product-id,用这种方式链接在一起? 这些方法中的一种是否会以其他方式表现更好或更好?

如果重要的话,我现在正在使用sqlce,但很可能很快就会改变。

1 个答案:

答案 0 :(得分:1)

我会选择第二个选项:单独的表格。

如果您需要从产品角度进行查询,则可以更轻松地处理。此外,类别的加入将简单快捷。这正是关系数据库的用途。

想象一个简单的查询,比如产品的类别。使用您的解决方案,您需要逐个检查所有类别,解析每个类别的csv列表以查找产品。使用单独的表,它是一个干净的查询。