product
表有类别,media
表有类别,ticket
表有类别。
每个都与category
表具有HasMany关系。有两种方法:
答案 0 :(得分:1)
在完整性方面,我认为第一个更好。
答案 1 :(得分:0)
如果不共享类别,那么最好(在大多数情况下)为每个类别类型设置单独的表。
以下是理由:
数据库是数据关系完整性的守门人。在编写良好的程序中,不应存在任何外键冲突异常,即代码不依赖于数据库来保持数据的关系完整性。但是,如果一个bug蔓延,数据库中的关系会使bug不太可能导致数据损坏。
当对媒体,产品等使用单独的表及其有效类别时,可以使用外键关系轻松维护关系完整性;基本上媒体表中的任何记录都可以属于媒体类别表中的任何类别。确保关系:
"Records in media table can belong to any category of type 'media' in
the categories table"
在数据库级别不太直接。
话虽如此,其解决方案是数据结构重复的问题使整个底层结构受到怀疑。在您的情况下可能不是这样,但您应该查看需要引入类别的基础用例,并查看它们是否以更好的方式提供更好的服务(例如,自由文本搜索索引关键字。)