0

product表有分类,media表有分类,ticket表有分类。

其中每一个都与category表有 HasMany 关系。有两种方法:

  1. 有一个可能带有类型列的通用类别表,并有像 MediaCategory 等中间表。
  2. 拥有像 MediaCategory 这样的单独表格,每个表格都具有与类别相同的结构
4

2 回答 2

1

第一个更好,我认为就完整性而言。

于 2013-02-02T22:42:30.033 回答
0

如果类别不共享,那么最好(在大多数情况下)为每个类别类型提供单独的表。

理由如下:

数据库是数据关系完整性的看门人。在编写良好的程序中不应该有任何外键违规异常,即代码不依赖数据库来保持数据的关系完整性。但是,如果出现错误,数据库中的关系会使错误不太可能导致数据损坏。

当对媒体、产品等及其有效类别使用单独的表时,可以通过外键关系轻松维护关系完整性;基本上媒体表中的任何记录都可以属于媒体类别表中的任何类别。确保关系:

"Records in media table can belong to any category of type 'media' in 
the categories table"

在数据库级别不太直接。

话虽如此,解决数据结构重复的问题会使整个底层结构变得可疑。在您的情况下可能并非如此,但您应该查看需要引入类别的基础用例,并查看它们是否以不同的方式更好地服务(例如自由文本搜索索引关键字。)

于 2013-02-04T06:24:15.783 回答