有人可以简单地向我解释一下什么是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 不感兴趣
我是 dbms 的新手。我看过一个关于函数依赖的讲座视频。但我有点困惑,函数依赖是对整个数据库还是特定模式的约束?
在不久的将来,我的公司将转向更严格的安全模型。
作为其中的一部分,我们正在将特定服务器更改为新模型并测试我们所有现有的流程。我经常使用的一个进程利用 SMO 框架按依赖顺序编写数据库对象的脚本,因此我们可以在另一台服务器上运行这些脚本。
依赖顺序部分非常重要,因为我们有很多嵌套对象(想想引用其他视图的视图)。
使用新的安全模型后,此脚本停止正常工作。
我也在 SSMS(针对 2008r2 实例的 SSMS 2012)中进行了测试,并且View Dependencies
在引用同一数据库中另一个视图的视图上使用不会在Objects on which [this view] depends
.
更令人不安的是,如果我sp_depends
在有问题的视图上运行,我确实会得到一个准确的依赖项列表。
我做了一些研究,找不到明确的答案,所以我希望有人能帮助我:
用户需要哪些特定权限才能准确查看 SQL Server 2008r2 和/或 SQL Server 2012(我们即将升级)中的依赖项。
我试图删除 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)。
如何摆脱这些索引以便我可以删除分区方案?
假设我有一个这样的函数:
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 个分析函数,它结合了来自不同来源的数据,并且有多个基于不同区域类的视图。 )
我相信这个关系/表是第一范式(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)
所涉及的属性/列的上下文信息和/或样本值:
附加功能
一张CD下的每首歌,意味着会有重复。每次添加属于 CD 的歌曲。
我有一个列(名为RequestDate
),我需要将其从 更改NULL
为NOT 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)
我有两个问题:
请注意,此表没有任何限制。
我使用的是 SQL Server 2014、OS Windows Server 2012 R2,以下是SCRIPT TABLE AS -> CREATE TO
(我更改了一些列名)的输出:
CREATE TABLE [dbo].[MyTable]( …
Run Code Online (Sandbox Code Playgroud) 我创建了一个table_cleaned
liketable
并从table
into插入了唯一值table_cleaned
。现在我想更换table
与table_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 的建议,这是错误消息的缺失细节:
Run Code Online (Sandbox Code Playgroud)DETAIL: default value for column id of table cals_status_deduplicated depends on sequence cals_status_id_seq
我有一个关系:
\n\nR4 = {{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}
。
维基百科上有 3NF 的替代定义:
\n\n\nCarlo 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 和 …
我想将表列的数据类型从varchar(x)
更改为varchar(y)
。
为此,我需要知道此列有哪些依赖项。
有什么建议?
foreign-key sql-server metadata sql-server-2012 dependencies
dependencies ×10
sql-server ×4
postgresql ×2
alter-table ×1
ddl ×1
foreign-key ×1
functions ×1
index ×1
metadata ×1
partitioning ×1
schema ×1
sequence ×1
view ×1