3NF - 我做得对吗?

问题描述 投票:-1回答:1

我有这个包含这些列的表,我想让它满足3NF。我所做的是将DOB,City,Province,Postcode移动到另一个名为2ndCus的表中。但是,我仍然不确定我是否做得正确。你怎么看?

CustomerID
LastName 
FirstName
DateofBirth
Address
City
Province
PostCode
Email
Phone#
database-normalization 3nf
1个回答
2
投票

好吧,不知道你的总需求,我不能确定,但​​合理的猜测看起来像这样:

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

这只是一个例子,它可以比这更多地涉及。

另一个想法:当涉及到地址类型,电子邮件类型,电话号码类型等时,这些可以通过检查约束或有效表来实现,具体取决于您在添加/删除类型中的“流失”量。

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.