【发布时间】:2013-02-13 14:52:26
【问题描述】:
我有存储所有客户信息的 XML。每当我的 PHP 代码运行时,它都会将 XML 中的客户数据插入到数据库中。这是桌子。并非所有客户都是网络客户,因此我将所有客户信息直接保存到一个名为“客户”的表中。
客户:
customer_id int(40) primary key
CustomerAccountNumber varchar(60)
CustomerAccountName varchar(255)
AccountBalance double
InvAddressLine1 varchar(500)
Rep varchar(20)
为了存储“网络客户”登录名和用户名,我有一个名为“Web_customers”的不同网络帐户表,其中主键为“CustomerAccountNumber”。
Web_customers:
web_id int(11) primary key
UserName varchar(39)
CustomerAccountNumber varchar(39)
EmailAddress varchar(255)
Pwd varchar(70)
customer_type varchar(10)
样本数据:
customer_id CustomerAccountNumber CustomerAccountName AccountBalance InvAddressLine1 Rep
1 Accnt1 Myname1 1098 address1 Mik
2 Accnt2 Myname2 2398 address2 Richi
3 Accnt3 Myname3 2234398 address3 Santa
4 Accnt4 Myname4 2233398 address4 Den
由于我运行 PHP 脚本不断地重新加载数据,customer_id 经常更改,这就是为什么我不能在我的另一个表中选择它作为外键:
WEB_CUST:
web_id UserName CustomerAccountNumber EmailAddress Pwd customer_type
1 Accnt1 Accnt1 b@gmail.com 123 simple
2 Accnt212 Accnt2 dj@gmail.com 123 complex
3 Accnt313 Accnt2 asdj@gmail.com 123 complex
4 Accnt315 Accnt2 342j@gmail.com 123 complex
我有两种类型的客户,“简单”和“复杂”。简单客户有一个 CustomerAccountNumber,并且在对应的 WEB_CUST 表中只有一个用户名。
复杂客户是指具有相同帐号的客户。但问题在于“复杂”的客户。当具有用户名 Accnt313 和 Accnt2 的 WEB 客户更改信息时,它会更新我的 XML 表“客户”中具有相同 Accnt2 的所有其他客户。 注意 我的 XML 中的所有字段都使用插入批处理方法直接插入到客户表中。由于我的 XML 有超过 60,000 个,并且将数据解析和插入子表可能会引发性能问题。这就是为什么,我没有打破它起来,这就是为什么我正在寻找替代解决方案。
如何防止这种情况发生?在这种情况下如何正常化?由于 XML 解析效率和重新加载原因,有没有一种方法可以在不干扰主 XML 表“客户”的情况下进行规范化?
【问题讨论】:
-
这个
complex类型的客户不止一个人?即一群人? -
我认为您可以将
customer_type从web_cust移动到customer表。如果您不允许任何复杂的客户用户更改数据,那么他们如何更改数据? -
@DoSparKot。感谢您的回复。是的。可以将多个用户名分配给同一个帐号。在这种情况下,我需要打破主客户表?如果是这样,那么我如何使用这两个表进行规范化?
-
complex customer是一个人的现实吗?还是像公司一样在多个用户之间共享? -
@DoSparKot。请注意,表“customer”一直根据 XML 数据刷新。那么将 customer_type 移动到 web_customer 有什么意义吗?你能告诉PLZ吗
标签: php mysql database normalization