PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

सीक्वेलाइज़ में अनेक, संबंधित, या दोनों हैं?

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. टिप्पणी संख्या/गिनती DESC द्वारा सबसे अधिक टिप्पणी आदेश के साथ पदों को खोजने के लिए एक sql क्वेरी की आवश्यकता है

  2. Macosx पर pgroonga स्थापित करना (Postgres.app के साथ)

  3. पोस्टग्रेज + हाइबरनेट + जावा यूयूआईडी

  4. postgresql नेक्स्टवाल मौजूदा मूल्यों को उत्पन्न करता है

  5. PostgreSQL 9.2.1 . में लूपिंग ट्रिगर कॉल से कैसे बचें