টুডো তালিকার জন্য ডেটাবেস স্কিমা


15

আমি পিএইচপি, মাইএসকিউএল, জ্যাকুরি টেম্প্লেটিং এবং জেএসওএন দিয়ে খুব সাধারণ টুডো তালিকা অ্যাপ্লিকেশন করার চেষ্টা করছি ... তবে, আমার স্কিমা জেএসএনে জিনিসগুলিকে জটিল বলে মনে হচ্ছে।

এটি করার সর্বোত্তম উপায় কী?

  1. আইটেমগুলি সমেত প্রতিটি তালিকার জন্য একটি নতুন টেবিল।

অথবা

  1. তালিকাগুলির জন্য একটি টেবিল এবং কোনওভাবে যোগ দেওয়া আইটেমগুলির জন্য একটি টেবিল? কারণ আমি এটি চেষ্টা করেছি এবং এটি করার সঠিক উপায় বলে মনে হচ্ছে না? উদাহরণ http://jsfiddle.net/Lto3xuhe/

আপনি কতগুলি তালিকা সমর্থন করতে চাইবেন?

সর্বাধিক 100. সীমা কি?
কোডস্লো

21
যেভাবে একটি ডিবিএ গণনা করা হয়। একজন সাধারণ ব্যক্তি দশকে "1,2,3,4 ... 10" হিসাবে গণনা করেন। এসি প্রোগ্রামার দশকে "0,1,2,3, ... 9" হিসাবে গণ্য হয়। একটি ডিবিএ "শূন্য, এক, অনেকগুলি" গণনা করে।

উত্তর:


66

কিছুক্ষণ আগে শুনেছি একটি রসিকতা আছে:

প্রশ্ন কিভাবে একটি বেসিক কোডার 10 গণনা করে?
একটি 1,2,3,4,5,6,7,8,9,10

প্রশ্ন কিভাবে একটি সি কোডার 10 গণনা করে?
একটি 0,1,2,3,4,5,6,7,8,9

প্রশ্ন কিভাবে একটি ডিবিএ 10 গণনা করে?
একটি 0,1, অনেক

এই রসিকতার পিছনে সত্যটি হ'ল একবার আপনার ডাটাবেস কাঠামোতে (কলাম বা সারণী) একই জিনিস দুটি (বা তার বেশি) পরে, আপনি এটি ভুল করছেন।

এমন একটি স্কিমা যা দেখে মনে হচ্ছে:

+----------+
| id       |
| name     |
| phone1   |
| phone2   |
|          |
+----------+

ভুল কারণ কারও কাছে থাকলে তৃতীয় ফোন নম্বর আপনি কোথায় রাখবেন?

একই টেবিলে তাদের প্রযোজ্য। রানটাইমে স্কিমাটি সংশোধন করাও এটি একটি খারাপ বিষয়, যা "প্রতিটি তালিকার জন্য নতুন টেবিল" বোঝাচ্ছে। (সম্পর্কিত: এমভিসি 4: রান সময়ে মডেলটি কীভাবে তৈরি করবেন? )

এবং এইভাবে, সমাধানটি একটি টুডো তালিকা তৈরি করতে হবে যা দুটি টেবিলের সমন্বয়ে গঠিত। আপনার কাছে দুটি জিনিস রয়েছে - তালিকা এবং আইটেম items

সুতরাং, আসুন একটি টেবিল কাঠামো তৈরি করুন যা এটি প্রতিফলিত করে:

+----------+       +-------------+
| List     |       | Task        |
+----------+       +-------------+
| id (pk)  <---+   | id (pk)     |
| name     |   +---+ listid (fk) |
|          |       | desc        |
|          |       |             |
+----------+       +-------------+

তালিকার একটি আইডি রয়েছে (তালিকার প্রাথমিক কী) এবং একটি নাম। টাস্কটির একটি আইডি (প্রাথমিক কী) একটি লিস্টিড (একটি বিদেশী কী) এবং কার্যটির বিবরণ রয়েছে। বিদেশী কীটি অন্য সারণীর প্রাথমিক কীটির সাথে সম্পর্কিত।

আমি উল্লেখ করব যে এটি সফ্টওয়্যার এবং টেবিল কাঠামোর সমর্থন করার জন্য বিভিন্ন প্রয়োজনীয়তার সমস্ত সম্ভাবনাগুলিকে অন্তর্ভুক্ত করতে শুরু করে না। সমাপ্ত, নির্ধারিত তারিখ, পুনরাবৃত্তি ইত্যাদি ... এগুলি সমস্ত অতিরিক্ত কাঠামো যা টেবিলটি ডিজাইন করার সময় বিবেচনা করা প্রয়োজন। এটি বলেছিল, যদি টেবিলের কাঠামোটি যথাযথভাবে স্বাভাবিক করা হয় না (বা আপনি যে ট্রেডফর্মগুলি করেছেন যে এটি সাধারণীকরণের কারণে অনুধাবন করা হয়) তবে আপনার পরে অনেক মাথাব্যথা হবে।


এখন, এটি সম্পর্কিত সম্পর্কিত ডেটাবেস হিসাবে এটি লেখার সাথে সম্পর্কিত all তবে সেখানে কেবলমাত্র ডাটাবেসই নয়। আপনি যদি কোনও তালিকাটিকে নথি হিসাবে বিবেচনা করেন তবে নথির স্টাইলযুক্ত নোসকিএল ডাটাবেসগুলি এমন একটি পদ্ধতির প্রস্তাবও দিতে পারে যা ভুল নয়।

যদিও আমি এটি খুব বেশি দূরত্বে প্রকাশ করতে যাচ্ছি না, পালঙ্কে টোডো তালিকার জন্য এখানে প্রচুর টিউটোরিয়াল রয়েছে। এর মধ্যে একটি যা অনুসন্ধানে এসেছিল তা হ'ল কাউচডিবি-তে একটি সাধারণ টাস্ক-তালিকা অ্যাপ্লিকেশন । কাউচডবি উইকিতে আরেকটি প্রদর্শন রয়েছে: করণীয় তালিকার প্রস্তাবিত স্কিমা

একটি পালঙ্কের জন্য উপযুক্ত পদ্ধতির ক্ষেত্রে, প্রতিটি তালিকা ডাটাবেসে সঞ্চিত একটি JSON নথি। আপনি কেবল একটি JSON অবজেক্টে তালিকাটি স্থাপন করবেন এবং এটি ডাটাবেসে রাখবেন। এবং তারপরে আপনি ডাটাবেস থেকে পড়েন।

জেএসওএন এর মতো দেখতে পেল:

[
 {"task":"get milk","who":"Scott","dueDate":"2013-05-19","done":false},
 {"task":"get broccoli","who":"Elisabeth","dueDate":"2013-05-21","done":false},
 {"task":"get garlic","who":"Trish","dueDate":"2013-05-30","done":false},
 {"task":"get eggs","who":"Josh","dueDate":"2013-05-15","done":true}
]

( স্ট্যাক ওভারফ্লোতে জসন ফাইলের সাথে শপিং তালিকা তৈরি করা থেকে )।

বা কিছু যে কাছাকাছি। নথিটির অংশ হিসাবে পালঙ্কের রয়েছে এমন আরও কিছু রেকর্ড রয়েছে।

জিনিসটি হল, এটির কাছে যাওয়ার ভুল উপায় নয় এবং একটি ডকুমেন্ট ডাটাবেসে একটি টুডো তালিকা এটি কীভাবে করবেন তার জন্য কম ধারণা ওভারহেড দিয়ে আপনি যা করার চেষ্টা করছেন তার জন্য পুরোপুরি উপযুক্ত হতে পারে ।


6

বিকল্প 2 একটি aতিহ্যবাহী মাস্টার / বিস্তারিত সেটআপ। আপনি সম্ভবত এখানে চান। আইটেম টেবিলের তালিকার আইডি রাখুন এবং এতে যোগ দিন। স্কিমাটি JSON- এ প্রভাব ফেলবে না। আপনার ক্যোয়ারিতে এমন কিছু লাগতে পারে:

select lists.name as list_name, items.name as item_name 
from items 
join lists on (lists.id = items.list_id)

এই ত্রুটিটি পাওয়া: mysqli_fetch_assoc () প্রত্যাশা 1 প্যারামিটারটি mysqli_result হবে, বুলিয়ান দেওয়া হয়েছে?
কোডস্লো

6
@CodeSlow: এটা একটা নির্দিষ্ট, বিস্তারিত কোড প্রশ্ন, আরো উপযুক্তভাবে জানতে চাইলে এর stackoverflow.com
FrustratedWithFormsDesigner

3

আপনি কীভাবে ডেটা সংরক্ষণের পরিকল্পনা করছেন তার সাথে আমি আপনার ইউআই প্রতিনিধিত্ব বা ডেটা ট্রান্সমিশনটি ইউআইতে টাই করার চেষ্টা করব না। দুজনকে আলাদা রেখে এবং উভয়কে বিবাহ করার জন্য কিছু মিডলওয়্যার যুক্তি ব্যবহার করে আপনি সম্ভবত অন্যটিকে কোনও সমালোচনামূলক উপায়ে প্রভাবিত না করে সহজেই উভয় পক্ষের পরিবর্তন করতে পারবেন।

একটি ডেটা স্টোরেজ দৃষ্টিকোণ থেকে, আপনি সম্ভবত বিকল্প 2 ব্যবহার করবেন যা সাধারণ নরমালিত ডেটা প্যাটার্ন অনুসরণ করে যেখানে সাধারণ অংশগুলি পুনরায় পুনরায় এড়াতে এবং ডাটাবেস ব্লাট কমাতে তাদের নিজস্ব টেবিলে সজ্জিত করা হয়।

দেখার দৃষ্টিকোণ থেকে, আপনাকে কেবল কোনও ফলাফলের সেটটিতে প্রাসঙ্গিক ডেটাতে যোগদান করতে একটি ডাটাবেস ক্যোয়ারী ব্যবহার করতে হবে এবং তারপরে ফলাফলটি পুনরাবৃত্তি করতে হবে এবং আপনার ইউআই প্রয়োজনীয়তার জন্য প্রযোজ্য একটি জসন প্রতিক্রিয়া উত্পন্ন করতে হবে। আপনি সম্ভবত যা করতে চান তা ডেটাটি JSON এ খাওয়ানো হয় যাতে এটি আপনার ইউআইয়ের যথাসম্ভব যথাসম্ভব ফিট করে, প্রায়শই আপনার ওয়েব পৃষ্ঠাগুলিতে অতিরিক্ত স্ক্রিপ্টিং যুক্তির প্রয়োজনীয়তা হ্রাস করে।


এটি হ'ল আমার ঠিক কী করা দরকার তবে কীভাবে এটি করা যায় তার কোনও ধারণা নেই। আপনার কাছে কি এমন কোনও উদাহরণ রয়েছে যা আমি দেখতে / অনুসরণ করতে পারি? ধন্যবাদ - পিএইচপি
জেএসএন তৈরি হচ্ছে
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.