【问题标题】:Row synchronization across tables?跨表行同步?
【发布时间】:2012-11-19 09:40:15
【问题描述】:

我不知道如何搜索,所以在这里。

我自己的术语是“同步”和“偏离”数据库模式。如果有这一切的官方术语,我想知道。

这可能看起来有点愚蠢,但我一直被困在我想去的方向上。我是创建数据库模式的新手。我在 Java 应用程序上使用 SQLite,并使用单个 .db 文件在不同的表中包含不同类别的信息。所以第一个表包含accountID/username/password;也许下一个表是 accountID/firstname/lastname/email。随着新功能的实施,我计划在未来添加更多表格。

我在这里遇到问题的决定是......如果用户创建了一个基本帐户,但没有填写其他任何内容 - 我应该为其他表格创建一个空白行吗?或者我不应该添加一行,而是在他们为这些表输入数据时创建行(可能是几个月后)?我希望这是有道理的。

有什么优点/缺点?实施/编程?效率?等等

谢谢

【问题讨论】:

    标签: sql database sqlite schema storage


    【解决方案1】:

    IMO,所有单值用户属性都应位于一个表中,即用户表将包含以下列:

    • 帐户ID
    • 用户名
    • 密码
    • 名字
    • 姓氏
    • 电子邮件

    在加入用户时,您可以将每个属性指定为强制或可选。可选属性将是数据库中的 NULLable 列。当用户为这些属性指定值时,您只需在表中更新它们即可。

    接下来,在添加新功能时,如果您碰巧遇到用户的单值属性,则需要更改 users 表并将该列添加为默认值为 null。

    如果向用户添加新属性的频率太高,那么您可以转向属性表模型,其中每一行将存储用户的一个附加属性。 users 表和此 user_attrs 表之间将存在一对多的关系。 HTH。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 2013-02-19
      • 2014-02-23
      • 1970-01-01
      • 2011-02-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多