相关疑难解决方法(0)

列与字段:我是否错误地使用了这些术语?

我在这里感到有点尴尬,我一直将术语“列”和“字段”完全互换使用,这在最近的技术讨论中引起了一些混乱。

但是,有人告诉我,这是不正确的,它应该是(将每个术语翻译成电子表格术语,忽略数据类型和所有其他使数据库有用的东西):

  • 数据库列:就像电子表格列
  • 数据库记录:就像一个电子表格行
  • 数据库字段:就像电子表格“单元格”(特定行的特定列)

这是正确的吗?我可以发誓,列和字段比这更可互换使用。我当然去过。

所以我们向表中添加字段,而是向表中添加,并且字段仅在谈论记录中的数据时才相关?

关于列与字段的其他想法?

编辑:澄清一下,当前上下文是 MS SQL Server。我在 SQL Server 之前的背景是 MS Access,这可能会影响我对这些术语的使用。

terminology fields

22
推荐指数
3
解决办法
3万
查看次数

为什么差异备份不能指定其基础?

这是我的第一篇 DBA.SE 帖子,所以请告诉我任何错误,谢谢!

我是一名新的 DBA(不是 IT 专业人员,只是公司中没有其他人可以这样做),所以解释越基本越好。我一直在阅读有关数据库备份策略(或者,我已经学会将其称为“恢复策略”)的文章。我了解完整、差异和事务日志备份的作用,但我想知道为什么差异备份只能基于最近的完整备份。

如果差异备份是自上次完整备份以来发生变化的所有内容,那么为什么差异不能基于我选择的任何备份?更清楚地说,我问的是在进行备份时指定基础,而不是在恢复时。我假设在恢复时您会选择正确的基数和相应的差异来执行恢复(不使用由基数 B 制成的差异从基数 A 恢复)。

阻止此功能实现的原因是什么?我想一定是有原因的,我只是不知道它是什么。

注意:我知道不能指定基数,但我的问题是为什么不指定?(我也对“你为什么要?”的讨论不感兴趣)

比喻

这是我如何理解差异备份的类比:

我有一个 Excel 文件,单元格中有一些数据。

在第 1 天,我制作了该文件的副本并将其存储在其他地方(“完整备份”)。

在第 2 天,我查看该文件并将其与我在第 1 天制作的备份副本进行比较,并记下所有已更改的单元格及其新值(“差异备份”)。我没有注意到对单元格所做的每一个更改,只注意到它的最终值是什么。如果单元格 A1 以“Alfred”开头,改为“Betty”、“Charlie”,然后是“Dave”,我只会注意到“A1 现在是 Dave”。

在第 3 天,我再次将当前文件与备份文件进行比较并注意更改(另一个“差异备份”与第 2 天具有相同的基础)。同样,只注意观察时每个单元格的最终值,而不是单元格一整天的所有值。

在第 4 天,我再次比较并再次注意变化。继续使用单元格 A1,现在它显示“Sarah”,即使它全天有 10 个其他名字,我只注意到“现在 A1 是 Sarah”。

第 5 天,我的文件搞砸了;因此,我查看了我在第 1 天制作的备份副本,然后查看了第 4 天记录的最终状态,然后将记录的更改应用于备份副本,现在我将文件“恢复”到第 4 天的状态因此,我查看了第 1 天所做的备份,看到第 4 天单元格 A1 以“Sarah”结尾,并将备份单元格 A1 更改为“Sarah”。

如果我在第 2 天制作了文件的另一个备份副本(“完整”),为什么会如此重要?为什么仍然不能将第 3 天或第 4 天的文件与第 1 天制作的副本进行比较(阅读,“对其进行差异备份”)?据我了解,SQL Server …

sql-server backup

19
推荐指数
2
解决办法
2533
查看次数

如何将分钟添加到时间数据类型?

我有一个将两条记录插入到表中的存储过程,记录之间的区别在于第二条记录的时间列在第一条@MinToAdd之后:

CREATE PROCEDURE CreateEntry
    /*Other columns*/
    @StartTime time(2),
    @EndTime time(2),
    @MinutesToAdd smallint
    AS
BEGIN
    SET NOCOUNT ON;

    SET @MinutesToAdd = @MinutesToAdd % 1440;   --Prevent overflow if needed?
    IF (@MinutesToAdd > 0)
    BEGIN
    INSERT INTO ClientNotification (/*Other columns*/ startTime, endTime)
        OUTPUT inserted.id
        VALUES
               (/*Other columns*/ @StartTime, @EndTime),
               (/*Other columns*/ @StartTime + @MinutesToAdd, @EndTime + @MinutesToAdd);
    END
    ELSE
    BEGIN
        /*Whatever ELSE does.*/
    END
END
Run Code Online (Sandbox Code Playgroud)

@MinutesToAdd分钟添加到@StartTime和的正确方法是什么@EndTime
请注意我使用的是time数据类型。

更新
正确答案应包含以下信息:

  • 如何将分钟添加到 time数据类型。 …

sql-server-2008 sql-server

12
推荐指数
1
解决办法
11万
查看次数

如果在所有列上都添加索引有什么缺点?

我知道,设置太多索引并不是一个好的设计,只是为了理解这个理论:
如果在 MySQL 的表中的所有列上添加索引,到底有什么缺点?

  • 如果我在很少使用的列上有索引,查询会变慢吗?
  • 插入是不是有点慢?
  • MySQL 是否能够挑选出加速查询的最佳索引?

mysql index-tuning

5
推荐指数
1
解决办法
3986
查看次数