在 M:N 关联中有一个复合键使用复合键而不是主键

时间:2021-07-30 11:52:39

标签: mysql database-design indexing many-to-many sequelize.js

我正在创建一个新数据库并且我正在使用 sequelize。我有两个表 Table1,Table2 有 m:n 关系,第三个表 Table3 有另外两个表的映射和一个字段 level

Table A {
    id : P.K
    name 
  }

 Table 2 {
    id:P.K
    name
 }

 Table 3 {
    Table1.id,
    Table2.id,
    "level"
  }

当我使用关联belongstoMany时,它正在创建其他表(Table1.id,Table2.id)的两个外键的索引

    Table1.belongtoMany(Table2,
{
    through: {
       model :Table3,
       uninque :false
   }
}) 

    Table2.belongtoMany(Table1,
{
    through : {
       model :Table3,
       uninque :false
   }
})

即使唯一标志为假,它仍会在 (Table1.id, Table2.id) 上创建主索引

我的问题是如何停止自动创建主索引,而是创建一个 (table1.id, table2.id, level) 的复合索引,谢谢。

edit : 我面临的问题是我需要添加多个 ("TableA.id", "level" ) 绑定到 "TableB.id" 例如

Table A.id  | level | Table B.id
    1            |    1     |   10
    1            |    2     |   10   ---> not allowed

但由于 PK (TableA.id , TableB.id) 它不允许我添加第二条记录

我该如何解决这个问题,因为 Sequelize ORM 正在创建一个 PK(TableA.id,TableB.id),即使我定义了复合键 pm(TableA.id,level,TableB.id) )

我的大部分查找将基于 TableA.id 和级别组合

0 个答案:

没有答案