PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Sequelize hasMany, belongsTo или и двете?

Използване на belongsTo определя собствеността върху свързаните модели. За да обясня това по-подробно, ще се позова на примера, цитиран от уроците

Project.hasMany(Task);
Task.belongsTo(Project);

Да приемем, че вече не се интересувате от задачите на изтрит проект. В такъв случай ще трябва да изтриете задачите ръчно, ако не сте дефинирали belongsTo асоциация. belongsTo установява собственост върху проекти върху своите задачи и базата данни автоматично ще изтрие и задачите, принадлежащи към изтрития проект. Това се нарича cascading delete и може да върже множество таблици.

Ако изпълните следния кодов фрагмент

const Project = sequelize.define('project', {
    name: Sequelize.STRING
});
const Task =  sequelize.define('task', {
    name: Sequelize.STRING
});
Project.hasMany(Task);
Task.belongsTo(Project);

в скрипт за последователност и гледайте резултата

Executing (default): DROP TABLE IF EXISTS `projects`;
Executing (default): CREATE TABLE IF NOT EXISTS `projects` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL);
Executing (default): PRAGMA INDEX_LIST(`projects`)
Executing (default): DROP TABLE IF EXISTS `tasks`;
Executing (default): CREATE TABLE IF NOT EXISTS `tasks` (`id` INTEGER PRIMARY KEY AUTOINCREMENT, `name` VARCHAR(255), `createdAt` DATETIME NOT NULL, `updatedAt` DATETIME NOT NULL, `projectId` INTEGER REFERENCES `projects` (`id`) ON DELETE SET NULL ON UPDATE CASCADE);

ще забележите каскадното поведение, зададено при създаването на таблицата със задачи.

Толкова много казано, крайният отговор е:зависи. Използването на belongsTo може да бъде много полезно или ще бъде фатално, ако предпочитате да запазите задачите на изтрития проект. Използвайте само belongsTo ако има смисъл в контекста на вашето приложение.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Обединете таблица и регистър на промените в изглед в PostgreSQL

  2. Как да видите кода CREATE VIEW за изглед в PostgreSQL?

  3. JBoss7 + PostgreSQL Нови липсващи/неудовлетворени зависимости

  4. Преглед на кеширането за PostgreSQL

  5. Защо PostgreSQL не харесва имената на таблици с ГОЛИНИ РЕГИСТРИ?