如何创建DRY工作流程以将电话号码与用户关联起来

时间:2010-04-20 19:14:56

标签: php mysql weblogic

所以基本上我正在使用的是一个充满电话号码的数据库。

如果我从该电话数据库中获得其中一个用户,并且他们注册到我的网站,我想自动关联已存在的数据库中的数字,一旦用户签名,我将如何将这两个表连接在一起吗?

2 个答案:

答案 0 :(得分:1)

假设您有电话号码表和用户表,则需要将两个表的主键存储在一起

你可以这样做:

  • 在用户表格中,但您只能将一个电话号码链接到一个用户(如果您必须添加多个电话,则最后可能会添加phone_number_1,phone_number_2等字段。 。这太可怕了)
  • 在电话号码表中,但您只能将一个用户链接到一个电话号码(可能会出现与第一点相同的问题)
  • 在单独的表格中,但每次需要获取用户或电话号码时都必须使用加入

正确的选择取决于您尝试建模的数据之间的关系。

答案 1 :(得分:0)

因此,数据库将使用合成来构建。保留phone_numbers表w / phone_number_idusers表w / user_id,然后customer_phone_numbers表将user_ids映射到phone_number_ids。然后您的PHP代码将执行以下操作:

<?php

$user->save(); // save normal user data
$phoneNumbers = array();
foreach($user->getPhoneNumbers() as $phoneNumber) {
    $phoneId = getPhoneNumberId($phoneNumber); // get the phone number, or save a new record if necessary, and return that number
    $phoneNumbers[] =  $phoneId;
}

$user->savePhoneNumbers( $phoneNumbers ); // adds or removes phone numbers as necessary

编辑:根据您的反馈,听起来并不像您只是在寻找一种关联数据的方法。如果我理解正确,用户将通过手机注册您的网站,然后在网站上注册。当发生这种情况时,您希望将两个注册组合在一起。

用户是否可以通过手机创建完整的个人资料?您是否有适当的流程来验证用户提供的电话号码是否真的属于他们?

如果用户没有通过手机创建完整的个人资料,则听起来有两种类型的“个人资料”存储,完整的网站个人资料和电话个人资料。通过这种方式,您将获得具有phone_profile_id的电话配置文件和具有user_id的常规用户记录。然后,让用户验证他们的电话信息,并使用上面的组合表将他们与phone_profile_id相关联。

这有点接近吗?

谢谢, 乔