电话号码在数据库模型中属于什么位置?

| 给定DVD出租商店的架构,客户的电话号码应属于地址表还是用户表,为什么?一种方法或另一种方法有什么好处吗?     
已邀请:
为什么还要有一个地址表(除非给一个客户想要多个地址)? 您的主要“客户”是客户。您不将DVD出租给某个地址,而是将其出租给一个人。当乘员带着您珍贵的“免费威利”收藏家版三部曲逃跑时,您将无法获得一块土地。 在一个人仅居住在一个地方的世界中,该地址将成为客户表的一部分(在每个客户一个电话的情况下,电话也将成为该表的一部分)。 如果您想使用多个地址,那可以,请使用单独的地址表将这些地址与客户联系起来。 但是您可能还应该为手机设置类似的设置。在客户表中最多允许每个客户最多0个电话号码(带有“ 0”列),或者(更好的是)有一个单独的电话表,每个客户可以使用任意数量的电话号码。 就像是:
customers:
    cust_id
    cust_stuff
addresses:
    cust_id references customers(cust_id)
    addr_seq_num
    addr_stuff
phones:
    cust_id references customers(cust_id)
    phon_seq_num
    phon_stuff
    
没有一个正确的答案,只能说“取决于”。 这实际上取决于您使用数据库架构进行建模的方式。电话号码在逻辑上属于用户,还是可能由多个用户共享的地址? 示例-手机号码可能与特定的人相关联,因此成为用户表的一部分。座机号码可能与特定位置或住所相关,因此是地址的一部分。     
信息建模的基本案例: 案例A:每个客户可以拥有多个电话号码。 在这种情况下,电话号码属于单独的表格。 情况A1。并非要求客户拥有电话号码的情况。也就是说,“关系”是1-1到0-n(即假设所有电话号码必须始终“为某些客户服务”)。没事做。 情况A2。实际上,确实需要每个客户都拥有一个电话号码。您可以将其建模为1-1到1-n的关系,但是1-n部分的\“ 1 \”在SQL系统中很难执行(并且在其中最便宜的系统中,可能只是不可能的) 。这并不意味着您不应该按原样正确记录业务规则。 案例B:每个客户最多拥有一个电话号码。 情况B1。每个客户都必须有一个电话号码。这意味着每个客户始终只有一个电话号码。电话号码最好放在客户表中。 (请注意,“拥有电话号码”是指“拥有该商店不知道的电话号码!”) 情况B2。客户不需要电话号码。在形式关系理论中,要求您定义一个单独的表,该表仅包含已知的电话号码。在诸如ER和UML的非正式建模技术中,您可以将其建模为“可选属性”。在SQL系统中,许多人会为此定义一个可为空的属性。 至于“属于地址的电话号码”:电话号码和地址之间是否存在与您的业务相关的任何“联系”?我的意思是,假设某个客户有两个地址和两个电话号码。重要的是要知道那两个电话号码中的哪一个属于那两个地址中的哪一个?手机号码“属于”哪个地址?     
只是关于您的网站/应用程序的一个假设,但通常我会说\“ Addresses \”,因为用户信息往往是您经常拔出网站来运行该网站的信息(ID,用户名,访问次数等),而电话号码可能会不是吗?     
“传统”是什么意思?由于用户可以拥有任意数量的联系电话号码(家庭,工作,个人移动电话,工作移动电话,传真等),因此似乎应该有单独的电话数字表,其中的每一行都包含一个数字和一个值,该值说明数字的类型。     
众所周知,联系信息很难在关系模式中建模。为了保持理智,我建议您对电话号码进行最少的检查。允许一个客户/帐户使用多个电话号码是一件好事;除此之外,很难对电话号码应用规则。 有一个众所周知的例外:许多比萨外卖店使用电话号码作为客户的主键。之所以起作用,是因为一般来说,有一个电话与披萨送达的地方相关联。另一方面,许多人不再拥有固定电话,所以也许即使这个系统也正在崩溃。无论如何,我认为这不适用于DVD出租。     
可能有多个客户拥有相同的电话号码:也许来自同一建筑物的多个人向您购买。 当您更新一位客户的电话号码时会发生什么?是否应该为应该共享该号码的其他人更新该号码? 是的,如果双方的地址仍然相同(但这实际上可能违反某些隐私法)。 如果现在有两个不同的地址,则为否。     

要回复问题请先登录注册