【问题标题】:Unique on Compound Columns复合色谱柱上的独特之处
【发布时间】:2015-03-22 05:37:13
【问题描述】:

我正在尝试使用PowerDesigner (12.5) 确保RESTAURANTIDTABLENUMBERtogether 中的值是Unique。我尝试创建一个alternate key,这导致我的.sql 文件中出现以下内容:

create table TABLES
(
   TABLEID             int not null,
   RESTAURANTID         int not null,
   TABLENUMBER         int not null,
   primary key (TABLESID),
   key AK_mykey (RESTAURANTID, TABLENUMBER)
);

但是,我仍然可以多次为RESTAURANTIDTABLENUMBER 输入相同的值。

我用这个http://www.tek-tips.com/viewthread.cfm?qid=403554PowerDesigner 中创建了alternate key

有人知道在PowerDesigner 中实现此目的的正确方法吗?

注意:这不是上面发布的问题的重复,因为我正在寻找一种在 PowerDesigner 中实现此目的的方法,而无需随后编辑生成的 sql 文件。

【问题讨论】:

标签: mysql key unique powerdesigner compound-key


【解决方案1】:

MySQL 中键(主键除外)的unique 属性存储为键的扩展属性。

您可以通过显示并转到“密钥属性”对话框中的MySQL 选项卡来修改它。

或者,在Model>Keys 中,您可以使用Customize Columns and Filter 按钮在键列表中显示Ext Unique(扩展)属性,以便您可以一次在多个键上设置此唯一属性。

或者,您可以创建自己的 MySQL DBMS 副本并对其进行编辑。在Profile>Key 下(使用右键单击),添加一个事件处理程序Initialize 并带有以下Event Handler Script,以便每个新键都有ExtUnique 集:

Function %Initialize%(obj)
   obj.setextendedattribute "ExtUnique",true
   %Initialize% = True
End Function

【讨论】:

    【解决方案2】:

    您只是添加了一个普通索引。您需要的是唯一索引。只需在查询中将 key AK_mykey (RESTAURANTID, TABLENUMBER) 替换为 unique key AK_mykey (RESTAURANTID, TABLENUMBER) 即可。

    【讨论】:

    • 谢谢洛伦兹。您知道如何仅使用 PowerDesigner 来完成此操作,这样我之后就不需要编辑生成的 SQL 文件了吗?
    • 抱歉,我从未使用过 PowerDesigner。我使用 phpmyadmin。
    【解决方案3】:

    在电源设计器中:

    1. 打开“TABLES”表属性(右键->属性)
    2. 键标签
    3. 插入行(将其命名为“AK_mykey”)
    4. 应用(已保存先前插入的行)
    5. 在“AK_mykey”行:右键单击 -> 属性
    6. “列”选项卡
    7. 添加列按钮
    8. 选择所需的列(RESTAURANTID、TABLENUMBER)
    9. 确定、确定、确定按钮

    +1 您可以在表格属性预览选项卡中查看结果。

    alter table TABLES
       add unique AK_mykey (RESTAURANTID, TABLENUMBER);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-08
      • 2015-01-23
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      相关资源
      最近更新 更多