【问题标题】:Normalization of Tables表的规范化
【发布时间】:2018-02-13 09:53:39
【问题描述】:

由于我是 SQL 新手,请帮助解决表的规范化问题。我有五个表。

Table1-->Column1,Column2.
Table2-->Column3,Column4.
Table3-->Column5,Column6,Column3.
Table4-->Column7,Column8,Column5.
Table5-->Column9,Column10,Column11,Column12,Column1,Column5,Column7.

这里 Column1,column3,Column5,Column7 和 Column9 是主键,Column1,Column5 和 Column7 是 Table5 的外键,我的 PHP 条目将是 Table5。问题是我收到了 Table5 的重复条目。 Table5 一天会有多个条目。我想将(Column1 和 Column7)作为唯一键。有没有办法为 2 个组合外键提供唯一键。我试过了,

 Alter Table Table5 Add UNIQUE KEY(Column1,Column7); 

但将错误作为 column1 的重复值。 这是一个内部应用程序,因此在 XAMPP 上运行,数据由不同系统通过 LAN 输入并保存在本地服务器中。这是否会导致任何问题。请帮助解决问题,因为一天输入了 1000 多个数据。

提前致谢。

【问题讨论】:

  • 请尝试在您的示例中使用有意义的名称。它比 Column1....Column12 更容易阅读
  • 。请阅读minimal reproducible example 并采取行动。给出准确的 DDL、错误消息、表格内容等。阅读官方文档重新 UNIQUE 索引和 FK。如果您在 5 中错误地获得了重复条目,阻止它们被插入只能解决部分问题。为什么会这样?应该发生什么? PS这不是标准化。你认为这个词是什么意思?
  • 所以您运行 ALTER TABLE 语句并收到表中有重复项的错误?然后先删除重复项,然后运行语句。

标签: mysql sql database-design database-normalization


【解决方案1】:

您应该考虑在 Table5 上创建一个复合键,如下所示: 而不是 Column9 作为主键使用 Column1,Column5,Column7 作为复合键。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-09
    • 2012-12-31
    • 1970-01-01
    • 2017-07-31
    • 1970-01-01
    • 2013-03-08
    相关资源
    最近更新 更多