02.3 主键,外键和索引
# 主键 外键和索引
DAX 基础知识## 什么是主键
数据表中任意两条记录不能完全相同,存在某个字段(或字段的组合)能唯一区分出不同的记录,这个字段(或字段的组合)被称为主键
主键的选择
不使用任何业务相关的字段作为主键
- 自增整数类型:为表的每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键;
全局唯一GUID类型:使用一种全局唯一的字符串作为主键,类似8f55d96b-8acc-4636-8cb8-76bf8abc2f57。GUID算法通过网卡MAC地址、时间戳和随机数保证任意计算机在任意时间生成的字符串都是不同的,大部分编程语言都内置了GUID算法,可以自己预算出主键。
联合主键
如何在表格模型中手动设置主键
不过你可以通过另外一种方式创建主键,在下文解决循环依赖问题时会提到Power PivotPower BI Desktop## 外键 参照完整性## 数据库中的其他键
超键(Super Key): 在关系中能唯一标识元组的属性集称为关系模式的超键
- 候选键(Candidate Key): 不含有多余属性的超键称为候选键,也叫最小超键。
- 代理键(Surrogate Key):当数据表中的候选键都不适合当主键时,例如数据太长,或是意义层面太多,就会请一个无意义的但唯一的字段来代为作主键。在实践中,代理键值通常是个自动递增的数字。
自然键(Natural Key):与代理键相反,是在业务逻辑中唯一确定一个事物的标识。身份证号(理论上,假设没有因技术原因造成的重复)就是一个自然键,用于确定一个人。
## 索引 ## 使用主键时的注意事项操作不当引发的报错
### 解决循环依赖问题
可以使用ProductKey作为目标列,来创建任意表和产品表之间的关系。执行此操作将确保ProductKey列可以唯一区分产品表。
- 使用上文介绍的表行为属性设置将ProductKey列设为行标识符
发生上下文转换时的可见行
SUMXSUMXSUMX