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

ट्रेडिंग स्टॉक, फंड और क्रिप्टोकरेंसी के लिए एक डेटा मॉडल

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

ट्रेडिंग मुद्राओं और शेयरों के बारे में आपको क्या जानना चाहिए

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

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

क्रिप्टोकरेंसी क्या है? आपने शायद बिटकॉइन और अन्य क्रिप्टोकरेंसी के बारे में सुना होगा। लेकिन वे क्या हैं? क्रिप्टोकरेंसी आभासी मुद्राओं की तरह हैं, लेकिन वे वास्तविक दुनिया की मुद्राओं (जैसे यूरो या डॉलर) से बंधी नहीं हैं। इसके बजाय, उपयोगकर्ता टोकन की तरह आपस में क्रिप्टोकरेंसी का व्यापार कर सकते हैं। फिर वे एक बिक्री के लिए बातचीत कर सकते हैं जो उनके टोकन को वास्तविक धन में बदल देती है। ये बिक्री बिल्कुल ऊपर वर्णित स्टॉक और शेयर ट्रेडों की तरह कार्य करती है।

यह विषय जटिल है और हमारे मॉडल (जैसे दस्तावेजों और लेनदेन के रिकॉर्ड) में हमारे पास बहुत सारे विवरण हो सकते हैं। मैं इसे सरल रखने जा रहा हूँ; मैं किसी व्यापार आयोजन के बाद नई कीमतें उत्पन्न करने के लिए किसी भी प्रकार के स्वचालित व्यापार या किसी भी फार्मूले को लागू नहीं करूंगा।

तो, आइए इस सरल ट्रेडिंग मॉडल पर एक नज़र डालते हैं।

डेटा मॉडल




डेटा मॉडल में तीन विषय क्षेत्र होते हैं:

  1. Currencies
  2. Items
  3. Traders

हम प्रत्येक विषय क्षेत्र को उसके सूचीबद्ध क्रम में प्रस्तुत करेंगे।

मुद्राएं

Currencies विषय क्षेत्र सरल है। इसमें चार टेबल हैं जो हमारे द्वारा उपयोग की जाने वाली प्रत्येक मुद्रा और उनकी विनिमय दरों को संग्रहीत करती हैं। मुद्राएं महत्वपूर्ण हैं क्योंकि:

  • हम एक मुद्रा का उपयोग करेंगे, जिसे आधार मुद्रा . कहा जाता है , ट्रेडिंग के लिए। व्यापारियों के वास्तविक क्षेत्रों की परवाह किए बिना, एक ऑनलाइन स्टॉक ट्रेडिंग प्लेटफॉर्म अमेरिकी डॉलर (यूएसडी) को अपनी आधार मुद्रा के रूप में उपयोग करेगा। सभी लेन-देन को आधार मुद्रा में बदल दिया जाएगा।
  • हमारे पास गैर-आधार या स्थानीय मुद्राएं भी हो सकती हैं उन सभी देशों के लिए जहां हमारा ट्रेडिंग प्लेटफॉर्म उपलब्ध है। यह हमें स्थानीय मुद्रा में कीमतों को प्रदर्शित करने की अनुमति देगा लेकिन फिर भी मूल मुद्रा में ट्रेड करेगा।

शेष दो टेबल मुद्राओं और देशों से संबंधित हैं।

इस विषय क्षेत्र में सबसे महत्वपूर्ण तालिका है currency टेबल। यह वह जगह है जहां हम क्रिप्टोकाउंक्शंस सहित व्यापार के लिए उपयोग की जाने वाली सभी मुद्राओं को स्टोर करेंगे। इस तालिका में कोई मुद्रा शामिल है या नहीं यह इस बात पर निर्भर करता है कि क्या उस मुद्रा का उपयोग व्यापारिक वस्तुओं के भुगतान के लिए किया जाएगा। प्रत्येक मुद्रा के लिए, हम स्टोर करेंगे:

  • code - UNIQUELY के लिए इस्तेमाल किया जाने वाला एक कोड उस मुद्रा को दर्शाता है। राष्ट्रीय मुद्राओं के लिए, यह ISO 4217 कोड (उदा. युनाइटेड स्टेट्स डॉलर के लिए USD) या कोई अन्य आधिकारिक कोड होगा। हम क्रिप्टोकरेंसी के लिए आईएसओ 4217 का भी उपयोग कर सकते हैं; XBT बिटकॉइन का ISO कोड है। हालांकि, बिटकॉइन भी अनौपचारिक रूप से बीटीसी कोड का उपयोग करता है।
  • name - उस मुद्रा का UNIQUE नाम (जैसे यूनाइटेड स्टेट्स डॉलर)।
  • is_active - अगर मुद्रा वर्तमान में हमारे सिस्टम में सक्रिय है।
  • is_base - यदि यह मुद्रा हमारे सिस्टम की आधार मुद्रा है। आमतौर पर, हमारे पास एक समय में केवल एक आधार मुद्रा होगी। यह संभव है कि हमारे पास एक से अधिक हो, जैसे यूरोपीय संघ के राज्यों के लिए यूरो और अन्य क्षेत्रों के लिए अमेरिकी डॉलर का उपयोग करना। उस स्थिति में, हमारे पास इस विशेषता के साथ प्रत्येक देश को आधार मुद्रा निर्दिष्ट करने की क्षमता है।

अगली तालिका मुद्रा जोड़े के बीच वर्तमान और ऐतिहासिक दरों को संग्रहीत करती है। currency_rate तालिका, हम currency_id स्टोर करेंगे हम एक base_currency_id . से तुलना करना चाहते हैं साथ ही rate जब यह जोड़ी संग्रहीत की गई थी (ts ) चूंकि हम दरों को वैसे ही स्टोर करेंगे जैसे वे समय के विभिन्न बिंदुओं पर थे, यह तालिका ऐतिहासिक और वर्तमान डेटा दोनों को संग्रहित करेगी।

सभी प्रासंगिक देशों की सूची country शब्दकोश। प्राथमिक कुंजी के अलावा (id ), इसमें एक विशेषता है जिसमें एक अद्वितीय देश है name

इस विषय क्षेत्र में अंतिम तालिका currency_used टेबल। ज्यादातर मामलों में, एक देश हमेशा एक ही मुद्रा का उपयोग करेगा। फिर भी, परिवर्तन हो सकते हैं, जैसे कि जब कई यूरोपीय संघ के देशों ने अपनी राष्ट्रीय मुद्राओं को यूरो से बदल दिया। ऐसी घटना को कवर करने के लिए, हम उन सभी मुद्राओं का इतिहास संग्रहीत करेंगे जिनका हमने उपयोग किया है। इस तालिका में प्रत्येक रिकॉर्ड के लिए, हम country तालिका (country_id ), currency तालिका (currency_id ), और जब इस मुद्रा का उपयोग किया गया था (date_from और date_to ) अगर date_to NULL है, तो यह मुद्रा वर्तमान में प्रयोग में है। बेशक, प्रति देश केवल एक मुद्रा का उपयोग किया जाना चाहिए। हम उस चेक को मॉडल में लागू नहीं करेंगे; इसके बजाय, जब इस तालिका में कोई रिकॉर्ड जोड़ा या अपडेट किया जाएगा तो हम एक जांच करेंगे।

आइटम

Items में टेबल्स विषय क्षेत्र व्यापार के लिए उपलब्ध सभी वस्तुओं और उनकी वर्तमान स्थिति को परिभाषित करता है। यह समय के साथ इन मदों में हुए सभी परिवर्तनों को भी रिकॉर्ड करता है।

item तालिका उन सभी वस्तुओं को सूचीबद्ध करती है जिन्हें व्यापारी खरीद या बेच सकते हैं (या जिन्हें उन्होंने खरीदा या बेचा है)। ये स्टॉक, फंड या क्रिप्टोकरेंसी हो सकते हैं। इन वित्तीय साधनों को शामिल करने वाला कोई भी व्यापार लगभग उसी प्रक्रिया का उपयोग करता है, इसलिए हम उन सभी के लिए समान संरचना का उपयोग कर सकते हैं। प्रत्येक आइटम के लिए, हम स्टोर करेंगे:

  • code - उस आइटम के लिए एक अद्वितीय टेक्स्ट कोड, जैसा कि हम शेयरों के लिए उपयोग करते हैं (उदाहरण के लिए NASDAQ ऐप्पल इंक के लिए "एएपीएल" कोड का उपयोग करता है)।
  • name - कंपनी का पूरा नाम (शेयरों के लिए), फंड या क्रिप्टोकरेंसी।
  • is_active - यह वस्तु व्यापार के लिए उपलब्ध है या नहीं।
  • currency_id - संदर्भ currency इस मद के लिए आधार मुद्रा के रूप में उपयोग किया जाता है।
  • details - सभी अतिरिक्त विवरण (जैसे जारी किए गए शेयरों की संख्या) पाठ्य प्रारूप में।

price तालिका समय के साथ सभी मूल्य परिवर्तनों को ट्रैक करती है। एक बार परिवर्तन हो जाने के बाद, हम समय संग्रहित करेंगे (ts ), और buy और sell आइटम की कीमत (item_id ) शामिल। हम currency तालिका, जो हमें उस समय उस वस्तु का मूल्य निर्धारित करने के लिए उपयोग की जाने वाली मुद्रा बताती है। ध्यान दें कि किसी भी वस्तु के लिए पसंदीदा मुद्रा बदल सकती है।

इस विषय क्षेत्र में अंतिम तालिका report टेबल। विचार प्रत्येक आइटम के लिए नियमित (यानी दैनिक) रिपोर्ट संग्रहीत करना है। यह रिपोर्ट उस अवधि के दौरान ट्रेडिंग पर आधारित होगी, और यह वित्तीय विवरण एक ही स्थान पर रखेगी। यह बेमानी डेटा है, लेकिन ऐतिहासिक कीमतों की पूछताछ करते समय यह बहुत उपयोगी साबित हो सकता है (जो अक्सर होता है, क्योंकि व्यापारियों को प्रवृत्तियों में बेहद दिलचस्पी होती है)। इस तालिका में प्रत्येक रिकॉर्ड के लिए, हम स्टोर करेंगे:

  • trading_date - इस रिपोर्ट की तारीख। यदि हमें दिन में एक से अधिक बार रिपोर्ट संकलित करने की आवश्यकता है, तो हमें मॉडल में परिवर्तन करने होंगे - उदा। टाइमस्टैम्प जोड़ना जो दर्शाता है कि ट्रेडिंग अवधि कब शुरू हुई और कब समाप्त हुई।
  • item_id और currency_id - संबंधित item और currency इस्तेमाल किया।
  • first_price , last_price , min_price , max_price और avg_price - इस अवधि के दौरान इस आइटम के लिए पहला, अंतिम, अधिकतम, न्यूनतम और औसत मूल्य।
  • total_amount - रिपोर्टिंग अवधि के दौरान उस मद के लिए भुगतान की गई कुल राशि।
  • quantity - इस रिपोर्टिंग अवधि के दौरान कारोबार की गई वस्तुओं की संख्या (मात्रा)। कृपया ध्यान दें कि औसत मूल्य की गणना total_amount . से की जा सकती है और quantity , लेकिन मैं "total_amount" को अलग रखना पसंद करता हूं। यह उस स्थिति को सरल करता है जब हम लंबी अवधि के लिए रिपोर्ट बनाते हैं, जैसे साप्ताहिक। उस स्थिति में, हम सभी total_amount . जोड़ सकते हैं विशेषताएँ और उन्हें सभी quantity . के योग से विभाजित करें साप्ताहिक औसत मूल्य प्राप्त करने के लिए विशेषताएँ।

इस तालिका में सभी विशेषताएँ (प्राथमिक कुंजी और विदेशी कुंजियों के अलावा) NULL हो सकती हैं। यह तब होगा जब हम एक नई ट्रेडिंग अवधि के लिए एक रिकॉर्ड सम्मिलित करेंगे - अब तक कोई ट्रेड नहीं है। प्रत्येक तिथि की शुरुआत में, हम उम्मीद कर सकते हैं कि हम प्रत्येक आइटम के लिए एक रिकॉर्ड सम्मिलित करेंगे और दिन बढ़ने पर इन मानों को अपडेट करेंगे। अंतिम अद्यतन मूल्य उस दिन की अंतिम रिपोर्ट भी होगी।

व्यापारी

Traders विषय क्षेत्र आखिरी है जिस पर हम चर्चा करेंगे, लेकिन यह मॉडल का सबसे महत्वपूर्ण क्षेत्र है। इसकी चार टेबल (country और item टेबल जिन्हें हम पहले ही कवर कर चुके हैं) व्यापारियों, उनकी सूची और उनके कार्यों के बारे में जानकारी संग्रहीत करते हैं। ध्यान दें कि currency यहां इस्तेमाल की गई तालिका सिर्फ एक प्रति है। इसका उपयोग मॉडल को सरल बनाने और अतिव्यापी संबंधों से बचने के लिए किया जाता है।

केंद्रीय तालिका trader टेबल। प्रत्येक ट्रेडर के लिए, हम स्टोर करेंगे:

  • first_name और last_name - ट्रेडर का पहला और अंतिम नाम।
  • user_name और password - व्यापारी द्वारा चुना गया उपयोगकर्ता नाम और पासवर्ड (हैश)। user_name विशेषता केवल अद्वितीय मान संग्रहीत कर सकती है।
  • email - व्यापारी का ईमेल पता। इसका उपयोग पंजीकरण प्रक्रिया को पूरा करने और व्यापारी के साथ बाद के सभी संपर्कों के लिए किया जाएगा। इसमें केवल UNIQUE मान भी हो सकते हैं।
  • confirmation_code - पंजीकरण प्रक्रिया को पूरा करने के लिए उपयोगकर्ता को भेजा गया कोड।
  • time_registered और time_confirmed - व्यापारी ने कब पंजीकरण किया और कब उन्होंने पंजीकरण प्रक्रिया पूरी की।
  • country_id - country जहां व्यापारी रहता है।
  • preferred_currency_id - currency कि व्यापारी कीमतों को प्रदर्शित करना चाहता है।

वर्तमान में एक व्यापारी के पास मौजूद सभी वस्तुओं की सूची current_inventory टेबल। प्रत्येक अद्वितीय के लिए trader_id - item_id जोड़ी, हम quantity स्टोर करेंगे व्यापारी वर्तमान में मालिक है।

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

हम offer टेबल। कोई भी व्यापारी वस्तुओं को खरीदने या बेचने का प्रस्ताव रख सकता है। ऐसा करने के लिए, हमें निम्नलिखित विवरण संग्रहीत करने होंगे:

  • trader_id और item_id - संदर्भ trader उस ऑफ़र को किसने रखा और item वे खरीदना या बेचना चाहते हैं।
  • quantity - वह मात्रा जो वे खरीदना या बेचना चाहते हैं।
  • buy और sell - अगर यह ऑफर खरीदने या बेचने के लिए है। एक समय में केवल एक विशेषता सेट की जा सकती है।
  • price - वांछित खरीद या बिक्री मूल्य। इसकी आवश्यकता नहीं है क्योंकि एक व्यापारी चाहे जो भी कीमत हो, खरीदना या बेचना चाहे।
  • ts - टाइमस्टैम्प जब यह रिकॉर्ड डाला गया था।
  • is_active - क्या यह ऑफर अभी भी एक्टिव है। यह निष्क्रिय हो सकता है a) यदि व्यापारी इसे निष्क्रिय पर सेट करता है, या b) यदि व्यापार हुआ है।

हमारे मॉडल की अंतिम तालिका में ट्रेडिंग इवेंट से संबंधित डेटा होता है। ट्रेडिंग दो उपयोगकर्ताओं के बीच तब होती है जब वे दोनों एक प्रस्ताव देते हैं। उपयोग की गई कीमत पहली पेशकश की गई कीमत या वर्तमान कीमत हो सकती है, जो इस बात पर निर्भर करती है कि हम अपने आवेदन में क्या लागू करना चाहते हैं। प्रत्येक trade ईवेंट, हम स्टोर करेंगे:

  • item_id - item कारोबार किया।
  • seller_id और buyer_id - दोनों trader तालिका और व्यापार में शामिल उपयोगकर्ताओं को निरूपित करें।
  • quantity - इस लेन-देन में उस वस्तु का कितना कारोबार हुआ।
  • unit_price - इस व्यापार में इस वस्तु के लिए प्रयुक्त इकाई मूल्य।
  • details - सभी अतिरिक्त विवरण, पाठ्य प्रारूप में।
  • offer_id - offer जिसने इस व्यापार की शुरुआत की। नोट:पहला ऑफ़र एक व्यापार शुरू करता है, इसलिए वह आईडी है जिसे हम यहां स्टोर करेंगे।
  • ts - टाइमस्टैम्प जब यह व्यापार हुआ।

आप क्या सोचते हैं?

हमने क्रिप्टोक्यूरेंसी, स्टॉक और अन्य वित्तीय डेरिवेटिव के ऑनलाइन व्यापार की सुविधा के लिए एक डेटा मॉडल पर विचार किया है। यह सिर्फ मॉडल की नंगी हड्डियाँ हैं; अन्य विवरणों का एक समूह है जिसे हम जोड़ सकते हैं। मैं व्यापारियों से संबंधित दस्तावेजों और भुगतान जानकारी को संग्रहीत करने के तरीके के बारे में सोच रहा हूं। आप क्या जोड़ेंगे? या शायद हटा दें? कृपया हमें टिप्पणियों में बताएं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. शीर्ष 5 निःशुल्क डेटाबेस डिज़ाइन उपकरण

  2. डाउनटाइम के बिना Django में एक इंडेक्स कैसे बनाएं

  3. एचडीएफएस का परिचय | एचडीएफएस क्या है और यह कैसे काम करता है?

  4. स्प्लिटिंग स्ट्रिंग्स:ए फॉलो-अप

  5. अपडेट किया गया Azure SQL डेटाबेस टियर विकल्प