gpt4 book ai didi

mysql - 项目之间共享数据..创建一个共享数据库?

转载 作者:行者123 更新时间:2023-11-29 06:50:31 24 4
gpt4 key购买 nike

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

谢谢!

最佳答案

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

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

在现代数据库(例如 SQL 2005 及更高版本)中,无需跨数据库分离对象。您拥有文件组、分区、用户/架构分离等工具,使您可以轻松地在一个数据库中工作,并且效率更高。

作为说明为什么使用单个数据库并按模式隔离对象是首选方法的示例,请考虑应用程序的可移植性。无论您想要将代码从开发转移到测试,再到质量保证,然后再生产,或者您想要将代码从客户端转移到客户,如果您的代码中嵌入了数据库名称,这就会变得很困难。

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

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

关于mysql - 项目之间共享数据..创建一个共享数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47701255/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com