আপনি যা বলেছেন তার ভিত্তিতে আমি নিম্নলিখিত সাধারণ স্কিমা ব্যবহার করব:
CREATE TABLE [dbo].[PollQuestion]
(
[PollQuestionId] INT NOT NULL PRIMARY KEY IDENTITY,
[QuestionText] NVARCHAR(150) NOT NULL, -- Some reasonable character limit
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
[Archived] DATETIME2(2) NULL, -- Remove this if you don't need to hide questions
)
CREATE TABLE [dbo].[PollOption]
(
[PollOptionId] INT NOT NULL PRIMARY KEY IDENTITY,
[PollQuestionId] INT NOT NULL, -- Link to the question here because options aren't shared across questions
[OptionText] NVARCHAR(50) NOT NULL, -- Some reasonable character limit
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
[Archived] DATETIME2(2) NULL -- Remove this if you don't need to hide options
CONSTRAINT [FK_PollOption_PollQuestionId_to_PollQuestion_PollQuestionId] FOREIGN KEY ([PollQuestionId]) REFERENCES [dbo].[PollQuestion]([PollQuestionId])
)
CREATE TABLE [dbo].[PollResponse]
(
[PollResponseId] INT NOT NULL PRIMARY KEY IDENTITY,
[PollOptionId] INT NOT NULL,
[UserId] INT NOT NULL,
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
[Archived] DATETIME2(2) NULL, -- Remove this if you don't need to hide answers
CONSTRAINT [FK_PollResponse_PollOptionId_to_PollOption_PollOptionId] FOREIGN KEY ([PollOptionId]) REFERENCES [dbo].[PollOption]([PollOptionId]),
CONSTRAINT [FK_PollResponse_UserId_to_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User]([UserId])
)
উত্তরটি যদি কোনও সংখ্যা, তারিখ, শব্দ ইত্যাদি হয় তবে আপনি সত্যিই যত্নবান নন কারণ ডেটা একটি প্রশ্নের উত্তর যা আপনার সরাসরি কাজ করার দরকার হয় না। তদুপরি তথ্যের শুধুমাত্র প্রশ্নের প্রসঙ্গেই অর্থ রয়েছে। যেমন একটি nvarchar তথ্য সংরক্ষণের জন্য সবচেয়ে বহুমুখী মানব পাঠযোগ্য ব্যবস্থা।
প্রশ্ন এবং সম্ভাব্য উত্তরগুলি প্রথম ব্যবহারকারীর কাছ থেকে সংগ্রহ করা হবে এবং PollQuestion এবং PollOption টেবিলগুলিতে .োকানো হবে। দ্বিতীয় ব্যবহারকারী যিনি প্রশ্নের উত্তর দেন উত্তরের একটি তালিকা (সত্য / মিথ্যা = 2 টির তালিকা) থেকে নির্বাচন করবেন। তারা তৈরি করা প্রশ্নগুলি ট্র্যাক করার জন্য উপযুক্ত হলে নির্মাতার ব্যবহারকারীর আইডি অন্তর্ভুক্ত করতে আপনি PollQuestion টেবিলটি প্রসারিত করতে পারেন।
আপনার ইউআইতে ব্যবহারকারী উত্তরটি নির্বাচন করে তা PollOptionId মানের সাথে বেঁধে দেওয়া যেতে পারে। PollQuestionId একসাথে আপনি যাচাই করতে পারেন যে উত্তরটি প্রশ্নের জন্য দ্রুত বৈধ। তাদের প্রতিক্রিয়া বৈধ হলে পোলআরস্পোন সারণিতে প্রবেশ করা হবে।
আপনার ব্যবহারের কেসের বিশদটির উপর নির্ভর করে বেশ কয়েকটি সম্ভাব্য সমস্যা রয়েছে। যদি প্রথম ব্যবহারকারী গণিত প্রশ্ন ব্যবহার করতে চান এবং আপনি একাধিক সম্ভাব্য উত্তর দিতে চান না। আর একটি পরিস্থিতি হ'ল যদি প্রাথমিক ব্যবহারকারী প্রদত্ত বিকল্পগুলি দ্বিতীয় ব্যবহারকারী চয়ন করতে পারেন। এই অতিরিক্ত ব্যবহারের ক্ষেত্রে সমর্থন করার জন্য আপনি এই স্কিমাটি পুনরায় কাজ করতে পারেন।
CREATE TABLE [dbo].[PollResponse]
(
[PollResponseId] INT NOT NULL PRIMARY KEY IDENTITY,
[PollOptionId] INT NULL,
[PollQuestionId] INT NOT NULL,
[UserId] INT NOT NULL,
[AlternateResponse] NVARCHAR(50) NULL, -- Some reasonable character limit
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
[Archived] DATETIME2(2) NULL, -- Remove this if you don't need to hide answers
CONSTRAINT [FK_PollResponse_PollOptionId_to_PollOption_PollOptionId] FOREIGN KEY ([PollOptionId]) REFERENCES [dbo].[PollOption]([PollOptionId]),
CONSTRAINT [FK_PollResponse_UserId_to_User_UserId] FOREIGN KEY ([UserId]) REFERENCES [dbo].[User]([UserId])
)
আপনার প্রয়োজনের উপর নির্ভর করে কোনও বিকল্প সরবরাহ করা হয়েছে বা বিকল্প প্রতিক্রিয়া দেওয়া হয়েছে তা নিশ্চিত করার জন্য আমি সম্ভবত একটি চেক বাধাও যুক্ত করব।
সম্পাদনা করুন: অল্টারনেটরেসপনসের জন্য ডেটাটাইপ যোগাযোগ করা
একটি নিখুঁত বিশ্বে আমরা জেনেরিক্সের ধারণাটি AlternateReponse এর জন্য বিভিন্ন ডেটাটাইপগুলি পরিচালনা করতে পারি। হায়রে আমরা নিখুঁত বিশ্বে বাস করি না। আমি যে সর্বোত্তম সমঝোতার কথা ভাবতে পারি তা হ'ল PollQuestion টেবিলের মধ্যে AlternateResponse ডেটাটাইপটি কী হওয়া উচিত তা নির্দিষ্ট করা এবং একটি বিকল্প হিসাবে ডেটাবেজে AlternateReponse সংরক্ষণ করা। নীচে আপডেট হওয়া প্রশ্ন স্কিমা এবং নতুন ডেটাটাইপ টেবিলটি রয়েছে:
CREATE TABLE [dbo].[PollQuestion]
(
[PollQuestionId] INT NOT NULL PRIMARY KEY IDENTITY,
[QuestionText] NVARCHAR(150) NOT NULL, -- Some reasonable character limit
[QuestionDataTypeId] INT NOT NULL,
[Created] DATETIME2(2) NOT NULL DEFAULT SYSUTCDATETIME(),
[Archived] DATETIME2(2) NULL, -- Remove this if you don't need to hide questions
-- Insert FK here for QuestionDataTypeId
)
CREATE TABLE [dbo].[QuestionDataType]
(
[QuestionDataTypeId] INT NOT NULL PRIMARY KEY IDENTITY,
[Description] NVARCHAR(50) NOT NULL, -- Some reasonable character limit
)
এই প্রশ্নডেটাটাইপ টেবিল থেকে নির্বাচন করে আপনি প্রশ্ন স্রষ্টাদের জন্য সমস্ত উপলভ্য ডেটা তালিকাভুক্ত করতে পারেন। আপনার UI বিকল্প প্রতিক্রিয়া ক্ষেত্রের জন্য সঠিক ফর্ম্যাট নির্বাচন করতে প্রশ্নডেটাটাইপআইডি উল্লেখ করতে পারে। আপনি টিএসকিউএল ডেটা প্রকারের মধ্যে সীমাবদ্ধ নন, তাই "ফোন নম্বর" কোনও ডেটা টাইপ হতে পারে এবং আপনি ইউআইতে উপযুক্ত বিন্যাস / মাস্কিং পাবেন king এছাড়াও প্রয়োজনে বিকল্প উত্তরগুলিতে যে কোনও প্রকারের প্রসেসিং (নির্বাচন করুন, বৈধকরণ ইত্যাদি) করার জন্য আপনি কোনও সাধারণ কেস স্টেটমেন্টের মাধ্যমে উপযুক্ত উপায়ে আপনার ডেটা কাস্ট করতে পারেন।