我正在使用Azure和Idea Blade DevForce做一些工作,我想知道在将实体映射到数据库表方面最好的方法是什么......
实体是否应该在数据库中拥有自己的表?这样做有任何性能上的好处/不利吗?
假设我们有一个“订单”实体,一个“产品”实体,一个“客户”实体和一个“地址”实体;将这些混合在一张桌子中与将它们全部分开的利弊是什么?如果我们没有分开,显然db不会处于第3范式,但使用MEF / DevForce时这是否重要?
作为第二个(设计较少)的例子,如果我们有一个“账户”实体和一个“用户”实体怎么办?一个帐户可以有很多用户,但是用户只能属于一个帐户......这样,将它们全部放在一个表中并不会复制任何用户数据,但我(个人)仍然认为这种方法是完全错误的。有什么理由可以带来好处吗?
答案 0 :(得分:2)
取决于您希望复制数据的程度,以及您是否希望任何人作为开发人员认真对待您。将所有东西扔进堆中是我能想到的最糟糕的反模式。
例如,假设您要为2个客户创建4个订单,每个订单包含5个产品。您的客户数据本身将重复10次,每位客户。
编辑:我应该注意到我对这个问题的回答是强调“是的”。我有兴趣听取有关替代方案的论据......