我正在规划一个网络项目,包含4个网站建立在MVC3。作为数据库服务器,我将使用ms sql服务器。
每个网站都会有大约40张桌子。但有些表格是在网站之间共享的:联系方式、城市、邮编、国家……
如何处理这个问题?我是否应该将每个数据库的所有表都放到一个公共数据库中(这样网站1、2、3和网站4的数据库就可以放在一个数据库中)。或者我应该创建一个包含共享数据库的数据库?
但是,我认为我在数据一致性方面遇到了问题,因为我认为没有办法从一个数据库指向另一个数据库(例如,将数据库1中的citytable链接到数据库2中的buldingtable )。
有什么想法吗?非常感谢!
发布于 2011-07-01 22:50:37
我喜欢把它分成单独的数据库的原因是,如果每个网站都有自己的数据库,并且其中一个网站变得非常流行,那么只需将它们的数据库移动到不同的、功能更强大的数据库服务器上就很容易了,除了(a)你需要远程引用中央“控制”数据(或复制/镜像/等等),以及(b)你将该网站指向不同的数据库服务器之外,并不需要做太多的改变。另一个好处是,如果两个网站有相同类型的表(例如Patients),你就不必有像Patients_WebSite1,Patients_WebSite2这样的表,除了表名之外,不同的存储过程是相同的(或者粘贴表名的丑陋的动态SQL过程)。分开后,您可以拥有完全相同的模式和完全相同的代码库,而不必将每个人的数据合并到单个表中。
如果在单个数据库中混合数据,数据一致性会更容易,整个设置也会稍微简单一些,但在增长时拆分数据会困难得多。如果您将其拆分到不同的数据库中,那么您将无法使用标准DRI (外键)来强制执行引用完整性。如果这很重要,您可以通过其他方式来实现(触发器、插入/更新前的验证等)。
https://stackoverflow.com/questions/6549441
复制相似问题