繁体   English   中英

主表和事务表之间的关系

[英]Relationships between Master and Transaction tables

在我的数据库设计中,我定义了主表(数据定义表,本质上是静态的),用于在我的网页中生成内容; 交易表,用于存储用户输入的数据(这些表本质上是动态的)。

考虑以下示例:

设置由国家具有1个硕士表:与中号的关系,具有1:有局部性中号的关系。

用于存储用户输入的个人详细信息的交易表用户。 用户表具有地址属性,如地址、州、城市和地区。 这些属性可以定义为来自相应主表的 1:M 关系( StateCityLocality表中的特定记录可以是User表中多个记录的一部分)。

在此处输入图片说明

我的问题:

  • 上面的设计是否正确?
  • 此外,我认为在LocalityUser表之间定义 1:M 关系就足够了,因为其他两个属性(City 和 State)可以从 Master 表之间的关系中获得。 将 ER 设计更改为以下会更好吗?在此处输入图片说明
  • 有什么好的替代方案可以满足我的要求吗?

PS:我是数据库设计的初学者。

您有什么疑问? 您是否需要按statecity进行搜索? 即使你按那些搜索,它也可能不会影响我要说的......

由于localitycitystate是“嵌套的”并且名称不太可能改变,我建议您的两个选项都“过度规范化”。 一张桌子上放着所有三样东西,这就是我要走的路。

在我看来,规范化有两个主要原因:

  • 定位一些可能会改变的字符串。 通过将它放在一个单独的表中并指向该表,您只能在一个地方更改它。 这在您的示例中是不需要的。
  • 节省空间(因此提供速度等)。 这确实适用于您的示例,但仅适用于locality级别,而不适用于address 您可能会争辩说city state可以去重复; 我会反驳“增加的复杂性(额外的表)并不能保证最小的好处。”。

旁注:如果localityzipcode ,那么您的选项 1 至少在我知道的一个地方有问题:Los Altos 和 Los Altos Hills(加利福尼亚的两个不同城市)都有邮政编码 9402294024 的部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM