第八章 关系数据库的设计

第一范式

关系中任何属性的域均是原子的。

超码
唯一标识关系中一条元组的一个或者多个属性的集合。

平凡函数依赖

如果B包含于A,则形如A–>B这样的函数依赖是平凡的。

模式R上满足函数依赖集F的关系,说F在r®上成立。
F+表示F集合的闭包。

BCNF范式

按照定义任何只包含两个属性的模式都属于BCNF。
消除所有基于函数依赖发现的冗余
至少有一项成立:

  • A->B是平凡依赖;
  • A是模式R的一个超码。

分解成为BCNF的一般规则,存在非平凡函数依赖A–>B,且A不是R的超码:

  • (A并B);
  • (R-(B-A))。

出现问题:BCNF分解会妨碍某些函数依赖造成的检查。
引入一种比BCNF弱的范式:第三范式

第三范式

最小的超码:候选码。
对于F+中所有形如A–>B的函数依赖,下面至少一项成立:

  • A–>B是一个平凡的函数依赖;
  • A是R的一个超码;
  • B-A中的每个属性A都包含于R的一个候选码中。

当不存在保持依赖的BCNF设计时,必须在BCNF和3NF之间进行权衡。

Armstrong公理

AB代表A并B。
找到F的全部F+:

  • 自反律;B包含于A,则A–>B成立
  • 增补律;A–>B成立且C为一属性集,则AC–>BC成立
  • 传递律。如果A–>B和B–>C成立,那么A–>C成立。

公理扩展

  • 合并律:A–>B和A–>C成立,那么A–>BC成立;
  • 分解律:A–>BC成立,那么A–>B和A–>C成立;
  • 伪传递律:A–>B和BC–>D成立,那么AC–>D成立。

属性集的闭包

如果a–>B,称属性B被a函数确定;

例如:考虑模式R=(A,B,C,G,H,I)以及函数依赖集F{A–>B,A–>C,CG–>H,CG–>I,B–>H}
现在计算函数依赖集下的(AG)+,开始时result = AG/

  • 由A–>B,将result 变为ABG;
  • 由A–>C,result变为ABCG;
  • 由CG–>H,result变为ABCGH;
  • 由CG–>I,result变为ABCGHI。

用途

  • 用于计算a函数确定的属性集的高效算法可以用来判断a是否为超码,若a+包含属性R中的所有属性,那么a为超码;
  • 检查函数依赖a–>B是否成立,只需要看a+是否包含B;
  • 另一种计算F+的方法。

无关属性

去除函数依赖集中的一个属性不改变函数依赖集的闭包;
考虑函数依赖集F及F中的函数依赖a–>b

  • 如果A属于a,并且F逻辑蕴含(F-{a-b})并上{(a-A)–>b},则属性A在a中是无关的。
  • 如果A属于b,并且函数依赖集(F-{a-b})并上{a–>(b-A)}逻辑蕴含F,则属性A在b中是无关的。
    例如:AB–>C,和A–>C,那么B在AB–>C中是无关的。

如何检验一个属性是否是无关属性
例如:假定F包含AB–>CD,A–>E,且E–>C,检验C在AB–>CD中是否是无关的,先计算F = {AB–>CD,A–>E,E–>C}下AB的属性闭包,闭包计算为ABCDE,包含CD,推断出C是无关的。

F的正则覆盖

  • 任何函数依赖不存在无关属性;
  • 左半部是唯一的,例如不存在A–>B,A–>C,而应该写成A–>BC.

计算正则覆盖
考虑模式(A,B,C)上的如下函数依赖集F,先来来计算F的正则覆盖:
A–>BC,B–>C,A–>B,AB–>C

  • 存在两个函数依赖在箭头左边具有相同的属性集:A–>BC,A–>B将这些函数依赖合并成A–>BC.
  • A在AB–>C中是无关的,因为F逻辑蕴含(F-{AB --> C})并上{B–.>C}。
  • C在A–>BC中是无关的,因为A–>BC被A–>B和B–>C逻辑蕴含。
  • 于是正则覆盖为:A–>B,B–>C.

无损分解和有损分解

无损分解:分解过后的两个关系R1和R2进行自然连接和分解前的R相同。

R1∩R2是R1或者R2的超码,则R的分解就是无损分解。

### 关于ArcGIS License Server无法启动的解决方案 当遇到ArcGIS License Server无法启动的情况,可以从以下几个方面排查并解决问题: #### 1. **检查网络配置** 确保License Server所在的计算机能够被其他客户端正常访问。如果是在局域网环境中部署了ArcGIS Server Local,则需要确认该环境下的网络设置是否允许远程连接AO组件[^1]。 #### 2. **验证服务状态** 检查ArcGIS Server Object Manager (SOM) 的运行情况。通常情况下,在Host SOM机器上需将此服务更改为由本地系统账户登录,并重启相关服务来恢复其正常工作流程[^2]。 #### 3. **审查日志文件** 查看ArcGIS License Manager的日志记录,寻找任何可能指示错误原因的信息。这些日志可以帮助识别具体是什么阻止了许可服务器的成功初始化。 #### 4. **权限问题** 确认用于启动ArcGIS License Server的服务账号具有足够的权限执行所需操作。这包括但不限于读取/写入特定目录的权利以及与其他必要进程通信的能力。 #### 5. **软件版本兼容性** 保证所使用的ArcGIS产品及其依赖项之间存在良好的版本匹配度。不一致可能会导致意外行为完全失败激活license server的功能。 #### 示例代码片段:修改服务登录身份 以下是更改Windows服务登录凭据的一个简单PowerShell脚本例子: ```powershell $serviceName = "ArcGISServerObjectManager" $newUsername = ".\LocalSystemUser" # 替换为实际用户名 $newPassword = ConvertTo-SecureString "" -AsPlainText -Force Set-Service -Name $serviceName -StartupType Automatic New-ServiceCredential -ServiceName $serviceName -Account $newUsername -Password $newPassword Restart-Service -Name $serviceName ``` 上述脚本仅作为示范用途,请依据实际情况调整参数值后再实施。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值