专注Java教育14年 全国咨询/投诉热线:444-1124-454
赢咖4LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 浅析数据库设计原则

浅析数据库设计原则

更新时间:2022-07-25 10:16:17 来源:赢咖4 浏览506次

Java教程中大家会学到很多知识,设计原则就是其中一部分,那么,数据库相关设计原则有哪些?赢咖4小编来为大家解答。

浅析数据库设计原则

不使用外键

在分布式系统的 SQL 数据库中,外键可能会成为障碍。我们需要以特定顺序对外键保存的记录应用更改。请注意,并非所有 SQL 引擎都允许延迟一致性。允许在事务中进行不一致的更改不符合 SQL 标准。

一些开发人员通过使用可为空的外键来消除这种障碍。

此外,如果我们没有很好地考虑我们的查询,使用外键可能会导致死锁!通过删除外键,我们减少了死锁的机会。

如果没有外键,我们可以依靠正确使用的事务、隔离级别以及创建将数据库从一个正确状态移动到另一个正确状态的正确查询。

不使用级联

SQL 数据库允许用户定义外键的级联行为,以控制当有人更新或删除父表中的行时会发生什么。

即使可以使用没有外键的级联,它也不会这样做,因为级联隐藏了用于更新和删除的业务逻辑。

了解时区

可以说,人类在时间方面面临的最大问题是时区。时区总是感觉含蓄,并且取决于地理环境,不包括臭名昭著的夏令时。

您可以使用 UTC 保存时间戳,因为它是独立于位置和夏令时的全球标准。是使用专用类型还是仅使用整数定义的纪元时间取决于您。最后,所有与时间相关的操作都必须导致整数比较。

使用行时间戳

建议您知道数据库中每一行(文档)的创建、更新或删除时间。您可以使用它来审计数据库和调试。此外,您可以使用这些时间戳进行排序,尤其是对于没有自然排序的实体。

认识演员

谁是演员?演员,小编的意思是改变系统中数据的人或服务。一个人可以使用提供的 UI 更改数据。服务可以在调度程序定期调用时修改数据。

您可能希望在每次数据更改时保留有关参与者的信息,至少用于日志和审计目的。根据产品要求和可用资源,您需要确定报告系统的准确性。

使用编号枚举

在处理特定实体的状态或状态时,您可能倾向于将它们作为字符串保存在各自的数据库字段中。它可以让数据库管理员轻松检查这些值。另一个论点是您总是可以购买更多的磁盘空间。

事实可能介于两者之间,因为小编认为使用Java整数类型需要精确规划、节省空间(包括索引空间)并允许更快的比较。此外,在恶意获取数据库数据的情况下,它会向攻击者隐藏部分业务逻辑。也就是说,我认为在产品的概念验证阶段使用基于字符的字段是合理的。

限制列名长度

小编相信您应该使列名尽可能短。小编发现编写和阅读简洁的 SQL 查询更容易。如果您一直发送大量查询(您可能也希望为此使用内部存储的过程),那么您可能会因为名字太长而产生额外的流量。

在将列名放入每个写入对象的 NoSQL 数据库中,如果坚持使用长字符串,可能会浪费大量磁盘空间!

限制列值长度

根据经验,您应该始终知道保存特定值需要多少空间。

数据库引擎使用字节数而不是字符数来限制文本字段的长度。使用 Unicode 字符串时可能会令人惊讶。此外,您应该检查文本列的编码和排序规则——您可以在许多数据库级别(整个数据库、表或列)上应用这些属性。

对于实数,通常有三种可用类型:

以 2 为底的浮点单精度类型,

浮点双精度类型(使用与之前相同的基数),

使用以 10 为底的固定精度。

存储实数可能是一个挑战,因为后端可能不支持与数据库相同的精度标准。

使用整数时,我们需要在字段级别分配足够的字节。我们应该决定是否支持签名或未签名数据。同样,您的后端可能不支持与数据库相同的整数标准。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>