在mysql上分区或不分区
Posted
技术标签:
【中文标题】在mysql上分区或不分区【英文标题】:Partitioning or not a table on mysql 【发布时间】:2021-07-31 03:59:11 【问题描述】:我知道我的问题没有“好的”答案,而且它是基于意见的。但由于我现在是自学这些东西,所以我需要建议。
我在 mysql 上有一张关于“客户”的表格。在此表中有涉及客户信息的列,例如姓名、姓氏、出生日期、地址等。
每个客户都有自己的凭据(用户名、密码)。
现在我的问题是:最好将凭据保存在“客户”表中,或者创建一个单独的表是有意义的,以保证这些凭据的保护,并跟踪更改他们一直在,而不浪费空间重复所有其他客户的信息?
【问题讨论】:
【参考方案1】:您需要回答一些关于您的数据的问题:
列会改变吗?人们会更改姓名、地址等。 凭据会发生变化,至少密码会发生变化。 您需要什么样的历史记录?我的建议是用于不同目的的不同表格集:
-
一个表,用于定义客户 ID 和任何其他不可变信息(可能是成为客户的日期和相关信息)。
一个或多个带有 PII(个人身份信息)的表格。出于监管和隐私原因,您希望将 PII 分开。
历史表。你如何做到这一点取决于你的数据模型和你需要什么。一种简单的方法是数据模型中的每个表都有一个存档表。不过,我可能会推荐类型 2 表(即具有版本生效和结束日期的表)。
用于凭据的单独表。这些比 PII 更敏感,您需要控制访问权限。
记住永远不要存储明文密码。而且您通常希望保留密码历史记录,以防止用户使用之前的密码。
【讨论】:
【参考方案2】:最好在 person 表中创建个人信息,在与客户有关系的另一个表中创建附加客户信息,如果您在另一个表中还有关于此人的任何其他信息并将其链接到 person 表.
【讨论】:
以上是关于在mysql上分区或不分区的主要内容,如果未能解决你的问题,请参考以下文章