数据库:外键执行

时间:2013-04-09 12:47:29

标签: database-design spring-roo foreign-key-relationship

我确信这可以回答,但不知道在哪里。

序:

我们的计费解决方案。应用程序设计非常简单,我们为企业创建Web商店并为企业主提供凭据。

企业主可以登录并创建相关产品,类别等。他们还可以注册他们可能想要用于计费的设备。

可以使用Web界面创建主实体,而在设备的本机应用程序上进行计费。

数据库表:

BUSINESS: id, name etc. - Business Info Table
CATEGORY: id, business_id, name etc. - Product Categories
PRODUCT: id, category_id, name etc. - Products

应用

基于Spring ROO的Web应用程序。 Spring MVC作为GUI技术

问题:

如前所述,所有者必须使用其凭据登录Web商店。因此,当他们开始创建实体时,webapp知道相关的业务ID,透明地存储所有类别,产品等。

在创建产品时,用户可以选择产品可能落入的类别。

问题是:将business_id存储在产品表中是个好主意吗?因为我们只是在生成产品GUI时填充与业务相关的类别。所有关联的表都可以是这种情况,其中这些规则在GUI中实施。

正如你们中的一些人可能知道的那样,ROO采用为每个CRUD操作创建服务的方法。因此,如果我们决定不将business_id与产品一起存储,那么如果有人试图调用不属于相关业务的类别ID的服务,则可以规避业务规则。或者保持数据库设计的完整性并专注于保护服务是一个好主意。

如果您有任何相关的利弊,请在此处发布。

提前致谢:)!!!!

1 个答案:

答案 0 :(得分:0)

您面临的问题称为多租户。您可以在这里阅读更多关于选项的优缺点:

http://msdn.microsoft.com/en-us/library/aa479086.aspx

我更喜欢每个架构的租户方法。

您可以使用JBoss Hibernate的多租户功能自动执行此操作:

http://docs.jboss.org/hibernate/orm/4.1/devguide/en-US/html/ch16.html