gpt4 book ai didi

mysql - 数据库设计 : need unique rows + relationships

转载 作者:行者123 更新时间:2023-11-30 23:38:21 24 4
gpt4 key购买 nike

假设我有下表:

TABLE: product
============================================================
| product_id | name | invoice_price | msrp |
------------------------------------------------------------
| 1 | Widget 1 | 10.00 | 15.00 |
------------------------------------------------------------
| 2 | Widget 2 | 8.00 | 12.00 |
------------------------------------------------------------

在此模型中,product_id 是 PK,并被许多其他表引用。

我要求每一行都是唯一的。在示例中,一行被定义为 nameinvoice_pricemsrp 列。 (不同的表可能对哪些列定义“行”有不同的定义。)

问题:

  1. 在上面的示例中,我是否应该将nameinvoice_pricemsrp 设为组合键以保证每一行的唯一性?<
  2. 如果对 #1 的回答是"is",这意味着当前 PK,product_id,不会被定义为 key ;相反,它只是一个自动递增的列。这足以让其他表用来创建与 product 表中特定行的关系吗?

请注意,在某些情况下,表格可能有 10 列或更多列需要唯一。这将是很多定义复合键的列!这是一件坏事吗?

我正在尝试决定是否应该尝试在数据库层或应用程序层强制实现这种唯一性。我觉得我应该在数据库级别执行此操作,但我担心使用非键作为 FK 或有这么多列定义复合键可能会产生意想不到的副作用。

最佳答案

当您有很多列需​​要创建唯一键时,使用列中的数据作为源来创建您自己的“键”。这意味着在应用程序层创建 key ,但数据库将“强制执行”唯一性。一种简单的方法是使用记录的所有数据集的 md5 哈希作为您的唯一键。然后,您只有一条数据需要在关系中使用。

不保证 md5 是唯一的,但它可能足以满足您的需求。

关于mysql - 数据库设计 : need unique rows + relationships,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5545344/

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