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

डेटा मॉडलिंग की खोज करना (एक समझदार डेटाबेस को एक साथ कैसे जोड़ना है)

हैरानी की बात है कि अधिकांश उत्तर प्रश्न से चूक गए हैं, लेकिन मैं इसे आजमाऊंगा;

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

ऐसा लगता है कि आप सही रास्ते पर हैं। अपनी संस्थाओं को परिभाषित करने और प्रत्येक के लिए एक तालिका बनाने के लिए यह हमेशा एक अच्छी युक्ति है, इसलिए इस मामले में आपके पास उपयोगकर्ता और प्लेलिस्ट और गाने हैं (उदाहरण के लिए)। इस प्रकार अपनी तालिकाओं को परिभाषित करें; उपयोगकर्ता, गीत, प्लेलिस्ट।

अगली बात फ़ील्ड और तालिकाओं के नामों को परिभाषित कर रही है (और शायद ऊपर सुझाए गए सरल नाम, ठीक है, सरल हैं)। कुछ अशुद्ध नामस्थान (यानी केवल USER के बजाय MYAPP_USER) पेश करते हैं, खासकर यदि वे जानते हैं कि डेटा मॉडल भविष्य में उसी डेटाबेस में विस्तारित और विस्तारित होगा (या, कुछ क्योंकि वे जानते हैं कि यह अपरिहार्य है), जबकि अन्य बस इसके माध्यम से रैम करेंगे उन्हें जो कुछ भी चाहिए।

बड़ा सवाल हमेशा सामान्यीकरण के बारे में होगा। और उसके आस-पास की विभिन्न समस्याएं, प्रयोज्यता के खिलाफ प्रदर्शन को संतुलित करना, और इस विषय पर बहुत सारी किताबें लिखी गई हैं, इसलिए मेरे लिए आपको कोई सार्थक उत्तर देने का कोई तरीका नहीं है, लेकिन मेरे लिए इसका सार है;

तालिका में डेटा फ़ील्ड किस बिंदु पर अपनी तालिका के योग्य होगा? एक उदाहरण यह है कि आप अपने डेटा को कैसे विभाजित करना चाहते हैं, इस पर निर्भर करते हुए आप केवल एक टेबल, या दो, या 6 के साथ अपना एप्लिकेशन बना सकते हैं। यह वह जगह है जहाँ मुझे लगता है कि आपका प्रश्न वास्तव में आता है।

मैं कहूंगा कि आप अपनी धारणाओं में काफी सही हैं, ध्यान रखने वाली बात लगातार नामकरण परंपराएं हैं (और पहचानकर्ताओं के नाम के बारे में बहुत सारी राय है)। आपके आवेदन के लिए (उपरोक्त तालिकाओं के साथ), मैं करूँगा;

USER { id, username, password, name, coffee_preference } 
SONG { id, artist, album, title, genre } 
PLAYLIST { id, userid } 
PLAYLIST_ITEM { id, songid, playlistid, songorder }

अब आप SQL का उपयोग कर सकते हैं आप एक उपयोगकर्ता के लिए सभी प्लेलिस्ट प्राप्त कर सकते हैं;

   SELECT * FROM PLAYLIST WHERE userid=$userid

या प्लेलिस्ट में सभी गाने प्राप्त करें;

   SELECT * FROM SONG,PLAYLIST_ITEM WHERE playlist_item.playlistid=$playlist.id AND song.id=playlist_item.songid ORDER BY playlist_item.songorder

और इसी तरह। फिर से, इस विषय के बारे में टोम्स लिखे गए हैं। तकनीकी समाधान के बारे में बताते हुए यह स्पष्ट रूप से और अर्थपूर्ण रूप से सोचने के बारे में है। और कुछ लोगों के पास यह केवल करियर के रूप में होता है (जैसे डीबीए)। मैंने यहाँ जो लिखा है, उस पर विशेष रूप से बहुत सारी राय होगी। शुभकामनाएँ।



  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. मैं दूरस्थ डेटाबेस तक पासवर्ड-रहित पहुँच के लिए रेल को कैसे कॉन्फ़िगर करूँ?

  4. स्थानीय mysql उदाहरण से कनेक्ट करने के लिए mysqldump नहीं मिल सकता (त्रुटि 2003/10061)

  5. 2 या अधिक दिनांक सीमा को 1 . में कैसे मर्ज करें