-1

首先,我将说明情况。请仔细阅读。

我正在创建一个 java 电话簿软件。我创建了一个包含名称、地址、mobile1、mobile2、landPh1、landPh2 等字段的数据库。完成 90% 后,我决定扩展它的功能。因此,我开始使用 VCards,现在该程序可以读取 VCards 并将它们添加到数据库中。然后我决定使用存储在数据库中的数据编写 VCards。这里,问题出现了!!

VCard 没有名为“名称”的字段,就像我在我的软件中那样。取而代之的是,他们有“名字”、“姓氏”和“中间名”。VCard 没有我的软件中的“地址”。它们有“国家”、“城市”和“街道地址”。现在,我怎样才能得到这些单独的细节????我只能得到名字,而不是第一个,最后一个等。我只能得到地址,而不是国家,城市等。现在我该怎么办??????以下是我的建议

  1. 获取完整名称。将其设置为 VCards 的“名字”字段。您将在那里获得完整的名称。对于地址,将完整地址添加到 VCard 的“街道地址”字段。

  2. 编辑数据库,更改它并添加缺少的字段。但是,数据库将看起来像这样

名字,地址,mobile1,mobile2,landPh1,landPh2,middleName,lastName,国家,城市

很乱,不是吗?

我无法删除表格,因为已经根据当前格式创建了很多东西!改变它需要很多时间!

我不知道上述建议是否适用于良好的软件工程概念。如果你有更好的方法,我也很高兴听到。请帮忙!!

4

2 回答 2

2

您在最初的数据库设计中犯了许多错误。您应该尽早纠正这些错误,因为您维护具有设计缺陷的系统的时间越长,以后纠正它们的难度就越大。

简而言之,您需要:

  1. 确保每一列包含一个且仅一个信息。这意味着名称部分的单独列,地址部分的单独列等。

  2. 您需要确保您没有将同一项目的多个实例存储在一条记录中。这意味着为电话号码创建一个单独的表。该表很可能包含三列,一个指向联系人的 ID,一个用于电话号码的列,以及一个描述。

您将永远无法准确地“解码”100% 的可能地址和名称。

您可以通过谷歌搜索了解更多关于良好数据库设计规则的信息database normalization

不要担心表中列的顺序或表中的记录。SQL 不包含默认排序的概念,而是在检索时根据需要对列和记录进行排序。

于 2012-09-02T19:36:23.093 回答
1

FWIW,我会:

  • 不要太担心数据库中列的物理顺序。新列通常附加在生产数据库的末尾而不重新创建表。
    • 保持数据规范化,即不要将所有姓名和地址字段合并为一列,因为以后拆分这些字段很麻烦。
    • 您可能会考虑将您的地址和 vcf 卡数据标准化为单独的表,这些表与您的人员/联系人表 1:N。这将允许每个人拥有多个电子名片和地址。
于 2012-09-02T18:10:10.593 回答