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

जेसन कॉलम बनाम एकाधिक कॉलम

संक्षिप्त उत्तर, एकाधिक कॉलम।

लंबा उत्तर:

दुनिया में जो कुछ भी पवित्र है, उसके प्यार के लिए कृपया एक टेक्स्ट कॉलम में एकाधिक डेटा सेट स्टोर न करें

मुझे लगता है कि आपके पास एक टेबल होगी जो या तो होगी

+------------------------------+      +----------------------+
| User |  cell | office | home |  OR  | User | JSON String   |
+------------------------------+      +----------------------+

पहले मैं कहूंगा कि ये दोनों समाधान सबसे अच्छा समाधान नहीं हैं, लेकिन यदि आप दोनों में से चुनें तो पहला सबसे अच्छा है। मुख्य रूप से कुछ कारण हैं, हालांकि विशेष रूप से संशोधित करने और क्वेरी करने की क्षमता वास्तव में महत्वपूर्ण है। दूसरे विकल्प को संशोधित करने के लिए एल्ग्रोथिम के बारे में सोचें।

SELECT `JSON` FROM `table` WHERE `User` = ?

Then you have to do a search and replace in either your server side or client side language

Finally you have to reinsert the JSON string

यह समाधान 2 प्रश्नों का योग करता है और एक खोज और एल्गोरिथम को प्रतिस्थापित करता है। अच्छा नहीं!

अब पहले उपाय के बारे में सोचें।

SELECT * FROM `table` WHERE `User` = ?

Then you can do a simple JSON encode to send it down

To modify you only need one Query.

UPDATE `table` SET `cell` = ? WHERE `User` = ?

to update more than one its again a simple single query 

UPDATE `table` SET `cell` = ?, `home` = ? WHERE `User` = ?

यह स्पष्ट रूप से बेहतर है लेकिन यह सर्वोत्तम नहीं है

एक तीसरा समाधान है मान लें कि आप चाहते हैं कि कोई उपयोगकर्ता अनंत संख्या में फ़ोन नंबर सम्मिलित कर सके।

आइए उसके लिए एक संबंध तालिका का उपयोग करें ताकि अब आपके पास दो तालिकाएँ हों।

              +-------------------------------------+
+---------+   |      Phone                          | 
| Users   |   +-------------------------------------+ 
+---------+   | user_name| phone_number | type      |
| U_name  |   +-------------------------------------+
+---------+

अब आप किसी उपयोगकर्ता के सभी फ़ोन नंबरों को कुछ इस तरह से क्वेरी कर सकते हैं

अब आप टेबल को जॉइन करके क्वेरी कर सकते हैं

उपयोगकर्ता चुनें., फ़ोन. फ़ोन से, उपयोगकर्ता जहाँ phone.user_name =? और उपयोगकर्ता.U_name =?

इंसर्ट करना उतना ही आसान है और टाइप चेकिंग भी आसान है।

याद रखें कि यह एक सरल उदाहरण है, लेकिन SQL वास्तव में आपके डेटा-संरचना को एक टन शक्ति प्रदान करता है जिसे आपको टालने के बजाय इसका उपयोग करना चाहिए



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. कर्मचारी तालिका के लिए अधिकतम और दूसरा अधिकतम वेतन खोजें MySQL

  2. पीएचपी जावास्क्रिप्ट? जब उपयोगकर्ता पेज या ब्राउज़र बंद करता है तो कुछ करें

  3. मैं MySQL 5.1 में थोड़ा सा int कैसे डाल सकता हूं?

  4. एक ही डेटाबेस में एकाधिक MySQL तालिकाओं को मैप करने के लिए कॉन्फ़िगरेशन फ़ाइल (.cfg.xml) को हाइबरनेट करें?

  5. mysql.connector.errors.ProgrammingError:1064 (4200):आपके SQL सिंटैक्स में एक त्रुटि है;