【问题标题】:Beginner Database architecture初级数据库架构
【发布时间】:2015-08-30 09:48:17
【问题描述】:

我正在将电子表格转换为数据库,但如何容纳一个字段的多个值?

这是一个跟踪工厂订单的数据库。 导入 PO# 是唯一键。有时 1 个订单会有 0,1,2,3,4 或更多客户要求我们在工厂的产品上放置他们的价格标签。每个订单都是不同的。在 1 个字段中容纳多个值的正确方法是什么?

【问题讨论】:

    标签: mysql database architecture


    【解决方案1】:

    通常,在一个字段中有多个值是糟糕的数据库设计。在这种情况下,也许一对多的关系会起作用。

    所以你会有一个以 PO# 作为主键的 Order 表, 然后您将拥有一个以 PO# 作为外键的 OrderDetails 表。即它不会被指定为主键。

    对于 Order 表中的每一行,您将拥有一个不会跨行重复的唯一 PO#。

    在 OrderDetails 表中,每行都有一个客户,并且由于 PO# 不是主键,它可以跨行重复。这将允许您为每个订单指定多个客户。因此,每一行都有自己的 PriceTicketsOrdered 字段,因此您可以了解每位客户的价格。

    请注意,每个客户都可以重复 OrderDetails 表中的行,只要它针对不同的 PO# 和/或产品。

    根据您的问题的明确性,这是我能告诉您的最好的信息。

    就我个人而言,我通常会花时间在纸上设计我的数据库或使用一些绘图软件(如 visio),然后再开始在 MySql pr PostgreSql 等特定软件中实现我的数据库。

    阅读 ER 图(实体关系图)可能会对您有所帮助。 您还应该阅读数据库规范化。可能您应该先阅读数据库规范化。

    这是一个可能有帮助的链接:

    http://code.tutsplus.com/articles/sql-for-beginners-part-3-database-relationships--net-8561

    【讨论】:

    • 没问题。请记住,您要研究的主要内容是: 关系类型;一对一、多对多、一对多和相关的主题是外键、主键和复合键。如果您了解这些主题,那么您可能可以创建一个简单而可靠的数据库设计。此外,您真的想在实现它之前这样做(设计数据库)。这将为您节省大量时间和挫败感。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 1970-01-01
    • 2014-08-23
    • 2011-02-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多