【问题标题】:Create constraint key with foreign keys sequelize使用外键创建约束键 sequelize
【发布时间】:2017-03-02 23:25:37
【问题描述】:

我正在使用 sequelize 处理表之间的关系,但我遇到了一些麻烦。首先,我有我的课程模型,我将在其中保存主题、时期等之间的所有关系。

module.exports = function(sequelize, DataTypes) {
  var Course = sequelize.define('Course', {
      ...
    },
    {
      associate: function(models){
        Course.hasMany(models.Schedule);

        Course.belongsTo(models.Period);
        Course.belongsTo(models.Room);
        Course.belongsTo(models.Subject);
      }
    }
  );

  return Course;
};

我正在寻找约束键,并且我知道有了这个我可以有类似的限制,我不能通过行对列值进行相同的组合。并且也使以后更容易查询。所以这意味着在表格上添加一个额外的列?以及如何使用外键进行续集?

我查看了 sequelize 文档,发现在我需要的所有列的关联中使用此代码:

Course.belongsTo(models.Person, {foreignKey: {constraints: true}});

但这只会让每个人都有唯一的价值,而不是在所有人之间。

我还在我的日程表模型中使用此属性,我将在其中保存所有课程的所有日期和时间,并以此假装阻止重复的行,使用不同的日期组合和小时数,例如“图”

|  id  |     days     | starHr  |  endHr  |  idCourse  |
|  1   |    M,T,W     |  7:00   |  8:00   |      1     |
|  2   |    F,        |  8:00   |  9:00   |      1     |
|  3   |    Th        |  8:00   |  9:00   |      2     |
|  4   |    M,T,W     |  17:00  | 18:00   |      3     |

【问题讨论】:

    标签: mysql database database-design sequelize.js


    【解决方案1】:

    通过值在新表上定义。 您可以尝试制作具有唯一约束的复合索引

    文档http://docs.sequelizejs.com/en/latest/docs/models-definition/#indexes

    示例https://stackoverflow.com/a/42199137/4583460

    【讨论】:

    • 这不起作用,它实际上对数据库没有任何改变。
    猜你喜欢
    • 1970-01-01
    • 2014-12-12
    • 2019-07-26
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 2017-12-18
    • 2018-02-13
    • 1970-01-01
    相关资源
    最近更新 更多