有数据,还要能有规则地找和改
假设小店记录订单编号、顾客编号和金额,零散文件也能保存这些文字。但当多位工作人员同时查找、修改和统计时,还需要处理结构、权限、重复与并发等问题。
数据库管理系统把许多管理能力组织起来,应用通过约定接口访问数据。它不是让数据凭空变正确,而是提供一些可执行的规则;哪些字段必填、谁能修改仍需要设计。
两张表,用编号把记录接起来
- 01读者表
保存读者资料
- 02借阅表
用编号关联借书行为
关系型数据库的简化例子;不同数据库可以采用不同组织方式。
两张表怎样知道说的是同一个人
假设读者表里有一行:编号17,姓名小林;借阅表里记录:读者编号17,书籍编号B08,归还日期周五。借阅记录不用每次重抄小林的全部资料,通过编号就能与读者记录对应。查询“谁借了B08”,程序便能把相关记录联系起来。
同名的人不能因此混成一个人,所以编号比只写姓名更适合做明确标识。小林改了联系方式,也可以更新对应资料,而不是在每笔借阅里到处找一遍。这里以关系型数据库的表为例;其他数据库还可按文档、键值等方式组织数据。数据库让记录能被有规则地保存和查询,至于规则是否设计合理、记录是否录对,仍需要系统和使用者负责。
关系数据库用表来组织
在关系数据库的常见表示中,一行是一条记录,一列描述一种属性。订单和商品可以分别放在不同表里,再通过编号等关系联系起来,不必把一切重复抄进一张大表。
并非所有数据库都以这种方式组织,文档、键值等模型有不同结构和使用场景。不能因某个产品名字里有数据库,就认定它支持完全相同的查询、事务和约束。
放进数据库之后仍需维护
为了让多人可靠使用,系统还需要决定谁能改数据、改动怎样保存、出错后怎样恢复。这些是管理能力和具体规则,不是把文件放进去就自动得到正确结果。
例如应用误把正确金额覆盖成错误金额,数据库可能严格执行了这次合法写入。要减少这种问题,还需要输入校验、访问权限、操作记录和可验证的恢复方案。