跨表的行同步?

时间:2012-12-01 07:57:45

标签: sql database sqlite schema storage

我不知道如何搜索这个,所以就是这样。

我自己的条款是“同步”和“偏离”数据库模式。如果有一个正式的术语,我想知道它。

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

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

有哪些优点/缺点?执行/编程?效率?等

由于

1 个答案:

答案 0 :(得分:2)

IMO,所有单值用户属性应该驻留在一个表中,即users表将包含以下列:

  • 帐户ID
  • 的userName
  • 密码
  • 的firstName
  • lastName的
  • 电子邮件

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

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

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