关系数据库表之间有哪几种关系类型

嗯...关系完整性...这玩意儿挺麻烦的。

你看啊,2 02 2 年,我那个朋友,他搞数据库,天天就琢磨这事儿。
域完整性吧,说白了就是...字段能填啥玩意儿,得规定好。
比如,某个表里有个“年龄”字段,那这年龄,不能是负数啊,得是正整数。
2 02 2 年那时候,好像标准都这么定,得是 int 类型,或者类似这么个概念。
不能填“二十多岁”,也不能填“不详”。
类型也得对,字符串就是字符串,数字就是数字,不能混着来。
这要是混了,查询的时候就乱套了,肯定不行。
我后来才反应过来,这其实就是防止数据乱输入,保证基本靠谱。

然后是实体完整性。
这好理解点。
就是表里的每一行,都得有它唯一的标识,不能俩行一模一样。
比如,员工表,那肯定得有员工号,这个员工号就不能重复,也不能是空的。
2 02 2 年,我们公司那个系统,新来的员工,他那个员工号,系统自动给,不能手动改,为啥?就是保证唯一。
主键就是干这个的,必须 unique,而且不能 null。
这就是实体完整性。
简单说,每条记录都得有自己独一无二的“身份证”。

最后那个参照完整性,这个更绕一点。
就是一个表里的某个字段,它引用了另一个表的主键。
比如,订单表里有客户ID,这个客户ID就得是客户表里某个存在的客户号。
你不能在订单表里随便写个不存在的客户号。
2 02 2 年,我们那个ERP系统,搞开发,他就卡在参照完整性这儿。
一个订单,关联的客户必须得是客户表里有的,不能写个“1 2 3 4 5 ”,客户表里根本没有“1 2 3 4 5 ”这个人。
这保证了数据的一致性,你不会突然发现一个订单,对应不了任何一个客户。

反正...就是这样。
域、实体、参照...都挺重要的。
我当时也懵,后来慢慢就明白了。
可能我偏激,觉得这玩意儿就是死规定,但确实有用。
保证了数据不乱。

数据库中表之间的关系有哪三种关系

简单来说,数据库就像一个大仓库,用来存数据。
里面有几类关系:一对一、一对多、多对多。
要保证数据完整,得看三个方面:数据本身对、数据实体对、数据参照对。

这仓库里的数据多,可以存很多很多条,但要好好管理,否则查起来慢死。
现在互联网上到处是数据,什么出行、消费、上网记录都是数据。
不光是文字,图片、音乐、声音也算数据。

数据库发展历程中有哪三种数据库

上周整理旧电脑,翻出一张2 01 0年的会议照片。
那时候大家围着一张大桌子,手里拿着打印出来的数据库架构图,激烈地讨论着是继续用Oracle还是尝试MongoDB。
老板最后拍了拍手说,"得看用户增长的速度,老王你算一下下个季度并发量。
"老王挠挠头,回去对着Excel算了一整天。

关系型数据库就像老式图书馆的卡片目录,每本书都有固定位置。
记得当年帮客户迁移数据时,MySQL的工程师非要按精确的范式设计表结构,连客户常用的模糊搜索都要拆成三张关联表。
客户最后妥协了,但系统上线后搜索响应总比别人慢半拍。

非关系型这边更灵活。
有次去某电商平台看技术分享,他们用Redis做会话缓存,半夜居然把整个机房的一半电源切了换新服务器,就为了省电。
数据分析师小张说他们用MongoDB时,最头疼的就是调试查询,"有时候数据明明存在,但根据索引规则根本找不到"。

分布式数据库是个玄学。
有家物流公司给我讲过他们的故事:在杭州部署了三层Greenplum集群,刚上线时发现数据在节点间迁移导致订单显示延迟。
运维小哥连夜把所有机器贴满便利贴写着"勿动",这才稳住阵脚。
现在他们年会还专门有"感谢数据没乱跑"的部门奖。

等等,还有个事。
上周在GitHub上看Hadoop的源码,发现某些Elasticsearch集群的文档里居然有2 01 5 年写的"注意不要超过3 2 节点"。
突然想到分布式系统最迷人的地方,大概就是每个节点都在偷偷做自己的事,但组合起来又能像人脑一样思考吧?