我想知道关于这个问题的最佳解决方案是什么:
我有文章,我有类别,文章属于某个类别。有两种类型,用户定义和系统定义(如“收件箱”,“垃圾”等......)
所以问题是我应该为每个系统定义的类别只有一个项目,并且所有用户的所有文章都将附加到这些类别,或者我应该在创建用户时创建所有系统定义的类别,并附加这些类别给用户?
第一个解决方案将导致每个系统定义的类别中有很多文章,而第二个解决方案将导致类别中的大量“冗余”项目。哪种解决方案最好?
答案 0 :(得分:0)
这是你的选择。这两种方法都有其优点和缺点。
如果您使用第一个解决方案,您的select语句将具有与此类似的WHERE
子句:
WHERE (category.type = 'SYSTEM' OR category.user_id = :USER_ID)
第二个解决方案将简化您的选择语句:
WHERE category.user_id = :USER_ID
第二种解决方案会使添加用户变得更加复杂。您需要为用户创建系统定义的类别:
INSERT INTO CATEGORY (user_id, category_name, ...) SELECT :USER_ID, system_category, ... FROM SYSTEM CATEGORY;
如果添加新系统类别,则需要为所有用户插入。