ছক • নাম
সম্প্রতি শিখেছি একবচন সঠিক
হ্যাঁ. বিধর্মীদের থেকে সাবধান থাকুন। টেবিলের নামগুলির বহুবচন হ'ল এমন কোনও ব্যক্তির একটি নিশ্চিত চিহ্ন যাঁর কোনও মানক পদার্থ পড়েনি এবং ডাটাবেস তত্ত্ব সম্পর্কে জ্ঞান নেই।
মানক সম্পর্কে দুর্দান্ত কিছু জিনিস হ'ল:
- তারা সবাই একে অপরের সাথে একীভূত হয়
- তারা একসাথে কাজ
- এগুলি আমাদের চেয়ে বৃহত্তর মন দ্বারা রচিত হয়েছিল, তাই তাদের নিয়ে আমাদের বিতর্ক করার দরকার নেই।
স্ট্যান্ডার্ড টেবিলের নামটি টেবিলের প্রতিটি সারি বোঝায় , যা সমস্ত ভার্চিয়ায় ব্যবহৃত হয়, টেবিলের মোট সামগ্রী নয় (আমরা জানি যে Customer
টেবিলটিতে সমস্ত গ্রাহক রয়েছে)।
সম্পর্ক, ক্রিয়া বাক্যাংশ
জেনুইন রিলেশনাল ডেটাবেসগুলিতে মডেল করা হয়েছে (1970-এর পূর্বের রেকর্ড ফাইলিং সিস্টেমগুলির বিপরীতে [ Record IDs
সুবিধার জন্য একটি এসকিউএল ডাটাবেস ধারক প্রয়োগ করা হয় যার দ্বারা চিহ্নিত ):
- টেবিলগুলি ডাটাবেসের সাবজেক্টস , সুতরাং এগুলি আবার বিশেষ্য , একবচন
- টেবিলগুলির মধ্যে সম্পর্কগুলি ক্রিয়াগুলি বিশেষ্যগুলির মধ্যে সংঘটিত হয়, সুতরাং এটি ক্রিয়া হয় (যেমন তারা নির্বিচারে সংখ্যাযুক্ত বা নামকরণ করা হয় না)
- যে হয় সম্পৃক্ত
- যা সরাসরি ডেটা মডেল থেকে পড়তে পারে (শেষে আমার উদাহরণগুলি উল্লেখ করুন)
- (একটি স্বাধীন টেবিলের পূর্বাভাস (শ্রেণিবিন্যাসের শীর্ষ পিতামাতার নামটি এটি স্বাধীন)
- সুতরাং ক্রিয়া বাক্যাংশটি সাবধানতার সাথে বেছে নেওয়া হয়েছে, যাতে এটি সার্থক হয় এবং জেনেরিক পদগুলি এড়ানো হয় (এটি অভিজ্ঞতার সাথে সহজ হয়ে যায়)। মডেলিংয়ের সময় ক্রিয়া বাক্যাংশটি গুরুত্বপূর্ণ কারণ এটি মডেলটিকে সমাধান করতে সহায়তা করে, অর্থাত্। সম্পর্কগুলি স্পষ্ট করা, ত্রুটিগুলি চিহ্নিত করা এবং টেবিলের নামগুলি সংশোধন করা।
Diagram_A
অবশ্যই, সম্পর্কটি CONSTRAINT FOREIGN KEY
শিশু টেবিলে একটি হিসাবে এসকিউএল তে প্রয়োগ করা হয়েছে (আরও, পরে)। এখানে Verb বাক্যাংশ (মডেলটিতে), পূর্বাভাস যা এটি উপস্থাপন করে (মডেল থেকে পড়তে হবে), এবং এফকে সীমাবদ্ধতার নাম :
Initiates
Each Customer Initiates 0-to-n SalesOrders
Customer_Initiates_SalesOrder_fk
সারণী • ভাষা
তবে, সারণীটি বর্ণনা করার সময় , বিশেষত প্রযুক্তি সম্পর্কিত ভাষায় যেমন ভবিষ্যদ্বাণী, বা অন্যান্য ডকুমেন্টেশনের ক্ষেত্রে, প্রাকৃতিকভাবে ইংরেজি ভাষায় একক এবং বহুবচন ব্যবহার করুন। টেবিলটি মাথায় রেখে একক সারি (সম্পর্ক) এর জন্য নামকরণ করা হয়েছে এবং ভাষাটি প্রতিটি উত্পন্ন সারিকে বোঝায়:
Each Customer initiates zero-to-many SalesOrders
না
Customers have zero-to-many SalesOrders
সুতরাং, যদি আমি একটি টেবিল পেয়েছি "ব্যবহারকারী" এবং তারপরে আমি কেবলমাত্র ব্যবহারকারীদের কাছে থাকা পণ্যগুলি পেয়েছি, সারণীর "ব্যবহারকারী-পণ্য" বা কেবল "পণ্য" নামকরণ করা উচিত? এটি অনেক সম্পর্কের মধ্যে একটি।
(এটি নামকরণ-কনভেনশন প্রশ্ন নয়; এটি আ ডিবি ডিজাইনের প্রশ্ন)) user::product
1 :: n হয় কিনা তা বিবেচ্য নয়। কী গুরুত্বপূর্ণ তা product
পৃথক সত্তা কিনা এবং এটি একটি স্বতন্ত্র টেবিল , কিনা is এটি নিজস্বভাবে থাকতে পারে। অতএব product
, না user_product
।
এবং যদি product
কেবলমাত্র একটি প্রসঙ্গে থাকে তবে user
। এটি একটি নির্ভরশীল টেবিল , সুতরাং user_product
।
Diagram_B
এবং আরও বলতে গেলে, আমি যদি প্রতিটি পণ্যটির জন্য (কোনও কারণে) একাধিক পণ্যের বিবরণ পাই, তবে এটি "ব্যবহারকারী-পণ্য-বিবরণ" বা "পণ্য-বিবরণ" বা কেবল "বিবরণ" হবে? অবশ্যই সঠিক বিদেশী কী সেট করা আছে .. কেবলমাত্র বিবরণটির নামকরণ করা সমস্যাযুক্ত কারণ আমার ব্যবহারকারীর বিবরণ বা অ্যাকাউন্টের বিবরণ বা যা কিছু থাকতে পারে।
সেটা ঠিক. হয় user_product_description
xor product_description
উপরের উপর ভিত্তি করে সঠিক হবে। এটি অন্যের থেকে পৃথক করার জন্য নয় xxxx_descriptions
, তবে নামটি এটি কোথায় রয়েছে তার একটি ধারণা প্রদান করা, যার উপসর্গটি পিতামাতার সারণী।
আমি যদি কেবল দুটি কলাম সহ খাঁটি সম্পর্কের টেবিলটি (অনেকের কাছে অনেক) চাই, তবে এটির মতো দেখতে কেমন? "ব্যবহারকারীর স্টাফ" বা সম্ভবত "rel-user-stuff" এর মতো কিছু? এবং যদি প্রথমটি হয় তবে এটির থেকে কী আলাদা হবে, উদাহরণস্বরূপ "ব্যবহারকারী-পণ্য"?
আশা করি রিলেশনাল ডাটাবেসের সমস্ত টেবিলগুলি খাঁটি সম্পর্কযুক্ত, সাধারণ টেবিল। নামে এটি সনাক্ত করার দরকার নেই (অন্যথায় সমস্ত টেবিল হবে rel_something
)।
যদি এতে কেবলমাত্র দুটি পিতা-মাতার পিকে থাকে (যা যৌক্তিক এন :: এন সম্পর্ককে যৌক্তিক স্তরে সত্তা হিসাবে বিদ্যমান নয়, একটি শারীরিক টেবিলের মধ্যে সমাধান করে), এটি একটি সহযোগী ছক । হ্যাঁ, সাধারণত নামটি দুটি পিতামাতার নামের সংমিশ্রণ।
নোট করুন যে এই জাতীয় ক্ষেত্রে ক্রিয়া বাক্যাংশ প্রযোজ্য, এবং সন্তানের টেবিলকে উপেক্ষা করে পিতামাতার কাছ থেকে যেমন পড়া হয়, কারণ জীবনের একমাত্র উদ্দেশ্য হ'ল দুটি পিতা-মাতার সাথে সম্পর্কযুক্ত।
Diagram_C
যদি তা না হয় না একটি মিশুক ছক (অর্থাত। দুই পিকেএস ছাড়াও, এটা তথ্য রয়েছে), তারপর এটা উপযুক্তভাবে নাম দিন, এবং ক্রিয়া বাক্যাংশ এটি, সম্পর্ক শেষে না পিতা বা মাতা প্রযোজ্য।
Diagram_D
যদি আপনি দুটি user_product
টেবিল দিয়ে শেষ করেন , তবে এটি খুব উচ্চতর সংকেত যা আপনি ডেটাটিকে সাধারণীকরণ করেননি। সুতরাং কয়েকটি পদক্ষেপ ফিরে যান এবং এটি করুন এবং সারণীগুলির নাম নির্ভুল এবং ধারাবাহিকভাবে দিন। নামগুলি তখন তাদের সমাধান করবে।
নামকরণ কনভেনশন
যে কোনও সাহায্যের প্রশংসা করা হয় এবং যদি আপনার ছেলেরা সুপারিশ করে যে নামকরণের নামকরণের কোনও প্রকার যদি সেখানে থাকে তবে বিনা দ্বিধায় লিঙ্ক করুন।
আপনি যা করছেন তা অত্যন্ত গুরুত্বপূর্ণ এবং এটি প্রতিটি স্তরে ব্যবহারের সহজলভ্যতা এবং বোঝার উপর প্রভাব ফেলবে। সুতরাং শুরুতে যতটা সম্ভব বোঝাপড়া পাওয়া ভাল। আপনি এসকিউএল এ কোডিং শুরু না করা পর্যন্ত এর বেশিরভাগের প্রাসঙ্গিকতা স্পষ্ট হবে না।
কেস হ'ল ঠিকানা প্রথম আইটেম। সমস্ত ক্যাপ অগ্রহণযোগ্য। মিশ্র কেসটি স্বাভাবিক, বিশেষত যদি টেবিলগুলি ব্যবহারকারীদের দ্বারা সরাসরি অ্যাক্সেসযোগ্য হয়। আমার ডেটা মডেলগুলি উল্লেখ করুন। মনে রাখবেন যে সন্ধানকারী যখন কিছু ডিমেটেড ননএসকিউএল ব্যবহার করছেন, যার কেবল ছোট হাতের অক্ষর রয়েছে, তখন আমি তা দিয়ে থাকি, সেক্ষেত্রে আমি আন্ডারস্কোরগুলি অন্তর্ভুক্ত করি (আপনার উদাহরণ অনুসারে)।
কোনও অ্যাপ্লিকেশন বা ব্যবহারের ফোকাস নয়, ডেটা ফোকাস বজায় রাখুন । এটি, সমস্ত 2011 পরে, আমাদের ওপেন আর্কিটেকচার হয়েছে 1984 এর পর থেকে এবং ডেটাবেসগুলি সেগুলি যে অ্যাপ্লিকেশনগুলি ব্যবহার করে সেগুলি থেকে আলাদা বলে মনে করা হচ্ছে।
এইভাবে, তারা বড় হওয়ার সাথে সাথে এবং একটি অ্যাপের বেশি তাদের ব্যবহার করার পরে নামকরণ অর্থবহ থাকবে এবং কোনও সংশোধন দরকার নেই। (সম্পূর্ণ একক অ্যাপে এম্বেড থাকা ডেটাবেসগুলি ডাটাবেস নয়)) ডেটা উপাদানগুলির নাম কেবল ডেটা হিসাবে Name
খুব বিচক্ষণ এবং নাম টেবিল এবং কলামগুলি খুব নির্ভুলভাবে করুন । UpdatedDate
এটি যদি DATETIME
ডেটাটাইপ হয় তবে ব্যবহার করবেন না UpdatedDtm
। _description
এটিতে ডোজ থাকলে ব্যবহার করবেন না ।
এটি ডাটাবেস জুড়ে সামঞ্জস্যপূর্ণ হওয়া গুরুত্বপূর্ণ । ব্যবহার করবেন না NumProduct
এক জায়গায় পণ্য সংখ্যা এবং ইঙ্গিত ItemNo
বা ItemNum
অন্য জায়গায় আইটেমের সংখ্যা নির্দেশ করে হবে। ব্যবহার করুন NumSomething
সংখ্যা অফ, এবং SomethingNo
বা SomethingId
শনাক্তকারী জন্য, ধারাবাহিকভাবে।
সারণীর নাম বা সংক্ষিপ্ত কোড যেমন কলামের নামটি উপস্থাপন করবেন না user_first_name
। এসকিউএল ইতিমধ্যে যোগ্যতা হিসাবে টেবিলের নাম সরবরাহ করে:
table_name.column_name -- notice the dot
ব্যতিক্রমসমূহ:
প্রথম ব্যতিক্রম পিকেগুলির জন্য, তাদের বিশেষ হ্যান্ডলিং দরকার কারণ আপনি এগুলিকে সর্বদা যোগ দিয়ে থাকেন এবং আপনি কী ডেটা কলাম থেকে আলাদা হয়ে থাকতে চান want সর্বদা ব্যবহার user_id
, কখনও না id
।
- দ্রষ্টব্য যে এটি একটি উপসর্গ হিসাবে ব্যবহৃত একটি সারণীর নাম নয় , তবে কীটির উপাদানটির জন্য সঠিক বর্ণনামূলক নাম:
user_id
এটি কলাম যা কোনও ব্যবহারকারীর শনাক্ত করে id
, user
টেবিলের শিরোনাম নয়।
- (রেকর্ড ফাইলিং সিস্টেমে ব্যতীত, যেখানে সার্োগেটরা ফাইলগুলি অ্যাক্সেস করে এবং কোনও সম্পর্কিত কী থাকে না, সেখানে সেগুলি একই এবং একই জিনিস)।
- এফকে হিসাবে পিকে যেখানেই চালিত (মাইগ্রেশন) করা হয় সেখানে সর্বদা মূল কলামটির জন্য একই নামটি ব্যবহার করুন।
- সুতরাং
user_product
সারণীতে user_id
এর পিকে উপাদান হিসাবে একটি থাকবে (user_id, product_no)
।
- আপনি কোডিং শুরু করার সাথে এর প্রাসঙ্গিকতা স্পষ্ট হয়ে উঠবে। প্রথমত,
id
অনেকগুলি টেবিলের সাহায্যে এটি এসকিউএল কোডিংয়ে মিশ্রিত হওয়া সহজ। দ্বিতীয়ত, প্রাথমিক কোডার অন্য যে কেউ কী করতে চেয়েছিল তা তার কোনও ধারণা নেই। উভয়ই প্রতিরোধ করা সহজ, যদি মূল কলামগুলি উপরের মতো আচরণ করা হয়।
দ্বিতীয় ব্যতিক্রম হ'ল যেখানে একাধিক এফকে সন্তানের বহন করে একই পিতামাতার টেবিল টেবিলটি উল্লেখ করা হয়। অনুযায়ী রিলেশনাল মডেল , ব্যবহার ভূমিকা নাম অর্থ বা ব্যবহারের যেমন পার্থক্য। AssemblyCode
এবং ComponentCode
দুই জন্য PartCodes
। এবং সেক্ষেত্রে এগুলির একটির জন্য অবিচ্ছিন্ন ব্যবহার করবেন নাPartCode
। নিখুঁত হউন.
Diagram_E
উপসর্গ
যেখানে আপনার 100 টি টেবিলের বেশি বলা আছে, সেখানে সাবজেক্ট এরিয়া দিয়ে টেবিলের নামগুলি উপসর্গ করুন:
REF_
রেফারেন্স সারণীর জন্য
OE_
অর্ডার এন্ট্রি ক্লাস্টারের জন্য, ইত্যাদি।
শুধুমাত্র শারীরিক স্তরে, যৌক্তিক নয় (এটি মডেলকে ছড়িয়ে দেয়)।
প্রত্যয়
কখনও টেবিলগুলিতে প্রত্যয় ব্যবহার করবেন না এবং সর্বদা সর্বদা প্রত্যয় ব্যবহার করুন। এর অর্থ ডাটাবেসের যৌক্তিক, সাধারণ ব্যবহারের মধ্যে কোনও আন্ডারস্কোর নেই; তবে প্রশাসনিক দিক থেকে, আন্ডারস্কোরগুলি পৃথককারী হিসাবে ব্যবহৃত হয়:
_V
দেখুন ( TableName
সামনে মূল সহ , অবশ্যই)
_fk
বিদেশী কী (সীমাবদ্ধতার নাম, কলামের নাম নয়)
_cac
ক্যাশে
_seg
বিভাগের
_tr
লেনদেন (সঞ্চিত প্রোক বা ফাংশন)
_fn
ফাংশন (অ-লেনদেনের) ইত্যাদি etc.
ফর্ম্যাটটি হ'ল টেবিল বা এফকে নাম, একটি আন্ডারস্কোর এবং ক্রিয়া নাম, একটি আন্ডারস্কোর এবং অবশেষে প্রত্যয়।
এটি সত্যই গুরুত্বপূর্ণ কারণ যখন সার্ভার আপনাকে একটি ত্রুটি বার্তা দেয়:
____blah blah blah error on object_name
কোন জিনিসটি লঙ্ঘন করা হয়েছিল এবং এটি করার চেষ্টা করছিল তা আপনি ঠিক জানেন:
____blah blah blah error on Customer_Add_tr
বিদেশী কী (সীমাবদ্ধতা, কলামটি নয়)। এফকে সবচেয়ে ভাল নামকরণ হ'ল ভার্বব বাক্যাংশ (বিয়োগ "প্রতিটি" এবং কার্ডিনালিটি) ব্যবহার করা।
Customer_Initiates_SalesOrder_fk
Part_Comprises_Component_fk
Part_IsConsumedIn_Assembly_fk
Parent_Child_fk
ক্রমটি ব্যবহার করুন না Child_Parent_fk
কারণ (ক) আপনি যখন তাদের সন্ধান করছেন তখন এটি সঠিক ক্রমে প্রদর্শিত হয় এবং (খ) আমরা জড়িত শিশুটিকে সর্বদা জানি, আমরা কী অনুমান করছি তা কোন পিতামাতার। ত্রুটি বার্তাটি তখন আনন্দদায়ক:
____ Foreign key violation on Vendor_Offers_PartVendor_fk
।
এটি সেই লোকদের জন্য ভাল কাজ করে যারা তাদের ডেটা মডেল করতে বিরত হন, যেখানে ভার্ভ বাক্যাংশগুলি চিহ্নিত করা হয়েছিল। বাকিগুলির জন্য, রেকর্ড ফাইলিং সিস্টেমগুলি, ইত্যাদি Parent_Child_fk
।
সূচকগুলি বিশেষ, তাই তাদের নিজস্ব নিজস্ব একটি নামকরণের কনভেনশন রয়েছে, যাতে প্রতিটি চরিত্রের অবস্থান 1 থেকে 3 পর্যন্ত থাকে:
U
অনন্য, বা _
অ-অনন্য
C
ক্লাস্টারযুক্ত, বা _
নন-ক্লাস্টার
_
বিভাজকের জন্য
বাকি জন্য:
নোট করুন যে সারণির নাম সূচকের নামে প্রয়োজন হয় না , কারণ এটি সর্বদা হিসাবে প্রদর্শিত হয়table_name.index_name.
সুতরাং যখন Customer.UC_CustomerId
বা Product.U__AK
ত্রুটি বার্তায় উপস্থিত হয়, এটি আপনাকে অর্থপূর্ণ কিছু বলে। আপনি যখন কোনও টেবিলে সূচকগুলি দেখেন, আপনি এগুলি সহজেই আলাদা করতে পারেন।
যোগ্য এবং পেশাদার কাউকে খুঁজুন এবং তাদের অনুসরণ করুন। তাদের নকশা দেখুন এবং সাবধানতার সাথে তারা যে নামকরণ কনভেনশনগুলি ব্যবহার করেন তা অধ্যয়ন করুন। আপনি বুঝতে পারেন না এমন কিছু সম্পর্কে তাদের নির্দিষ্ট প্রশ্ন জিজ্ঞাসা করুন। বিপরীতে, যে কেউ নামকরণের সম্মেলন বা মান সম্পর্কে সামান্য সম্মান দেখায় তার কাছ থেকে নরকের মতো ছুটে যান। আপনাকে শুরু করার জন্য এখানে কয়েকটি দেওয়া হল:
- এগুলিতে উপরের সমস্ত বাস্তব উদাহরণ রয়েছে। এই থ্রেডে নামকরণের প্রশ্ন পুনরায় জিজ্ঞাসা করুন।
- অবশ্যই, মডেলগুলি নামকরণ কনভেনশন ছাড়িয়ে অন্য কয়েকটি স্ট্যান্ডার্ড প্রয়োগ করে ; আপনি হয় আপাতত এগুলি উপেক্ষা করতে পারেন বা নির্দিষ্ট নতুন প্রশ্ন জিজ্ঞাসা করতে নির্দ্বিধায় থাকতে পারেন ।
- এগুলি প্রতিটি পৃষ্ঠায় বেশ কয়েকটি, স্ট্যাক ওভারফ্লোতে ইনলাইন চিত্র সমর্থন পাখিদের জন্য এবং তারা বিভিন্ন ব্রাউজারে ধারাবাহিকভাবে লোড করে না; সুতরাং আপনাকে লিঙ্কগুলি ক্লিক করতে হবে।
- নোট করুন যে পিডিএফ ফাইলগুলির পুরো নেভিগেশন রয়েছে, তাই নীল কাঁচের বোতামগুলিতে বা প্রসারিত শনাক্তকরণগুলি চিহ্নিত করুন:
- রিলেশনাল মডেলিং স্ট্যান্ডার্ডের সাথে অপরিচিত পাঠকরা IDEF1X স্বরলিপি সহায়ক বলে মনে করতে পারেন।
স্ট্যান্ডার্ড-অনুবর্তী ঠিকানাগুলি সহ অর্ডার এন্ট্রি এবং ইনভেন্টরি
পিএইচপি / মাইননএসকিউএল এর জন্য সহজ আন্তঃ অফিস বুলেটিন সিস্টেম
সম্পূর্ণ অস্থায়ী ক্ষমতা সহ সেন্সর পর্যবেক্ষণ
প্রশ্নের উত্তর
মন্তব্যের জায়গায় যুক্তিযুক্তভাবে উত্তর দেওয়া যায় না।
ল্যারি লাস্টিগ:
... এমনকি সবচেয়ে তুচ্ছ উদাহরণ দেখায় ...
যদি কোনও গ্রাহকের শূন্য থেকে অনেকগুলি পণ্য থাকে এবং একটি পণ্যটিতে এক থেকে একাধিক উপাদান থাকে এবং একটি উপাদানতে এক থেকে একাধিক সরবরাহকারী থাকে এবং সরবরাহকারী শূন্য বিক্রয় করে অনেকগুলি উপাদান এবং একটি বিক্রয়রেপে একাধিক গ্রাহক থাকে "প্রাকৃতিক" গ্রাহক, পণ্য, উপাদান এবং সরবরাহকারীদের সারণীগুলির নাম কী?
আপনার মন্তব্যে দুটি বড় সমস্যা রয়েছে:
আপনি আপনার উদাহরণটিকে "সর্বাধিক তুচ্ছ" হিসাবে ঘোষণা করেছেন, তবে এটি কিছুই নয়। এই ধরণের বৈপরীত্যের সাথে, আপনি যদি গুরুতর হন তবে প্রযুক্তিগতভাবে সক্ষম হলে আমি অনিশ্চিত।
এই "তুচ্ছ" জল্পনা বেশ কয়েকটি স্থূল নর্মালাইজেশন (ডিবি ডিজাইন) ত্রুটি রয়েছে।
যতক্ষণ না আপনি এগুলি সংশোধন করেন, এগুলি অপ্রাকৃত এবং অস্বাভাবিক এবং এগুলি কোনও ধারণা রাখে না। আপনি এগুলির পাশাপাশি নাম রাখতে পারেন অস্বাভাবিক_1, অস্বাভাবিক 2, ইত্যাদি etc.
আপনার কাছে "সরবরাহকারী" রয়েছে যারা কিছু সরবরাহ করেন না; বিজ্ঞপ্তি সংক্রান্ত রেফারেন্স (অবৈধ এবং অপ্রয়োজনীয়); গ্রাহকরা কোনও বাণিজ্যিক সরঞ্জাম ছাড়াই পণ্য কিনে (যেমন চালান বা বিক্রয় অর্ডার হিসাবে) কেনার ভিত্তি হিসাবে (বা গ্রাহকদের "নিজস্ব" পণ্য রয়েছে?); অমীমাংসিত বহু থেকে বহু সম্পর্ক; প্রভৃতি
এটি একবার সাধারণ হয়ে গেলে, এবং প্রয়োজনীয় সারণীগুলি সনাক্ত করা গেলে, তাদের নামগুলি সুস্পষ্ট হয়ে উঠবে। স্বাভাবিকভাবে.
যাই হোক না কেন, আমি আপনার কোয়েরিটি পরিষেবা দেওয়ার চেষ্টা করব। যার অর্থ আমি এর সাথে কিছুটা যুক্ত করতে হবে, আপনি কী বোঝাতে চেয়েছিলেন তা না জেনে তাই আমার সাথে সহ্য করুন। স্থূল ত্রুটিগুলি তালিকাভুক্ত করার জন্য অনেক বেশি এবং অতিরিক্ত স্পেসিফিকেশন দিলে আমি বিশ্বাস করি না যে আমি সেগুলি সব সংশোধন করেছি।
আমি ধরে নেব যে পণ্যটি যদি উপাদানগুলির সমন্বয়ে গঠিত হয় তবে পণ্যটি একটি সমাবেশ হয় এবং উপাদানগুলি একাধিক সমাবেশে ব্যবহৃত হয়।
আরও, যেহেতু "সরবরাহকারী শূন্য থেকে অনেকগুলি উপাদান বিক্রি করে" যেগুলি তারা তা করে না পণ্য বা সমাবেশগুলি বিক্রি করে , তারা কেবল উপাদানগুলি বিক্রি করে।
জল্পনা বনাম সাধারণ মডেল
আপনি সচেতন না হলে, স্কোয়ার কর্নার (স্বতন্ত্র) এবং বৃত্তাকার কোণার (নির্ভরশীল) মধ্যে পার্থক্যটি উল্লেখযোগ্য, দয়া করে IDEF1X নোটেশন লিঙ্কটি দেখুন। তেমনি শক্ত রেখাগুলি (সনাক্তকরণ) বনাম ড্যাশড লাইন (অ শনাক্তকরণ)।
... গ্রাহক, পণ্য, উপাদান এবং সরবরাহকারীদের রাখা টেবিলগুলির "প্রাকৃতিক" নামগুলি কী কী?
- ক্রেতা
- প্রোডাক্ট
- উপাদান (বা, এসেম্বল কম্পোনেন্ট, যারা বুঝতে পারেন যে একটি ঘটনা অন্যটিকে চিহ্নিত করে)
- সরবরাহকারী
এখন আমি টেবিলগুলি সমাধান করেছি, আমি আপনার সমস্যা বুঝতে পারি না। সম্ভবত আপনি একটি নির্দিষ্ট প্রশ্ন পোস্ট করতে পারেন ।
ভোটকফি:
রনিস তার উদাহরণে পোস্ট করা দৃশ্যটি আপনি কীভাবে পরিচালনা করছেন যেখানে দুটি সারণীর (ব্যবহারকারী_লিক্স_প্রডাক্টর, ব্যবহারকারী_ব্যক্ত_প্রডাক্ট) এর মধ্যে একাধিক সম্পর্ক বিদ্যমান? আমি ভুল বুঝে উঠতে পারি, তবে এর ফলে আপনার কনভেনশনটি বিশদভাবে ব্যবহার করে সারণীর নামগুলি সদৃশ হবে।
ধরে নেওয়া যাক কোনও সাধারণকরণের ত্রুটি নেই, User likes Product
এটি একটি ছদ্মবেশী, কোনও সারণী নয়। তাদের বিভ্রান্ত করবেন না। আমার উত্তরটি দেখুন, যেখানে এটি সাবজেক্টস, ক্রিয়াগুলি এবং পূর্বাভাসগুলির সাথে সম্পর্কিত এবং সাথে সাথে আমার উপরে ল্যারির প্রতিক্রিয়া।
প্রতিটি সারণীতে ফ্যাক্টসের একটি সেট থাকে (প্রতিটি সারিটি একটি বাস্তব)। পূর্বাভাস (বা প্রস্তাব), সত্য নয়, সেগুলি সত্য হতে পারে বা নাও পারে।
রিলেশনাল মডেল প্রথম অর্ডার সম্পৃক্ত ক্যালকুলাস (আরো সাধারণভাবে প্রথম অর্ডার লজিক নামেও পরিচিত) উপর ভিত্তি করে। প্রেডিকেট হ'ল সহজ, সুনির্দিষ্ট ইংরেজিতে একক-দফা বাক্য, যা সত্য বা মিথ্যাতে মূল্যায়ন করে।
তদুপরি, প্রতিটি টেবিলটি একটি নয় , বহু পূর্বাভাসের প্রতিনিধিত্ব করে বা বাস্তবায়ন করে ।
একটি ক্যোয়ারী একটি প্রিডিকেট (বা একাধিক ভবিষ্যদ্বাণী, এক সাথে জড়িত) এর পরীক্ষা যা সত্য (ফ্যাক্টটি বিদ্যমান) বা মিথ্যা (ফ্যাক্টের অস্তিত্ব নেই) এর ফলাফল।
সুতরাং সারণীর নাম দেওয়া উচিত, যেমনটি আমার উত্তর (নামকরণের কনভেনশন) তে সারি অনুসারে, ফ্যাক্ট এবং প্রেডিকেটস নথিভুক্ত করা উচিত (সমস্ত উপায়ে এটি ডাটাবেস ডকুমেন্টেশনের অংশ) তবে ভবিষ্যদ্বাণীগুলির পৃথক তালিকা হিসাবে ।
এটি গুরুত্বপূর্ণ নয় যে এগুলি কোনও পরামর্শ নয়। এগুলি খুব গুরুত্বপূর্ণ, তবে আমি এখানে এটি লিখব না।
তাড়াতাড়ি, তারপর। যেহেতু রিলেশনাল মডেলটি এফপিসিতে প্রতিষ্ঠিত, তাই পুরো ডাটাবেসকে এফপিসি ঘোষণার একটি সেট, ভবিষ্যদ্বাণীগুলির একটি সেট বলা যেতে পারে। তবে (ক) অনেক ধরণের ভবিষ্যদ্বাণী রয়েছে এবং (খ) একটি সারণী একটি ভবিষ্যদ্বাণীকে প্রতিনিধিত্ব করে না (এটি বহু ভবিষ্যদ্বাণী এবং বিভিন্ন ধরণের ভবিষ্যদ্বাণীগুলির শারীরিক বাস্তবায়ন )।
সুতরাং "" ভবিষ্যদ্বাণী যে এটি "উপস্থাপন করে" এর জন্য সারণীর নামকরণ একটি অবাস্তব ধারণা।
"তাত্ত্বিকরা" কেবলমাত্র কয়েকটি ভবিষ্যদ্বাণী সম্পর্কে সচেতন, তারা বুঝতে পারে না যেহেতু আরএম FOL এ প্রতিষ্ঠিত হয়েছিল, তাই পুরো ডাটাবেসটি ভবিষ্যদ্বাণীগুলির একটি সেট এবং বিভিন্ন ধরণের।
এবং অবশ্যই, তারা কয়েক থেকে কিম্ভুতকিমাকার বেশী যে তারা জানে না নির্বাচন করুন: EXISTING_PERSON
; PERSON_IS_CALLED
। যদি এটি এতটা দুঃখ না হত তবে এটি হাসিখুশি হবে।
আরও লক্ষ করুন যে স্ট্যান্ডার্ড বা পারমাণবিক সারণীর নাম (সারিটির নামকরণ) সমস্ত ভার্বায়েজ (টেবিলের সাথে সংযুক্ত সমস্ত ভবিষ্যদ্বাণী সহ) জন্য দুর্দান্তভাবে কাজ করে। বিপরীতভাবে, বোকা "টেবিল প্রিকেট প্রতিনিধিত্ব করে" নামটি পারে না। যা "তাত্ত্বিকদের" পক্ষে ঠিক আছে, যারা ভবিষ্যদ্বাণী সম্পর্কে খুব কম বোঝেন, তবে অন্যথায় প্রতিবন্ধক হন।
পূর্বাভাসগুলি যা ডেটা মডেলের সাথে প্রাসঙ্গিক, মডেলটিতে প্রকাশিত হয় , সেগুলি দুটি আদেশের।
ইউনিারি প্রিডিকেট
প্রথম সেটটি ডায়াগ্রাম্যাটিক , টেক্সট নয়: স্বরলিপিটি । এর মধ্যে রয়েছে বিভিন্ন অস্তিত্বের অন্তর্ভুক্ত; বাধ্যতা ওরিয়েন্টেড; এবং বর্ণনাকারী (গুণাবলী) পূর্বাভাস।
- অবশ্যই, এর অর্থ যারা কেবলমাত্র একটি স্ট্যান্ডার্ড ডেটা মডেলই 'পড়তে' পারেন সেই ভবিষ্যদ্বাণীগুলি পড়তে পারেন। একারণে "তাত্ত্বিক", যারা কেবল তাদের পাঠ্য-একমাত্র মানসিকতার দ্বারা গুরুতরভাবে পঙ্গু হয়ে পড়েছে, তারা ডেটা মডেলগুলি পড়তে পারে না, কেন তারা 1984-এর পূর্বের পাঠ্য-কেবল মানসিকতার সাথে লেগে থাকে।
বাইনারি ভবিষ্যদ্বাণী
দ্বিতীয় সেটটি হ'ল ফ্যাক্টগুলির মধ্যে সম্পর্ক তৈরি করে। এটি সম্পর্ক রেখা। ক্রিয়া বাক্যাংশ (উপরে বর্ণিত) ভবিষ্যদ্বাণী, প্রস্তাবটি চিহ্নিত করে যা বাস্তবায়িত হয়েছে (যা ক্যোয়ারির মাধ্যমে পরীক্ষা করা যেতে পারে)। এর চেয়ে বেশি স্পষ্টতই আর কেউ পেতে পারে না।
- সুতরাং, যিনি স্ট্যান্ডার্ড ডেটা মডেলগুলিতে সাবলীল, তার কাছে প্রাসঙ্গিক সমস্ত পূর্বাভাস মডেলটিতে নথিভুক্ত করা হয়। তাদের ভবিষ্যদ্বাণীগুলির একটি পৃথক তালিকা প্রয়োজন নেই (তবে ব্যবহারকারীরা, যারা ডেটা মডেল থেকে সমস্ত কিছু 'পড়তে পারেন না, করেন!')।
এখানে একটি ডেটা মডেল রয়েছে , যেখানে আমি পূর্বাভাসগুলি তালিকাভুক্ত করেছি। আমি উদাহরণটি বেছে নিয়েছি কারণ এটি অস্তিত্ব, ইত্যাদি, ভবিষ্যদ্বাণীগুলি এবং সেই সাথে সম্পর্কের বিষয়গুলি দেখায়, তালিকাভুক্ত নয় এমন একমাত্র পূর্বাভাস বর্ণনাকারী। এখানে, সন্ধানীর শিক্ষার স্তরের কারণে, আমি তাকে ব্যবহারকারীর মতো আচরণ করছি।
সুতরাং দুটি পিতামাতার টেবিলের মধ্যে একাধিক সন্তানের টেবিলের ঘটনা কোনও সমস্যা নয়, কেবল তাদের বিষয়বস্তুটিকে এক্সটেনশিয়াল ফ্যাক্ট হিসাবে নাম দিন এবং নামগুলি স্বাভাবিক করুন।
অ্যাসোসিয়েটিভ টেবিলগুলির জন্য সম্পর্কের নামের জন্য ভার্বব বাক্যাংশগুলির জন্য আমি যে বিধিগুলি দিয়েছি সেগুলি এখানে কার্যকর হয়। এখানে একটি পূর্বনির্ধারিত বনাম সারণী আলোচনা রয়েছে, যা উল্লেখ করা সমস্ত পয়েন্টকে সংক্ষেপে .েকে রাখে।
পূর্বাভাসের সঠিক ব্যবহার এবং কীভাবে সেগুলি ব্যবহার করবেন (যা এখানে মন্তব্যে প্রতিক্রিয়া জানানোর তুলনায় একেবারেই আলাদা প্রসঙ্গ) একটি ভাল সংক্ষিপ্ত বিবরণের জন্য, এই উত্তরটি দেখুন , এবং ভবিষ্যদ্বাণীপূর্ণ অংশে স্ক্রোল করুন ।
চার্লস বার্নস:
ক্রমানুসারে, আমি বলতে চাইছিলাম ওরাকল-স্টাইলের অবজেক্টটি কোনও নিয়ম অনুসারে একটি নম্বর এবং এর পরবর্তী অংশটি বিশুদ্ধরূপে ব্যবহৃত হয় (যেমন "1 যোগ করুন")। যেহেতু ওরাকলটিতে অটো-আইডি টেবিলের অভাব রয়েছে, তাই আমার সাধারণ ব্যবহারটি টেবিল পিকেগুলির জন্য স্বতন্ত্র আইডি তৈরি করা। অন্তর্ভুক্ত foo (আইডি, সোমডাটা) ভ্যালু (foo_s.nextval, "ডেটা" ...)
ঠিক আছে, এটিকেই আমরা একটি কী বা নেক্সটকি টেবিল বলি। নাম হিসাবে এটি। যদি আপনার সাবজেক্টআরিয়াস থাকে তবে এটি ডাটাবেস জুড়ে সাধারণ তা বোঝাতে COM_NextKey ব্যবহার করুন।
বিটিডব্লিউ, এটি কী উত্পন্ন করার খুব খারাপ পদ্ধতি। মোটেও স্কেলেবল নয়, তবে তারাকেলের অভিনয় দিয়ে এটি সম্ভবত "ঠিক আছে"। আরও, এটি নির্দেশ করে যে আপনার ডাটাবেসগুলি সার্ভেটে পূর্ণ, সেগুলি ক্ষেত্রে সম্পর্কিত নয়। যার অর্থ অত্যন্ত খারাপ কর্মক্ষমতা এবং সততার অভাব।
primarily opinion-based
স্পষ্টতই মিথ্যা।