gpt4 book ai didi

mysql - 主表和事务表之间的关系

转载 作者:行者123 更新时间:2023-11-30 22:46:33 27 4
gpt4 key购买 nike

我定义了主表(数据定义表,本质上是静态的)来在我的网页中生成内容;用于存储用户输入数据的交易表(这些表本质上是动态的)。考虑以下示例:

一组主表,包含与 City 具有 1:M 关系的 State,与 Locality 具有 1:M 关系的 City 。交易表 User 用于存储用户输入的个人详细信息。 User 表具有地址属性,如 Address、State、City 和 Locality。这些可以定义为来自相应主表的 1:M 关系(StateCityLocality 表中的特定记录可以是User 表中的多条记录)。

enter image description here

设计是否正确?我认为在 LocalityUser 表之间定义 1:M 关系就足够了,因为其他两个属性(城市和州)可以从主表之间的关系中获得。将 ER 设计更改为以下内容会更好吗?

enter image description here

我的要求有替代方案吗?

最佳答案

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

由于 localitycitystate 是“嵌套”的,而且名称不太可能更改,我建议两者都您的选项是“过度标准化”。我会选择一张 table ,里面放着所有三样东西。

在我看来,标准化有两个主要原因:

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

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

关于mysql - 主表和事务表之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29454823/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com