这是我的ERD的一部分:
Orders表中的OrderID与Order Details表中的OrderID / ProductID主键相关。我不认为主键可以与其他主键相关,但我不确定如何关联表。将它们作为主键和外键?
答案 0 :(得分:0)
答案 1 :(得分:0)
图表所示的关系不是两个主键之间的关系。看起来订单详细信息中的OrderID属性引用了Orders表。 Order Details中的属性ProductID引用Products表。这些有时被称为标识关系,因为引用属性恰好是键的 part 。
键之间的关系完全有效,但这不是图中显示的内容。
答案 2 :(得分:0)
图中显示的是FK关系,是常见的
订单和产品具有PK,因此OrderID和ProductID是唯一的
所以现在你有OrderDetails所以订单可以有多个产品
FK确保OrderID和ProductID的有效值
此外,您应该在OrderDetails上添加OrderID,ProductID的复合PK 这样,您就没有相同OrderID的重复ProductID 您有处理多个
的数量 UnitPrice是一个捕获
如果您想在OrderID中拥有ProductID的多个单价,那么您将无法将OrderID,ProductID声明为PK
如果你能
答案 3 :(得分:0)
一些答案将关系和外键约束的概念混为一谈,许多(大多数?)ER图表工具也是如此。
为了澄清,图中可见6种关系(在陈使用这个词的意义上):
Orders.OrderID, Orders.CustomerID
Orders.OrderID, Orders.ShipperID
Orders.OrderID, Orders.PaymentTypeID
OrderDetails.OrderID, OrderDetails.ProductID
Products.ProductID, Products.ProductTypeID
Products.ProductID, Products.LocationID
和7个外键约束(我假设了一些表名):
OrderDetails.OrderID ⊆ Orders.OrderID
OrderDetails.ProductID ⊆ Products.ProductID
Orders.CustomerID ⊆ Customers.CustomerID
Orders.ShipperID ⊆ Shippers.ShipperID
Orders.PaymentTypeID ⊆ PaymentTypes.PaymentTypeID
Products.ProductTypeID ⊆ ProductTypes.ProductTypeID
Products.LocationID ⊆ Locations.LocationID
它们根本就不是一回事。
答案 4 :(得分:0)
你似乎缺少PK(主键),UNIQUE NOT NULL,FK(外键),超级键,CK(候选键),简单vs复合PK / UNIQUE和ERD(实体 - 关系图)背后的一些基本思想。来自this recent answer:
PKs& FK被错误地称为"关系"在某些方法和 产品。应用程序关系由表表示。 (基础 表和查询结果。)PKs& FK是限制因素:他们告诉我们 DBMS只会出现某些情况,因此它可以在您注意时发现 犯某些错误。它们不是关系,而是陈述 真实的&每个数据库状态和应用程序的情况。 You do not need to know constraints to update and query a database.
只需声明您的关系/表格的真实情况:
我不认为主键可以与其他主键相关,
他们可以:主键可以是引用另一个超级键的FK。 (你似乎正在使用"与"意味着"在&#34中被FK引用;)。
但请注意:这里有两个PK订单订单ID&产品ProductID在("与"相关)OrderLine中引用为FK。但是,每个FK引用("与"?相关)部分的OrderLine 复合 PK {OrderID,ProductID}。
但我不确定如何将表格联系起来。
首先声明CK(候选键):不包含较小超级键的超级键。然后声明FK。 (然后,对于SQL DBMS,声明FK引用的任何未声明的超级密钥。)
将它们作为主键和外键吗?
是的:他们是订单中的PK&产品。它们是OrderLine中的FK,引用Order&产品。 OrderLine的PK恰好是{OrderID,ProductID}。
PS 在你的ERD风格中,线条(显然)仅仅是FK,所有实体和关系都有表格。在某些形式的ERD中,存在实体表,标记的线表示关系/表(每个末端涉及FK)和未标记的线仅表示FK。当您看到图表样式时,请务必了解如何确定哪些图标代表关系/表格和这些关系在应用程序方面的含义。 (不只是他们的基数。)