Sequelizeを使用したデータベースの関連付け方法


  1. 1対1の関連付け: 1対1の関連付けは、2つのテーブル間の一対一の関係を表します。例えば、User(ユーザー)テーブルとProfile(プロフィール)テーブルの関連付けを考えてみましょう。
// Userモデルの定義
const User = sequelize.define('User', {
  username: DataTypes.STRING
});
// Profileモデルの定義
const Profile = sequelize.define('Profile', {
  fullName: DataTypes.STRING
});
// UserモデルとProfileモデルの関連付け
User.hasOne(Profile);
Profile.belongsTo(User);
  1. 1対多の関連付け: 1対多の関連付けは、1つのテーブルのレコードが他のテーブルの複数のレコードと関連付けられる場合に使用されます。例えば、UserテーブルとTask(タスク)テーブルの関連付けを考えてみましょう。
// Userモデルの定義
const User = sequelize.define('User', {
  username: DataTypes.STRING
});
// Taskモデルの定義
const Task = sequelize.define('Task', {
  title: DataTypes.STRING
});
// UserモデルとTaskモデルの関連付け
User.hasMany(Task);
Task.belongsTo(User);
  1. 多対多の関連付け: 多対多の関連付けは、2つのテーブル間の多対多の関係を表します。例えば、UserテーブルとGroup(グループ)テーブルの関連付けを考えてみましょう。この場合、中間テーブルを使用して関連付けを行います。
// Userモデルの定義
const User = sequelize.define('User', {
  username: DataTypes.STRING
});
// Groupモデルの定義
const Group = sequelize.define('Group', {
  name: DataTypes.STRING
});
// 中間テーブルの定義
const UserGroup = sequelize.define('UserGroup', {});
// UserモデルとGroupモデルの関連付け
User.belongsToMany(Group, { through: UserGroup });
Group.belongsToMany(User, { through: UserGroup });

これらはSequelizeを使用してデータベースの関連付けを行ういくつかの一般的な方法です。関連するテーブルとモデルを定義し、関連付けのタイプに応じて適切な関数を使用して関連付けを設定します。これにより、関連するデータを簡単に取得したり操作したりすることができます。