标签: dependencies

重叠候选键究竟是什么?

有人可以简单地向我解释一下什么是overlapping candidate key?什么是overlapping顾名思义?

考虑以下关系

R(L,M,N,O,P) 
{
    M -> O
    NO -> P
    P -> L
    L -> MN
}
Run Code Online (Sandbox Code Playgroud)

上述哪个函数依赖在上述关系中引入了重叠的候选键?

让我们将讨论限制在依赖项上,我目前对 BCNF 不感兴趣

normalization database-design dependencies

8
推荐指数
1
解决办法
8327
查看次数

功能依赖适用于整个数据库或特定关系?

我是 dbms 的新手。我看过一个关于函数依赖的讲座视频。但我有点困惑,函数依赖是对整个数据库还是特定模式的约束?

schema database-design dependencies

8
推荐指数
1
解决办法
243
查看次数

查看依赖项需要什么权限?

在不久的将来,我的公司将转向更严格的安全模型。

作为其中的一部分,我们正在将特定服务器更改为新模型并测试我们所有现有的流程。我经常使用的一个进程利用 SMO 框架按依赖顺序编写数据库对象的脚本,因此我们可以在另一台服务器上运行这些脚本。

依赖顺序部分非常重要,因为我们有很多嵌套对象(想想引用其他视图的视图)。

使用新的安全模型后,此脚本停止正常工作。

我也在 SSMS(针对 2008r2 实例的 SSMS 2012)中进行了测试,并且View Dependencies在引用同一数据库中另一个视图的视图上使用不会在Objects on which [this view] depends.

更令人不安的是,如果我sp_depends在有问题的视图上运行,我确实会得到一个准确的依赖项列表。

我做了一些研究,找不到明确的答案,所以我希望有人能帮助我:

用户需要哪些特定权限才能准确查看 SQL Server 2008r2 和/或 SQL Server 2012(我们即将升级)中的依赖项。

sql-server sql-server-2008-r2 dependencies

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

删除带有孤立索引的分区方案

我试图删除 SQL Server 数据库中的分区方案。这个方案被 2 个索引使用,我删除了它们。

我无法删除该方案,因为它似乎仍然被索引使用,即使它们不再存在。

运行以下查询:

select object_name(i.object_id), i.name, i.index_id
FROM   sys.indexes i
JOIN   sys.partition_schemes ps ON i.data_space_id = ps.data_space_id
WHERE  ps.name = 'CallScheme'
Run Code Online (Sandbox Code Playgroud)

我得到了具有索引的 2 个表的名称,但索引名称为 NULL(索引 id 为 0)。

如何摆脱这些索引以便我可以删除分区方案?

sql-server partitioning dependencies

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

获取视图中使用的函数列表

假设我有一个这样的函数:

create function house_analysis(ingeo geometry)
  returns table(count_all numeric, count_important numeric) as
$$
  select count(*), count(*) filter (where h.import_flag)
  from house_table h where st_intersects(ingeo, h.geom)
$$ language sql stable;
Run Code Online (Sandbox Code Playgroud)

我定义了一个这样的视图:

create or replace view postzone_analysis as (
  select p.zipcode, ha.count_all, ha.count_important
  from postzone_table p, house_analysis(p.geom) ha
);
Run Code Online (Sandbox Code Playgroud)

问题是:

如何pg_catalog.*使用我的视图(postzone_analysis或其视图)查询系统目录 ( ) 以oid获取其中使用的函数的列表?他们的pg_proc.oid价值观很好。

我知道数据库会跟踪,因为我无法删除该函数,但在pg_depend.

数据库是 PostgreSQL 9.5。

(现实生活中的情况要复杂得多 - 它被缩小为最低可行的例子。视图调用就像 6 个分析函数,它结合了来自不同来源的数据,并且有多个基于不同区域类的视图。 )

postgresql view functions dependencies

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

尝试在光盘详细信息场景中识别最小的功能依赖性

我相信这个关系/表是第一范式(1NF):

集合cd_id,标题,标签,艺术家,类型,国家,song_id,song_title,长度)

注意:粗体表示键。

我设法确定的内容:

{cd_id, song_id} ? {song_title, length}
{cd_id} ? {title, label, artist, type, country}
Run Code Online (Sandbox Code Playgroud)
  • 这是正确的,说它满足1NF是否正确?
  • 我是否缺少更多的功能依赖项?

额外细节

所涉及的属性/列的上下文信息和/或样本值:

  • CD_id:009329
  • 标题:CD的标题
  • 艺术家:镍背
  • 类型:团体 | 独奏
  • 国家/地区:引用艺术家的国家或地区
  • Song_title: "把它烧到地上"
  • 时长:3:32 分钟

附加功能

一张CD下的每首歌,意味着会有重复。每次添加属于 CD 的歌曲。

normalization database-design dependencies

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

为什么删除的索引仍然存在,它是否可以防止表被更改?

我有一个列(名为RequestDate),我需要将其从 更改NULLNOT NULL,但是该列上有一个聚集索引,因此我首先需要删除该索引。

最初,索引是使用以下方法创建的:

CREATE CLUSTERED INDEX IX_RequestDate   
    ON [MyDB].[dbo].[MyTable] (RequestDate); 
Run Code Online (Sandbox Code Playgroud)

为了放弃它,我执行了:

Drop Index IX_RequestDate On [MyDB].[dbo].[MyTable]
Run Code Online (Sandbox Code Playgroud)

然后尝试使用以下方法更改列无效性:

ALTER TABLE [MyDB].[dbo].[MyTable] ALTER COLUMN [RequestDate] DATETIME NOT NULL
Run Code Online (Sandbox Code Playgroud)

但是得到了一个错误:

对象“MyTable”依赖于“RequestDate”列。

然后我MyTable使用这个查询列出了的索引,并且索引仍然存在,尽管现在它没有名称并且它的类型是HEAP(最初CLUSTERED):

TableName   IndexName   IndexType   ColumnOrdinal   ColumnName     ColumnType
MyTable        NULL       HEAP         0            RequestDate     datetime
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 为什么下降的索引还在?
  2. 由于这个仍然存在的索引,我是否得到了上面的依赖错误?
    如果是这样,我该如何删除它?
    如果没有,还有什么我应该检查的吗?我想避免丢掉桌子。

请注意,此表没有任何限制。

我使用的是 SQL Server 2014、OS Windows Server 2012 R2,以下是SCRIPT TABLE AS -> CREATE TO(我更改了一些列名)的输出:

CREATE TABLE [dbo].[MyTable]( …
Run Code Online (Sandbox Code Playgroud)

index sql-server alter-table dependencies

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

如何用干净的副本安全地替换旧表?

我创建了一个table_cleanedliketable并从tableinto插入了唯一值table_cleaned。现在我想更换tabletable_cleaned使用

DROP TABLE table;
ALTER TABLE table_cleaned rename to table;
Run Code Online (Sandbox Code Playgroud)

但第一条语句给出了cannot drop table cals_status because other objects depend on it.

我绝对不想使用,cascade因为它会删除所有相关行。

我怎样才能安全地用干净的副本替换旧表?

按照 Erwin Brandstetter 的建议,这是错误消息的缺失细节:

DETAIL:  default value for column id of table cals_status_deduplicated depends on sequence cals_status_id_seq
Run Code Online (Sandbox Code Playgroud)

postgresql sequence ddl dependencies

4
推荐指数
1
解决办法
370
查看次数

为什么这个关系是3NF?

我有一个关系:

\n\n
R4 = {{T,U,V}, {T \xe2\x86\x92 U, U \xe2\x86\x92 T, T \xe2\x86\x92 V}}\n
Run Code Online (Sandbox Code Playgroud)\n\n

从答案中我知道这个关系在BCNF中。

\n\n

我正在经历严格确定这种关系所遵循的正常形式的过程。我很清楚为什么这种关系是在 1NF 和 2NF 中,如果我假设它是在 3NF 中,BCNF 就很容易遵循。

\n\n

然而,3NF 的定义指出:

\n\n
\n

每个非素数属性都非传递地依赖于表中的每个候选键。

\n
\n\n

但是,据我所知, 和{T}都是{U}表的候选键,{V}因此传递依赖于{U}

\n\n

维基百科上有 3NF 的替代定义:

\n\n
\n

Carlo Zaniolo 在 1982 年给出了与 Codd 等效的 3NF 定义,但表达方式不同。该定义指出,表在 3NF 中当且仅当对于其每个函数依赖项 X \xe2\x86\ x92 A,至少满足以下条件之一:

\n\n
    \n
  • X 包含 A(即 X \xe2\x86\x92 A 是平凡的函数依赖)
  • \n
  • X 是一个超级键
  • \n
  • AX 的每个元素(A 和 …

normalization dependencies

3
推荐指数
1
解决办法
2108
查看次数

列出列依赖项

我想将表列的数据类型从varchar(x)更改为varchar(y)

为此,我需要知道此列有哪些依赖项。

有什么建议?

foreign-key sql-server metadata sql-server-2012 dependencies

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