首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >数据库设计决策:规范化还是重复?

数据库设计决策:规范化还是重复?
EN

Stack Overflow用户
提问于 2013-10-23 18:03:52
回答 1查看 502关注 0票数 1

我正在建造一个送货系统,现在,我的设计看起来是这样的:

问题是,我经常需要一个结构(数组、json、对象.)这看起来像(非常分层的):

这样做的问题是,它会产生大量重复的StreetAddress、DeliveryPoint和Customer,因为每个行程都会创建很多这样的行程,并且行程看起来与其他的非常相似。好的是,只要加入几个环节,一切都会很美好。

对于第一个模式,创建第二个结构将是非常奇怪的,但它是可能的。

对于如何控制重复,仍然可以很容易地查询上述结构,有什么想法吗?

我在用:

  • PostgreSQL 9.1
  • PHP 5.5
  • Symfony框架标准版2.4.0-BETA1 (附原则)

如果有人想知道我是如何绘制模式的: www.gliffy.com

EN

回答 1

Stack Overflow用户

发布于 2013-10-28 04:38:54

重复和正常化并不总是对立的问题。

以下是基本问题:

规范化本身不关心重复,而关心函数依赖

重复是错误的问题。函数依赖是正确的问题。在某些情况下,地址很难确定函数依赖关系,因为有太多的约定,即使有,您仍然会遇到格式化问题。

了解这一点的一个简单方法是询问某一给定数据可能发生变化的原因。良好的标准化设计限制了给定数据可能需要更改的原因。现在,考虑到这一点,看起来您需要为客户存储历史位置,在我看来,您可能想做一些稍微不同的事情。

而不是:

代码语言:javascript
复制
Delivery -> customer -> street address -> itinerary

在我看来,更有意义的是:

代码语言:javascript
复制
Customer -> street address

代码语言:javascript
复制
delivery -> itinerary -> street address

在这个模型中,您可能有重复的信息,您可能需要在街道地址中有日期,指示它何时有效,但我并不认为这是一个规范化问题,特别是考虑到已经存在的规范化问题。但是从那里,您可以很容易地跟踪交付给的客户,而在您的模型中,不清楚您可以跟踪给定送货的街道地址或行程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19549120

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档