我有这个包含这些列的表,我想让它满足 3NF。我所做的是将 DOB、城市、省、邮政编码移动到另一个名为 2ndCus 的表中。但是,我仍然不确定我是否做得正确。你怎么看?
CustomerID
LastName
FirstName
DateofBirth
Address
City
Province
PostCode
Email
Phone#
我有这个包含这些列的表,我想让它满足 3NF。我所做的是将 DOB、城市、省、邮政编码移动到另一个名为 2ndCus 的表中。但是,我仍然不确定我是否做得正确。你怎么看?
CustomerID
LastName
FirstName
DateofBirth
Address
City
Province
PostCode
Email
Phone#
好吧,在不知道您的总要求的情况下,我无法确定,但合理的猜测如下所示:
CUSTOMERS
---------
CUSTOMER_ID
LAST_NAME
FIRST_NAME
DOB
ADDRESSES
---------
ADDRESS_ID
ADDRESS_TYPE
ADDRESS
CITY
PROVINCE
POSTCODE
EMAIL_ADDRESSES
---------------
EMAIL_ID
EMAIL_TYPE
EMAIL_ADDDRESS
PHONE_NUMBERS
-------------
PHONE_NUMBER_ID
PHONE_NUMBER_TYPE
COUNTRY_CODE
AREA_CODE
PHONE_NUMBER
然后您可以为多对多关系创建交集表,例如:
CUSTOMER_ADDRESSES
------------------
CUSTOMER_ID
ADDRESS_ID
CUSTOMER_EMAIL_ADDRESSES
------------------------
CUSTOMER_ID
EMAIL_ID
CUSTOMER_PHONE_NUMBERS
----------------------
CUSTOMER_ID
PHONE_NUMBER_ID
这只是一个例子,它可以比这更多地涉及。
另一种想法:当涉及到地址类型、电子邮件类型、电话号码类型等时,这些可以通过检查约束或有效表来实现,具体取决于您在添加/删除类型中的“流失”数量。
希望有帮助。