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

विदेशी कुंजियों से जुड़ी तालिकाओं का परीक्षण कैसे करें?

जैसा कि टिप्पणियों में उल्लेख किया गया है, आपको किसी भी तालिका को अन्य तालिकाओं में FK बाधाओं के साथ छोड़ना होगा, फिर आप उन तालिकाओं को छोड़ सकते हैं जिनसे लिंक किया जा रहा है।

उदाहरण:

User
  id: 1
  name: Mike

Address 
  id: 1
  user_id: 1 (FK constraint to User.id table.column)
  address_1: 555 Main Street

यह सेटअप एक 1:1 संबंध है (डेटा सामान्यीकरण पर अधिक ), जहां एक उपयोगकर्ता पंक्ति एक पता पंक्ति को संदर्भित कर सकती है, और क्योंकि पता पंक्ति उपयोगकर्ता पंक्ति के अस्तित्व पर निर्भर है, यदि आप उपयोगकर्ता पंक्ति को निकालने का प्रयास करते हैं, तो आपको आपके द्वारा उल्लिखित त्रुटियां दिखाई देंगी।

लेकिन अगर आप पहले पता तालिका छोड़ते हैं, तो सब कुछ अपेक्षित रूप से काम करता है क्योंकि उपयोगकर्ता तालिका किसी अन्य तालिका में एफके नहीं है।

संदर्भात्मक अखंडता सुनिश्चित करना आपकी स्कीमा के भीतर सुनिश्चित करता है कि आप अनाथ पंक्तियों के साथ समाप्त नहीं होते हैं, जो आपके डेटा संचालित एप्लिकेशन में व्याप्त हो जाएंगी।

आप निम्न आदेश भी जारी कर सकते हैं:

SET foreign_key_checks = 0;
# Do Stuff
SET foreign_key_checks = 1;

लेकिन मैं इसके खिलाफ दृढ़ता से सलाह दूंगा, क्योंकि आप अपने डेटा की संदर्भात्मक अखंडता को तोड़ सकते हैं, और एक वास्तविक गड़बड़ी में समाप्त हो सकते हैं। मैंने किसी को उद्यम के माहौल में ऐसा करते देखा है और इसे साफ करने में उन्हें हफ्तों लग गए। हालांकि, अगर आप इसे सख्ती से कर रहे हैं परीक्षण उद्देश्यों के लिए; जैसे यूनिट टेस्ट लिखना, या सिर्फ सीखना, और आप हर बार टेबल छोड़ना नहीं चाहते थे, आप ऐसा कर सकते थे:

# Because we remove the foreign key check, we can truncate in any order
SET foreign_key_checks = 0;
TRUNCATE TABLE user;
TRUNCATE TABLE address;
SET foreign_key_checks = 1;

विदेशी कुंजी बाधाओं का उपयोग करके उचित स्कीमा डिज़ाइन किसी भी डेटा संचालित एप्लिकेशन के लिए एक अच्छी नींव बनाने के रास्ते में आता है। कब उपयोग करना है, और विदेशी कुंजी बाधाओं का निर्माण कैसे करना है, यह जानने में समय लगेगा, लेकिन समय के साथ आप समझना शुरू कर देंगे। आरंभ करने का एक अच्छा तरीका है magento जैसा ओपन सोर्स प्रोजेक्ट डाउनलोड करना , वर्डप्रेस , या vbulletin और उनके स्कीमा पर एक नज़र डालें। आप MySQL वर्कबेंच का उपयोग करके इन स्कीमाओं का आत्मनिरीक्षण भी कर सकते हैं। और उनके एंटिटी-रिलेशनशिप डायग्राम देखें (ईआरडी), जो तालिकाओं के बीच लिंक को नेत्रहीन रूप से प्रदर्शित करेगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. अनुक्रम मॉडल में कॉलम नाम को मैप करने का कोई विकल्प नहीं है

  2. यदि पंक्ति मौजूद है तो MySQL तालिका को अद्यतन करने का सबसे तेज़ तरीका अन्य सम्मिलित करें। 2 से अधिक गैर-अद्वितीय कुंजियाँ

  3. MySQL में त्रिज्या के आधार पर एक बाउंडिंग बॉक्स के भीतर लंबे/अक्षांश बिंदुओं को मर्ज करें

  4. MySQL वर्कबेंच में टेबल निर्माण स्क्रिप्ट कैसे प्राप्त करें?

  5. SQL क्वेरी का उपयोग करके लगातार संख्याओं का चयन करना