在我的数据库设计中,我已经定义了主表(数据定义表,静态性),它将用于在我的网页中生成内容;和用于存储用户输入数据的交易表(这些表本质上是动态的)。
考虑以下示例:
由 State 组成的主表,与 City , City 具有1:M关系,与地点具有1:M的关系
用于存储用户输入的个人详细信息的事务表用户。 用户表具有地址,州,城市和地区等地址属性。这些属性可以定义为1:来自相应主表的M关系( State , City , Locality 表中的特定记录可以是用户表中的记录的一部分。)
我的问题:
PS:我是数据库设计的初学者。
答案 0 :(得分:0)
你有什么疑问?您是否需要按state
或city
进行搜索?即使你按照那些搜索,它也可能不会影响我要说的......
由于locality
,city
和state
已嵌套'并且名称不太可能改变,我建议你的两个选项都是"过度标准化"。一张包含所有三个项目的表格就是我要去的方式。
正如我所看到的,正常化有两个主要原因:
locality
级别,而不是address
级别。您可能会认为可以对city
和state
进行重复数据删除;我会反对"增加的复杂性(额外的表格)不能保证最小的利益。"。附注:如果locality
为zipcode
,则您的选项1至少在我知道的地方遇到麻烦:Los Altos和Los Altos Hills(加利福尼亚州的两个不同城市)两个都有段码94022 和 94024。