2013-10-27 58 views
1

我想设计他的数据库移动联系人。这里是看链接我已经设计:联系人数据库设计

http://upload7.ir/images/87645261298795662612.jpg

这里是我的样!它不完整,但它只是一个小小的尝试。我在这里遇到问题!我想拥有无限的传真号码或电话号码等。

用这个设计不能!无论如何在设计之后添加另一列?

还是我必须完全改变这个?

如果我改变了这个我该怎么办?拿另外一张桌子,并把它的所有电话号码,并添加1列获得有关其电话/传真/手机的信息?如果我这样做,总有一个数据在我的数据库中不断重复,并且它不好!寻找另一个建议。

感谢:-)

+0

是的,你可以把彼此表联络号码(ID,使用ContactID(外键,从联系人表中获得),数量,类型(传真/电话/手机),详情)。在这个ContactID中每次都会重复,但它会比分别获取3个表格好得多,这是处理与同一个Contact有关的多个数据的标准化方法。您的关心或其他建议,将在这里赞赏。 –

+0

但这个数据库ganna是为移动联系人!我想如果我们要使用这种表格,它会让我们的数据库变慢!因为如果我们有10000条记录或更多记录,并且我们希望为#1联系人添加更多的移动设备,则它将位于表格末尾,并且会使我们的程序稍微延迟以记录该记录。 如果我们对每种数字使用Specific表,它将使我们的搜索速度更快,并且我们可以获得更好的查询,因为我们可以将索引表仅用于手机号码,可以通过手机号码或更多选项查找人员。 再次感谢你Ankit Arora – Saroukhani

+0

顺便说一下,当我说有总是不断重复的字段是类型字段。对于每个联系人ü应该不断给记录是这样的: 1,1,123456,手机 2,1,123457,手机 3,2,123333,手机 你可以看到移动领域的不断重复。 – Saroukhani

回答

1

这是一个常见的设计,用于举行移动/传真/等。数字。每个用户可以根据需要拥有尽可能多的移动/传真/电话记录。您可能需要更改美国的数字表,这里的电话号码如下所示:1-234-567-9876。 1是国家代码,234是“区号”,567是“交换”,9876是“站”。我用char数据类型的情况下,我必须存储多个具有领先的0

number_types 
    id    unsigned int(P) 
    description  varchar(15) 

+----+-------------+ 
| id | description | 
+----+-------------+ 
| 1 | Mobile  | 
| 2 | Phone  | 
| 3 | Fax   | 
| .. | ........... | 
+----+-------------+ 

numbers 
    id    unsigned int(P) 
    country_code char(3) 
    area_code  char(3) 
    exchange  char(3) 
    station   char(4) 
    extension  varchar(10) // Default to NULL 

+----+--------------+-----------+----------+---------+-----------+ 
| id | country_code | area_code | exchange | station | extension | 
+----+--------------+-----------+----------+---------+-----------+ 
| 1 |   98 |  21 |  555 | 5555 | NULL  | 
| 1 |   01 |  555 |  555 | 5555 | NULL  | 
| .. | ............ | ......... | ........ | ....... | ......... | 
+----+--------------+-----------+----------+---------+-----------+ 

users 
    id    unsigned int(P) 
    first_name  varchar(30) 
    last_name  varchar(30) 
    ... 

+----+------------+-----------+-----+ 
| id | first_name | last_name | ... | 
+----+------------+-----------+-----+ 
| 1 | Saroukhani | Smith  | ... | 
| 2 | Benny  | Hill  | ... | 
| .. | .......... | ......... | ... | 
+----+------------+-----------+-----+ 

users_numbers 
    id     unsigned int(P) 
    user_id    unsigned int(F users.id) 
    number_id   unsigned int(F numbers.id) 
    number_type_id  unsigned int(F number_types.id) 

+----+---------+-----------+----------------+ 
| id | user_id | number_id | number_type_id | 
+----+---------+-----------+----------------+ 
| 1 |  1 |   1 |    1 | 
| 2 |  2 |   2 |    1 | 
| .. | ....... | ......... | .............. | 
+----+---------+-----------+----------------+ 
+0

是的。第三种正常形式是正确的路! –