0

我在数据库投影方面遇到了一些问题。

我有一些项目类型,假设它们是“新闻”、“文章”、“文件”等。

我也有“类别”表来存储每种类型的类别。类型在特殊字段“category_type”中指定。所以在我的应用程序代码中定义了常量:news = 0,articles = 1,files = 2,等等。

现在的问题是 - 建立连接表的正确方法是什么?

一种方法:我可以为每种类型创建几个表 - “news2categories”、“articles2categories”、“files2categories”等。

第二个选项是构建一个全局表,它将有 3 个字段“item_id (int)、item_type (int)、category_id (int)”。好吧,实际上我已经有一个全局表,用于仅按一个字段进行类型划分的类别。但这是正确的方法吗?我不想生成几十个相同的表,但另一方面,与一个表和多种类型的关系似乎过于抽象和复杂。请指教。

如果对解决这个问题有意义的话,Yii 框架将主要使用 DB。

4

2 回答 2

0

文章、新闻和文件之间有什么区别?这些中的每一个都可以有多个类别(多对多)吗?假设对每种类型(文章、新闻等)的多个类别的多对多需求是肯定的,并且它们彼此之间有足够的不同,我将有以下表格:

 category
 news
 category_news
 article
 article_category
 file
 category_file

每个类别链接表将有 2 列:category_id 和 item_id(news_id、article_id 等...)

我使用 db 编码标准以单数命名所有 db 表(如果 Yii 不这样做,请随意更改为复数 -ack-),并让我的链接表的每个链接表的名称用下划线分隔(名称按字母顺序排列)。

无论你做什么,保持一致。

于 2012-09-09T23:06:05.620 回答
0

第一种方法似乎有问题,因为您可能希望您的设计能够灵活地添加/删除不同的类型。如果添加新类型,则必须添加新表,我觉得这不是一个好的设计。

这个设计怎么样。

表:类别,列:CategoryID (PK) TypeID(FK 到 Types 表。)

表:类型、列:TypeID (PK)、TypeValue

在类型表中存储类型新闻、文章等。通过添加或删除类型和类别,这将使设计更加灵活。

于 2012-09-09T23:07:18.637 回答