2

我正在尝试将规范化纳入我的数据库设计中,互联网上的一些解释让我有些困惑 - 我不确定我是否朝着正确的方向前进?

到目前为止,我有:

用户:

id 
username 
password 

用户配置文件设置:

id 
userid 
active 
dateofreg 

用户业务信息:

id 
userid 
businessname 
tags 

联系方式:

id 
userid 
address 
postcode 
email 
tel 

分类标签:

id 
userid 
services 
4

3 回答 3

1

address 将获得一个自己的表

contactinfo
==========
id
userid
idaddress
postcode
email
tel

address
==========
idaddress
street
houseNumber
postalCode
city
country

...

良好的基础知识:http ://databases.about.com/od/specificproducts/a/normalization.htm

于 2012-06-27T20:17:50.363 回答
0
**userbusinessinfo**
id
userid
businessname
tags

标签包含什么?这听起来像是不止一个值,在这种情况下你应该有一个UserBusinessInfoTags表。为了清晰起见,您还应该对字段使用驼峰式大小写,对表名使用正确的大小写。

**UserBusinessInfoTags**
id
userBusinessInfo_id
tag

UserProfileSettings持有什么?如果它与用户是一对一的关系,则该表可以与用户合并。

ContactInfo可以拆分出来。用户是否允许拥有多个地址、多个电子邮件和多个电话号码?每个人都应该有自己的表他们。如果没有,请将其与Users. 例如,如果他们可以有多个电话号码和地址,但不能有电子邮件,它看起来像。

**Users**
id
username
password
email

**UserAddresses**
id
userId
addressLine1
addressLine2
city
state
zipCode
country

**UserPhoneNumbers**
id
userId
phoneNumber
phoneNumberType
于 2012-06-27T20:22:26.890 回答
0

规范化是关于减少存储特定数据的次数。规范化可能会走得太远,因为数据库规范化程度越高,性能就越差。

在平面文件与完全规范化的极端情况下,您将从一个 sql 命中获得一条记录,而从其他表中获得 10 条或 20 条甚至更多的记录。

您标准化的程度(第三种范式是理想的 IMO,但其他人会不同意)完全取决于应用程序及其复杂性。

除了@duffy356 指出的地址之外,我会说你说得对。

于 2012-06-27T20:26:19.587 回答