[英]Best practice to insert multiple contacts for single record in mysql
如果我是你,我会在客户表中添加客户信息。 如果他们(客户)有多个联系电话,则可以在“更多信息”列中输入类似信息,当他们再次预订您的身份时,他们将已经有一个记录。 它会给您一种记住他们是谁的感觉(有点像市场策略[也许?])
我可以想到3种方式:
使用单独的表格并与预订具有一对多关系
使用JSON字符串将它们存储在一个字段中
使用多个字段,例如最多5个(联系电话1,联系电话2 ..)
做出明智的选择。 首先考虑您(将)需要什么以及您打算做什么,然后选择方法。
创建一个数组并使用JSON编码
$contact_number = array(
'mobile' => '+1 32313213',
'fax' => '+1 32432432',
'phone' => '+1 8984234234'
);
$booking_contact = json_encode($contact_number);
现在,您可以将$booking_contact
插入数据库。 如果您要使用它,只需解码JSON,即可为关联数组传递true
//Suppose $row is containing you row result
$booking_contact = json_decode($row['booking_contact'], true);
echo $booking_contact['mobile']; // Output +1 32313213
echo $booking_contact['fax']; // Output +1 32313213
echo $booking_contact['phone']; // Output +1 8984234234
RDBMS中有一个潜规则-永远不要使用逗号分隔的字符串来实现m:n关系-只是违反了第一个范式。
有关此问题的更多信息,请看这里
在您的情况下,您需要:
booking
(如您已经提到的) contact
(我假设您已经有一个,因为您已经有一个号码)一张桌子 booking_contact
与字段( booking_id
, contact_id
) 现在,如果您想获取预订ID中的所有联系人,只需使用Codeigniter样式编写
$query = $this->db
->select('*')
->from('contact c')
->join('booking_contact bc', 'c.contact_id = bc.contact_id', 'left')
->join('booking b', 'bc.booking_id = b.booking_id')
->where('b.booking_id', 1)
->get();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.