2011-11-02 97 views
0

我想知道什么是最好的解决方案关于这个问题:哪个解决方案最适合于SELECT请求的时间?

我有文章,我有类别,文章属于一个类别。有两种类型的类别,用户定义和系统定义(如“收件箱”,“垃圾”等...)

所以问题是我应该只有一个项目为每个系统定义的类别和所有文章的所有用户将被附加到这些类别,还是应该在创建用户时创建所有系统定义的类别,并将这些类别附加到用户?

第一种解决方案会在每个系统定义的类别中产生大量文章,第二种解决方案将导致类别中有很多“冗余”项目。哪种解决方案最好?

回答

0

这是您的选择。两种方法都有其优点和缺点。 如果与第一种解决方案,你的SELECT语句将有一个类似的WHERE条款:

WHERE (category.type = 'SYSTEM' OR category.user_id = :USER_ID) 

第二个解决方案将简化你的SELECT语句:

WHERE category.user_id = :USER_ID 

第二个解决方案将使它添加用户更复杂。您需要创建系统定义的类别用户:

INSERT INTO CATEGORY (user_id, category_name, ...) SELECT :USER_ID, system_category, ... FROM SYSTEM CATEGORY; 

如果你添加一个新的系统类别,你需要插入的所有用户。

相关问题