当前位置: 首页 > 面试题库 >

与导入的数据一起存储补充数据的策略

齐文林
2023-03-14
问题内容

我已经遇到过几次这个问题,我想知道其他人在做什么。

当我创建数据库时,有时我必须每天定期将数据导入表中。我通常要做的是删除所有记录,然后从外部数据源重新导入每条记录。

很多时候,我将不得不存储更多与导入记录相关的数据,但这些数据并非来自原始导入源。通常,此“额外数据”来自用户输入。因此,我将创建另一个表,该表的主键与获取导入数据的表的键相匹配,并将此附加数据存储在新表中。如果这没有意义,请参见以下示例:

在旧的旧系统中,我们存储员工数据。但是,我需要在无法连接到旧系统的Web应用程序中使用这些数据。因此,我创建了一个数据库,该数据库的表与我在旧系统中拥有的数据的模式匹配,并且每天将每条记录导入该表中。导入时,我会删除每条记录并导入每条记录。

但是在我的新系统中,员工可以保存简历。因此,在另一个表中,我存储了此数据及其ID。

仅具有一个表会更简单,但是我不能这样做,因为在导入时,我会删除其他地方不存在的数据。

另一个不好的事情是,因为我将删除所有这些记录以进行导入,所以无法使用相关数据定义外键约束。

我讨厌这样设计数据库,因为我知道有更好的方法。如果我可以在导入数据时进行更新,而不是全部删除并导入,那不是很好吗?

我使用的是Sql Server 2008,但感兴趣的是可以与任何RDBMS配合使用的策略。


问题答案:

好吧,当您执行导入时,导入到临时表中,然后更新生产表中的记录(按单词的一般含义进行更新:删除已删除的内容,添加新的内容,修改已更改的内容)。

您可能还想MERGE在2008年签出新的SQL命令,事实证明它对这种情况非常有帮助。



 类似资料:
  • 数据存储 Cookie 浏览器中的 Cookie 是指小型文本文件,通常在 4KB 大小左右。(由键值对构成用 ; 隔开)大部分时候是在服务器端对 Cookie 进行设置,在头文件中 Set-Cookie 来对 Cookie 进行设置。 页面可以访问当前页的 Cookie 也可以访问父域的 Cookie。 属性 属性 默认值 作用 Name(必填) 名 Value(必填) 值 Domain 当前文

  • 前端数据存储工具 YDN-DB forerunner AlaSQL LokiJS lovefiled Dexie.js localForage pouchdb

  • 问题内容: 因此,我最近才开始学习有关数据库如何工作,如何使用SQL ect的知识。并决定开始在我的Java应用程序(特别是H2数据库)中实现嵌入式数据库,并且在我编写代码的计算机上似乎运行良好。 当我移到另一台计算机上继续进行编码时,我注意到,即使我移植了嵌入式数据库文件(h2-*。jar),我在第一台计算机上创建的所有准备好的表也不在第二台计算机上存在。我以某种方式先入为主,即通过数据库引擎生

  • 我正在处理一个用例。要求是我需要创建订单。订单有一些客户参数。订单可以多次修改。最初,我想在以太坊中实现它。因此,我考虑从UI中捕获客户详细信息,并将其存储在智能合约中。然而,问题是一旦部署了合同,我就不能更改它,因为它是不可变的。这个缺点使我无法使用以太坊。考虑到Corda,我可以将客户数据存储为单个记录,并对其进行修改,以便将修改存储在我们可以查询的分类帐中吗。例如,我想存储客户ID、客户名称

  • 进制转换 十进制转换为二进制 十进制转换成二进制可以采用除2取余的方式,也就是说将要转换的数,先除以2,获得商和余数,将商继续除以2,获得商和余数,此过程一直重复直到商为0。最后将所有得到的余数倒序排列,即可得到转换结果。 二进制转换为十进制 二进制转化成十进制要从右到左用二进制位上的每个数去乘以2的相应次方。 以二进制数1101为例,将其转换为十进制形式,转换方式如下: 二进制转换为八进制 二进