2009-08-21 53 views
1

我有约15天的编程任务,我决定做一种购物车/网络销售的东西。ASP.net网站/项目可以有多个数据库吗?

我会和产品,价格,图片数据库等

我想具有处理的订单另一个数据库等

我应该只是做一个可行的组合(使一个数据库)还是应该为这些情况使用单独的数据库?

ps。我不是在谈论桌子,我正在谈论数据库。 谢谢你们

+1

数据库应包含与一件事的一切。这听起来像你处理的订单与一件事有关 - 一家商店。适当的解决方案是建立一个商店数据库IMO。 – 2009-08-21 13:24:24

+0

为什么你需要多个数据库?您尚未详细说明您的方案,以突出显示您需要多个数据库的原因。 – Charlie 2009-08-21 13:26:56

+0

订单和产品是相关的,所以将它们保存在一个数据库中。但是,如果您的网站有购物车和论坛,则可以有充分的理由使用两个数据库:一个用于论坛,另一个用于购物车。但总的来说,这也将是两个项目。尽管如此,它可以结合在一个应用程序中。 – 2009-08-21 13:53:34

回答

11

除非你有一个很好的理由有几个数据库,坚持一个。

话虽如此,单个项目的数据库数量没有技术限制。

编辑:有多个数据库的原因。除了已经提到的可伸缩性选项之外,如果您从应用程序的性质中看到这些旧记录不常需要,您可能还想归档一些非常古老的东西(例如,按年份)。

+2

可扩展性将是一个很好的理由有几个逻辑数据库......但我从这个问题的印象,它不会成为一个网站与数百万并发用户:) – 2009-08-21 13:24:46

+0

@Mark Seemann:你永远不知道。也许杰夫也在SO工作的同时匿名询问这些问题。 – 2009-08-21 13:25:58

+0

@NewInTown:你能举一个“非常好的理由”的例子吗?我对ASP.Net项目非常青睐。 – 2009-08-21 13:26:00

0

虽然我确定有很多理由可能需要为此单独建立一个数据库,但我会坚持使用单个数据库和订单表(因为我猜你会参考这些相同的产品在订单内)。它会使外键引用....简单....

0

如果你使用一个单一的数据库,可以强制实现数据完整性 如果您使用了数据库,您可以分发充电

0

保持到单一数据库,除非有实际的理由。例如,如果您混合预先构建的应用程序,并在加载自己的表之前删除所有表格。即使这样,你可以破解他们的脚本,并与1分贝去。另外,除非你有很多人和你一起工作 - 在15天内创建一个可行的购物车将是一个有点挑战。你可能真的想看看你可以修改的操作系统购物车。如果你是一个网络形象的家伙,那么DashCommerce +还有其他一些人。如果你进入MVC,你可以修改Kona。

0

在企业级别,您希望限制需要支持的数据库数量。

在SQL 7/2000中,我们将此举推向了极致,并为30多个应用程序使用了相同的数据库。这些天我们称之为垃圾填埋场数据库 - 这是难以置信的支持。我们最终决定采用把小一次性应用到垃圾填埋场数据库,但创造任何新的数据库,有超过10桌,100K +的记录,等等。

随着2005年,我们都希望能使用架构分离,因此数据库管理员SQL可以拥有更少的数据库,但开发人员可以依靠模式来了解哪些对象属于哪些应用程序。我们还没有完善这个概念,但我相对确定它会奏效。

0

我看不出有任何理由让您使用多个数据库。 我可以看到多个数据库的唯一优点是:

  • 缩放 - 如果你是一个大的商业网站,它会更容易使用多个数据库规模(你可以把每一个不同的服务器上)。
  • 安全 - 如果你需要某些信息是安全得多,你不希望把它保存有用户创建的内容在同一个数据库(因此可能会被利用,即SQL注入),可以单独给另一数据库在另一台内部网络上的另一台机器

主要缺点是开发的复杂性和额外的维护。 通常你可以在没有其他数据库的情况下实现一些目标。 例如,如果是为了安全起见,我首先尝试所有的查询清理和数据库身份验证方案似乎更具成本效益

+0

另一个原因可能是像日志记录。您可能会调整主数据库以进行繁重的读取活动,而日志记录数据库可能会有大量写入活动。我亲眼目睹了一些大型项目。 – 2009-08-21 13:37:07

0

购买的大多数购物车和电子商务解决方案使用一个数据库。你为什么想着多个数据库?

你想多DBS来获得性能优势?您可以使用复制。多DBS的问题

一个实例可能是外键。有些dbs,你不能在dbs上创建它们。

0

目前我使用的是实际使用三个数据库,有很好的理由太多的项目。一个数据库用于用户向系统提供数据并查看这些数据。用户只是内部的同事,他们将我们的应用程序的数据保持最新。 第二个数据库包含来自此用户数据库的摘录,并将其发送给我们的软件产品的客户。这些客户不能修改我们的数据,我们也不想让他们访问实时数据,特别是因为我们首先要确保数据是有效的。 第三个数据库用于通用错误/消息记录和维护用户数据库。

之所以将整个项目在三个数据库被部分安全完成。如果有人可以访问一个数据库,其他两个仍然是安全的。如果一个人倒下,另外两个人仍然会有用。三个数据库中的数据完全不相关,即使来自一个数据库的数据用于为其他两个数据生成数据。这是使用多个数据库的最重要条件:数据不应该相互关联。 (尽管一些DBMS系统确实允许这些跨数据库链接!)

0

我目前的项目至少使用了四个数据库,但这是因为我的项目是一个后期添加,旨在从其中三个数据中提取数据并将其显示在地图。第四个数据库是作为项目的一部分创建的,用于存储有关地图和项目用户的信息。

如果我不得不添加新的信息不符合我创建的数据库,我会考虑添加一个全新的数据库。但是,确保所有数据库工作(SP,视图,表结构)在三种环境(本地,测试,生产)上保持一致的成本很高。我不确定我想要为我自己创建的多个数据库执行此操作。 (我已经很幸运,这是别人的工作来维持我的项目使用其他数据库。)

0

 
First, it's perfectly okay to use multiple databases, 
but unless you have a compelling reason, you're better 
off sticking to one.

I don't know what RDBMS you are using for your project, but most of them (like Oracle, SQLServer) offer a concept of schemas. So, you can use one database and create multiple schemas to segregate your tables.

相关问题