【问题标题】:Partitioning or not a table on mysql在mysql上分区或不分区
【发布时间】:2021-07-31 03:59:11
【问题描述】:

我知道我的问题没有“好的”答案,而且它是基于意见的。但由于我现在是自学这些东西,所以我需要建议。

我在 Mysql 上有一张关于“客户”的表格。在此表中有涉及客户信息的列,例如姓名、姓氏、出生日期、地址等。

每个客户都有自己的凭据(用户名、密码)。

现在我的问题是:最好将凭据保存在“客户”表中,或者创建一个单独的表是有意义的,以保证这些凭据的保护,并跟踪更改他们一直在,而不浪费空间重复所有其他客户的信息?

【问题讨论】:

    标签: mysql sql database database-design


    【解决方案1】:

    您需要回答一些关于您的数据的问题:

    • 列会改变吗?人们会更改姓名、地址等。
    • 凭据会发生变化,至少密码会发生变化。
    • 您需要什么样的历史记录?

    我的建议是用于不同目的的不同表格集:

    1. 一个表,用于定义客户 ID 和任何其他不可变信息(可能是成为客户的日期和相关信息)。
    2. 一个或多个带有 PII(个人身份信息)的表格。出于监管和隐私原因,您希望将 PII 分开。
    3. 历史表。你如何做到这一点取决于你的数据模型和你需要什么。一种简单的方法是数据模型中的每个表都有一个存档表。不过,我可能会推荐类型 2 表(即具有版本生效和结束日期的表)。
    4. 用于凭据的单独表。这些比 PII 更敏感,您需要控制访问权限。

    记住永远不要存储明文密码。而且您通常希望保留密码历史记录,以防止用户使用之前的密码。

    【讨论】:

      【解决方案2】:

      最好在 person 表中创建个人信息,在与客户有关系的另一个表中创建附加客户信息,如果您在另一个表中还有关于此人的任何其他信息并将其链接到 person 表.

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-04-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多