0%

基础概念

函数依赖:

  • 函数依赖(Functional Dependency)表示在数据库表中的两个属性之间的关系,其中一个属性的值决定另一个属性的值。
  • 用符号表示为 X -> Y,其中 X 是决定属性 Y 的集合。

非平凡的函数依赖:

  • 非平凡的函数依赖是指 X -> Y,其中 Y 不包含于 X,这意味着 X 对 Y 有真正的函数依赖,而不是简单的平凡依赖。
  • 如果Y包含于X,则称X对Y是平凡的函数依赖。

完全函数依赖:

  • 完全函数依赖表示在属性组合 X 中的每个属性都对属性 Y 有函数依赖,而且没有 X 中的任何真子集可以决定 Y。
  • 如果存在 X -> Y,并且对于 X 中的每个属性子集 X’,X’ -> Y 都不成立,则称 Y 对 X 具有完全函数依赖。

部分函数依赖:

  • 部分函数依赖是指属性 Y 依赖于属性组合 X 中的一部分,而不是全部属性。换句话说,存在 X -> Y 且存在 X’ 是 X 的真子集,X’ -> Y 也成立。
  • 部分函数依赖通常需要通过规范化来消除,以维护数据库的一致性。

传递依赖:

  • 传递依赖发生在 X -> Y 和 Y -> Z 两个函数依赖条件下,其中 X -> Z 成立。这意味着属性 Z 对属性 X 具有传递依赖。
  • 传递依赖是规范化中的一个关键概念,通常需要考虑来减少数据表中的冗余和提高数据库的性能。

主属性和候选码:

  • 主属性是包含在候选键(候选码)中的属性,这些属性能够唯一标识数据库表中的每个记录。
  • 候选码是具有唯一性的属性组合,可以用来唯一标识表中的记录。

全码:

  • 全码是指属性组合中包含了所有的属性,这些属性组合不仅是候选码,而且是全码,因为它们可以唯一标识表中的记录。

范式

第一范式 (1NF):

第一范式是数据库中数据组织的最基本要求,它需要确保每个列的值都是不可再分的原子值,也就是每一列都不能包含多个值或数据的数组。

条件:

  • 每个列都必须包含原子值,不能包含重复的数据。
  • 所有列都应该有唯一的列名,以避免歧义。
    缺点:
  • 数据冗余问题:因为每行都包含完整的数据,可能会导致数据冗余,增加存储需求。
  • 更新异常:如果需要更新多行中的相同数据,必须确保更新所有行,否则会导致数据不一致性。

第二范式 (2NF):

第二范式建立在第一范式的基础上,它要求表中需要消除非主属性对候选码的部分函数依赖。

条件:

  • 数据表必须符合第一范式。
  • 所有非主键列必须完全依赖于主键。

缺点:

  • 增加复杂性:在实践中,实现第二范式可能需要多个表,这增加了数据库查询的复杂性。
  • 可能存在数据冗余问题,尤其是在多对多关系的情况下。

第三范式 (3NF):

第三范式进一步规范了数据库表的设计,要求表中需要消除非主属性对候选码的传递函数依赖。

条件:

  • 数据表必须符合第一范式和第二范式。
  • 非主键列之间不能相互依赖。

缺点:

  • 数据冗余问题仍然可能存在,尤其在大型数据库中。
  • 查询时需要多次连接表,可能影响性能。

巴斯-科德范式 (BCNF):

BCNF是对第三范式的进一步规范,它强调了主键的重要性,消除主属性对候选码的部分和传递函数依赖。
条件:

  • 数据表必须符合第一范式和第二范式。
  • 每个非主键列必须完全依赖于主键,而不是部分依赖。
  • 主键之间不能存在函数依赖关系。
    缺点:
  • 可能需要进一步规范化数据,增加表的数量,复杂性以及查询的复杂性。
  • BCNF的目标是确保数据的完整性和一致性,通过消除部分依赖和传递依赖来减少数据冗余。

###第四范式 (4NF):
第四范式是对多值依赖的规范化,它处理多个独立多值属性的情况。多值依赖指的是,一个表的某些列的值可以取多个值,而这些值与其他列的值无关。
条件:

  • 数据表必须符合BCNF。
  • 表中的任何非主键列不可同时依赖于主键的任何一部分。
    缺点:
  • 需要更多的表和关联,可能增加复杂性。
  • 第四范式的目标是处理多值依赖,确保数据表不包含重复信息,以保持数据库的一致性。

CNAME记录和A记录的区别

一、什么是A记录

A记录是DNS解析中最常见也是用途最广的一种DNS记录类型,它用于将域名指向对应的IP地址空间,通过添加A记录相当于告诉DNS系统,当用户输入域名时将其导向A记录所设置的服务器IP地址。如我们需要将http://www.example.com这个域名指向1.1.1.1这个IP地址,就需要添加一条A记录,即可完成域名与IP地址之间的绑定关系。需要注意的是A记录仅适用于IPv4地址解析,IPv6地址需要使用AAAA 记录。

二、什么是CNAME记录?

CNAME记录是DNS解析中另一种比较常见的记录类型,它与A记录不同,它代表的是主机名到主机名的映射。当我们想将域名指向另一个域名,而不是一个IP地址时,这时候就需要添加一条CNAME记录。比如,我们需要将http://www.example.com这个域名指向另外一个域名http://test.example.com,这时候就需要添加CNAME记录,而非A记录。

CNAME比较常见的应用场景是,一个公司拥有多个域名指向一个IP地址,如果IP地址发生变更,就需要针对每一个域名做A记录修改,不仅效率低,还容易出错。这种情况下,我们就可以使用其中一个域名或单独创建一个新的域名,将这个域名做一条A记录指向目标IP地址,然后将其他域名做CNAME记录指向该域名。当IP地址发生变更时,只需要对CNAME指向的域名做修改即可,而无需针对每一个域名做更改,这样就大幅提升了工作效率,降低了操作失误的风险。此外,CNAME记录还经常用于CDN、企业邮箱、全局流量管理的场景。

三、A记录和CNAME记录的区别

A记录和CNAME记录最终都是为了实现域名与服务器IP地之间的映射关系,但区别在于A记录直接将域名解析到一个IP地址,而CNAME记录则需要将域名解析到另外一个域名,然后由另外一个域名解析到IP地址。

四、A记录和CNAME记录哪个更好?

如果仅考虑网站的使用,两者之间没有太大的区别,一般情况下,如果没有太多的域名,只需要A记录就能实现域名解析效果。如果存在比较多的域名指向,采用CNAME记录能够实现域名解析的统一管理和修改,效率更高更便捷。另外CNAME记录的应用场景也更加广泛,很多服务商为了方便运维一般都建议用户使用CNAME记录绑定域名。

但从网站SEO的角度来看,CNAME记录也存在一些弊端,CNAME记录必须添加www或者其他前缀的域名,不能直接使用主域名做解析,这样就可能导致用户无法通过不含www的域名来访问网站,这对网站的SEO有一定影响。而A记录则不受这样的限制,在添加A记录时主机值填写“@”就能实现不含www的域名的解析。

五、总结
A记录和CNAME记录都能实现域名的解析效果,但各自作用和使用场景不尽相同,需要根据实际业务需求去做选择。


结合了国标麻将和日本麻将的优点,一种攻守兼备的新麻将规则,参数如下~
1.番种表
普通番种
番数 <center>番种 </center>
1番 明杠、暗杠、幺九刻、一色二连刻、老少副、一般高、二色同顺、连六、缺一门
2番 断幺九、双暗刻、双同刻(二色同刻)、平和、门前清、箭刻(中发白)、十二落抬(四副露)
2番 岭上开花、抢杠和、海底捞月、妙手回春
3番 不求人(门清自摸和)、全求人(四附露铳和)、碰碰和、三色同顺、花龙、双杠子、混带幺
4番 三色同刻、混一色、清龙、七对(不计门清)、纯带幺
6番 三暗刻、三色双龙会
8番 一色三同顺、一色三连刻、清一色
10番 十二金钗(三杠子)、混幺九、小三元
12番 一色四同顺、一色四连刻

ps:同类番种不计子番、非子番型可叠加

役满番种
分数 <center>番种名 </center>
50 大三元、四暗刻、九莲宝灯、一色双龙会、十八罗汉(四杠子)、绿一色、清幺九、连七对、天和、地和
70 纯正九莲宝灯、纯正绿一色、四暗刻单骑

ps:役满牌型不计普通番种、只与役满牌型叠加

奖励番种 </font>

番数 <center></center>
1番 宝牌、暗杠

ps:此番种仅胡牌后有效



2.计分
番数(F) 分数(N)
1-4 F
5-6 F+2
7-8 F+3
9-10 F+5
11-12 F+8
13-14 F+12
15-16 F+17
17 40
18 50


3.规则(无庄闲家)
  1. 放铳支付2F点数、自摸另外三家每人支付F点数。
  2. 振听,不能胡自己牌河里的牌。
  3. 立直后不能改听,算一番。开杠多一张宝牌,立直胡牌后可开一张宝牌。
  4. 两番非奖励番起和

第一章

个人博客的第一张帖子(😀

第二章

测试

第三章

结束