MySQL:2个表唯一的关键字段值

标签 mysql

我希望在 MySQL 数据库中有 3 个表来控制,比如在线商店中销售的商品。 3张表如下:

  1. 当前项目
  2. 停产商品
  3. 发票

我已将商品分成 2 个表,以防止网站在列出网站上的促销商品时必须查找整个当前商品和停产商品。该网站只需要列出当前的项目,因此我认为这样做会随着网站的发展而提高性能。列出股票的查询将频繁运行。

一旦商品不再销售,它们将被“转移”到停产表中,新商品将添加到当前商品表中。

每张发票都将引用商品数据库(当前或已停产)的唯一关键字段,以识别该发票上包含哪些商品。

为了使其正常工作,当创建新项目并将其添加到当前项目表时,关键字段对于两个表都必须是唯一的。否则,发票可能会引用 2 个项目,因为它会查看当前和已停产的表格以找出每张发票上的项目。

有没有办法为两个不同表的唯一字段分配唯一值?

提前非常感谢。

最佳答案

这似乎是一个糟糕的设计。

相反,只需在 items 表中添加一个 discontinued 标志即可 - 可能与 DiscontinuedDate 一起使用。

这将使您能够保持引用完整性。它将简化查询,因为项目引用始终会转到一个表。

如果愿意,您可以在 items 表上创建两个 View :v_ItemsCurrentv_ItemsDiscontinued。这些将使用 where 子句来选择适当的项目集。

关于MySQL:2个表唯一的关键字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26212773/

相关文章:

php - SQL 查询将多个值匹配到 select 语句中的一个字段

html - 一些 html 标签在 jasper 报告中不起作用

php - Mysql事务: Effect on other Transaction query

PHP mySQL - 如何在使用 IN 后从行获取数据

java - 与数据库相关的条形图

php - Laravel:试图建立关系

mysqlimport速度----制表符分隔的转储文件与SQL格式文件

mysql - 有没有办法使用 ON DUPLICATE KEY 来更新我想要插入的所有内容?

c# - 图表控件内部数据列表

MySQL:使用触发器重新计算表