2015-12-03 82 views
1

例如,我有一个表名Fruit,每个水果属于FruitType。所以,我应该存储在FruitType数据的基础上再作外键Fruit或只是一个参考ID存储EnumFruitType我应该在数据库中存储Type还是应该将其存储在枚举中?

更新:
数据库仅用于一个应用程序。我需要显示fruit的表格,其中包括它们的fruit type给用户。我还在水果表视图中使用type作为过滤器。

我当前的解决方案:
我将始终有一个EnumType。但是 如果Typeidname有更多的信息,例如description ...我也将它存储在数据库中,所以我可以有一个参考视图来显示所有Type信息。其他方面只是Enum

+0

如果数据在数据库中是必需的,并且应该可以在其他应用程序的任何地方使用,那么数据库就是要走的路。如果不是,请提供更多信息。 – Patrick

+0

你可以让这个更具体一点吗? “FruitType”和“Enum name FruitType的引用ID”之间的区别是什么?对我来说,似乎你说同样的事情两次 –

+0

@ErwinBolwidt我的意思是id引用数据库中的'FruitType'记录或id在Java中引用'FruitType' Enum –

回答

3

您必须使用数据库来保存FruitType。我将以两种方式解释为'FruitType'实现枚举。我以为你使用的是javax.persistance

enum FruitType { 
YELLOW,GREEN,RED; 
} 

class Fruit{ 
private String name; 
@Enumerated(EnumType.ORDINAL) or @Enumerated(EnumType.STRING) 
private FruitType fruitType; 
} 

如果您使用EnumType.STRING,然后保存枚举的字符串名称,如(黄色,红色)。对于EnumType.ORDINAL保存1,2等的顺序。

如果您打算处理(添加,更新和删除)很多FruitTypes,然后使用另一个表来保存数据。

+0

如果你没有水果类型,那么不需要FruitType表。 –

+0

所以我应该只根据处理(添加,更新和删除)的需要选择其中的一个'Enum'或'Database'? –

+0

是的,如果你经常改变FruitType,那么就和表一起去。如果没有,你可以使用枚举。 –

1

如果您的类型是静态的,并且您不想在应用程序工作时添加它们,那么最好使用枚举。如果真的有很多类型或类型可以添加/更改,最好将它们存储在单独的数据库表中并设置关系。

+0

谢谢,我会采取这个有用的答案。 –

相关问题