Mysql 项目间共享数据。。创建一个共享数据库?

Mysql 项目间共享数据。。创建一个共享数据库?,mysql,sql,sql-server,database,database-design,Mysql,Sql,Sql Server,Database,Database Design,我有三个项目,所有三个项目都有一些共享的信息。例如,让我们假设一个车辆表(基本信息:年份、品牌、型号)和一个车主表(同样是基本信息:姓名、地址、年龄)。这三个项目需要能够访问车辆和车主信息。为单个接入点创建单独的数据库(共2个表)与为三个项目的每个数据库创建车辆和车主表(共6个表)相比,有哪些优点和缺点?这方面有最佳实践吗 谢谢 最佳做法是将所有相关数据保存在一个数据库中。除非通过触发器等复杂方法,否则无法跨数据库强制执行引用完整性。在数据库中,您可以轻松地使用外键来强制引用完整性 自2005年

我有三个项目,所有三个项目都有一些共享的信息。例如,让我们假设一个车辆表(基本信息:年份、品牌、型号)和一个车主表(同样是基本信息:姓名、地址、年龄)。这三个项目需要能够访问车辆和车主信息。为单个接入点创建单独的数据库(共2个表)与为三个项目的每个数据库创建车辆和车主表(共6个表)相比,有哪些优点和缺点?这方面有最佳实践吗


谢谢

最佳做法是将所有相关数据保存在一个数据库中。除非通过触发器等复杂方法,否则无法跨数据库强制执行引用完整性。在数据库中,您可以轻松地使用外键来强制引用完整性

自2005年以来的一个最佳实践是强制用户/模式分离,因此您不必将所有内容都放在[dbo]中,每个对象集都有一个相关的模式。对象的这种分类使得在一个数据库中有数千个表或过程成为现实

在现代数据库(如SQL 2005及更高版本)中,不需要跨数据库分离对象。您有文件组、分区、用户/模式分离等工具,这些工具允许您轻松地在一个数据库中工作,而且效率更高

作为一个例子,为什么使用一个数据库和用模式分离对象是一个优选的方法,考虑应用程序的可移植性。无论是在从开发到测试再到qa再到生产的过程中,还是在从客户机到客户机的过程中,如果代码中嵌入了数据库名称,这都会变得很困难

也许您有一份月度销售报告,会计部门使用该报告来获取汇总数据。如果在同一数据库中,则销售报告称为[].[],您可以从[\u-dev]移动到[\u-prod],并且调用相同。如果您使用的是不同的数据库,则对销售报告的调用为[sales].[dbo].[get_monthly_report](例如)。现在,要移动到具有不同名称的不同数据库集,您需要位于完全不同的实例上,并且数据库设置完全相同。在某些情况下,例如当您将代码移动到客户端站点时,这可能非常困难


将所有代码放在一个数据库中可以使您在对表、视图、过程等的调用中不使用数据库名称,而且您的代码更具可移植性和灵活性。

最佳做法是将所有相关数据放在一个数据库中。除非通过触发器等复杂方法,否则无法跨数据库强制执行引用完整性。在数据库中,您可以轻松地使用外键来强制引用完整性

自2005年以来的一个最佳实践是强制用户/模式分离,因此您不必将所有内容都放在[dbo]中,每个对象集都有一个相关的模式。对象的这种分类使得在一个数据库中有数千个表或过程成为现实

在现代数据库(如SQL 2005及更高版本)中,不需要跨数据库分离对象。您有文件组、分区、用户/模式分离等工具,这些工具允许您轻松地在一个数据库中工作,而且效率更高

作为一个例子,为什么使用一个数据库和用模式分离对象是一个优选的方法,考虑应用程序的可移植性。无论是在从开发到测试再到qa再到生产的过程中,还是在从客户机到客户机的过程中,如果代码中嵌入了数据库名称,这都会变得很困难

也许您有一份月度销售报告,会计部门使用该报告来获取汇总数据。如果在同一数据库中,则销售报告称为[].[],您可以从[\u-dev]移动到[\u-prod],并且调用相同。如果您使用的是不同的数据库,则对销售报告的调用为[sales].[dbo].[get_monthly_report](例如)。现在,要移动到具有不同名称的不同数据库集,您需要位于完全不同的实例上,并且数据库设置完全相同。在某些情况下,例如当您将代码移动到客户端站点时,这可能非常困难


将所有代码放在一个数据库中,可以使您在调用表、视图、过程等时不使用数据库名称,而且您的代码更具可移植性和灵活性。

拥有共享信息的中央存储库(也称为数据库)正是您应该做的。除非我不理解这个问题。如果您想要代码示例,您必须将自己限制为一个供应商(mysql或sql server)。有太多的语法差异。拥有一个共享信息的中央存储库(又名数据库)正是你应该做的。除非我不理解这个问题。如果您想要代码示例,您必须将自己限制为一个供应商(mysql或sql server)。有太多的语法差异。完全同意这一点。将共享数据放在共享模式(可能是dbo)中,如果存在安全问题,则为特定于项目的数据创建单独的模式。请注意,有些数据库系统比其他数据库系统更擅长在模式之间强制使用外键,但不确定mysql或sql-server的早期版本。是sql 2005实现了用户/模式分离。当时有一篇文章明确指出,使用用户/模式分离是“最佳实践”。这已经被版本2008R2(上次我看的时候)的一个替代,但它已经成为自2005年以来的最佳实践。这已经快20年了,当我在客户的网站上提出这个建议时,我仍然会被嘲笑!我通常用一些描述性的东西来描述公共数据,比如[实用工具],[词典],等等,只是用completel