逻辑模型 mySQL 中的依赖项

Posted

技术标签:

【中文标题】逻辑模型 mySQL 中的依赖项【英文标题】:Dependencies in a logical model mySQL [closed] 【发布时间】:2021-06-29 05:14:33 【问题描述】:

我正在为一个数据库做逻辑模型,其中有实体 Customer。 每个客户都会有一些“固定”属性(姓名、姓氏、地址、电话号码……)和其他一些有时必须更新的属性(用户名、密码、年龄、体重……)

现在我的问题是:你建议我创建两个不同的表吗,像这样:

Customer ( CustomerID, Name, Surname, Address, telephone number ) 
Customer_Spe ( CustomerID, age, Username, Password, weight )

或者,一个具有所有这些属性的单个?

Customer ( CustomerID, Name, Surname, Address, telephone number, age, Username, Password, weight) 

你能证明你的答案吗?

【问题讨论】:

基于意见。这两种选择各有利弊。 你会选择哪一个? @Akina 【参考方案1】:

在大多数数据库中,根据更新频率在第二个表中分离属性并没有特别的优势。

分离属性有正当理由:

您可能希望在单独的表中与 PII(隐私)相关的属性来控制访问。 您可能希望将不常用的属性放在单独的表中,以减少为大多数查询读取的数据量。 如果附加表是可选的,那么您可以通过在第二个表中没有行来减少数据大小。 如果您有非常易失性数据且更新非常频繁(认为每秒有很多),那么您可能需要分离出这些列以减少对其余数据的争用。

您问题中的数据似乎不经常更新,因此最后的考虑不适用。

【讨论】:

【参考方案2】:

理论上说,您可以制作包含最少列集的表格,最多只有一个文本字段和 ID 的表格。

实际上,在大多数情况下,如果它与同一个实体相关并且大多数 SQL 查询所有这些字段,那么您可以在一个表中完成所有操作。

许多表会增加 cpu 时间来加入它,并且可能会大大增加 SQL 的复杂性。大型 SQL 很难维护。

【讨论】:

以上是关于逻辑模型 mySQL 中的依赖项的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring Boot 服务作为批处理作业中的依赖项的空指针异常

如何将具有文件外依赖项的 sklearn 模型保存到磁盘?

(三)Unity AB包中的依赖项

附加依赖项库目录包含目录

Maven 依赖项 SpringBoot 和 MySQL

MySQL:在具有多个外键依赖项的表上进行更新