ডাটাবেসে যৌনতা (লিঙ্গ) সংরক্ষণ করা


130

আমি ব্যবহারকারীর লিঙ্গকে যতটা সম্ভব কম (আকার / পারফরম্যান্স) ব্যয় করে একটি ডাটাবেসে সংরক্ষণ করতে চাই।

এখন পর্যন্ত 3 টি পরিস্থিতি মাথায় আসে

  1. আন্ত - কোডে এনামের সাথে একত্রিত (1 = পুরুষ, 2 = মহিলা, 3 = ...)
  2. গৃহস্থালির কাজ (1) - দোকান মি , বা অন্য একক অক্ষর আইডেন্টিফায়ার
  3. বিট (বুলিয়ান) - এই বিকল্পের জন্য কোনও উপযুক্ত ক্ষেত্রের নাম আছে?

কারণ আমি জিজ্ঞাসা এই কারণ উত্তর যা উল্লেখ করেছেন যে অক্ষর হয় ছোট চেয়ে Booleans

আমি নির্মল উচিত যে আমি মাইক্রোসফট এসকিউএল 2008, যা ব্যবহার করছি শুরু করে আসলে বিট ডাটাটাইপ আছে।


1
এফডব্লিউআইডাব্লু, আপনি যে রেফারেন্সটি উল্লেখ করেছেন সেগুলি বোঝায় যে কীভাবে নেট এই ধরণের মেমোরিতে প্রতিনিধিত্ব করে। এসকিউএল সার্ভার তাদের প্রতিনিধিত্ব করে কীভাবে এটির কোনও সম্পর্ক নেই। বিট <= চর msdn.microsoft.com/en-us/library/ms177603.aspx
ম্যাট

1
আপনি কীসের জন্য লিঙ্গ ক্ষেত্র ব্যবহার করছেন? এটি কি কেবল একটি স্ট্রিং হতে পারে, যাতে লোকেরা তাদের পছন্দ মতো প্রবেশ করতে পারে? এই প্রশ্নের সম্ভাব্য সমস্ত প্রতিক্রিয়াগুলি গণনা করার চেষ্টাটি জটিল হতে চলেছে।
shogged

@ দ্য প্যাসেঞ্জার: আমি মনে করি স্বাভাবিক বিকল্পটি মূলত মাই / এফ / অন্যান্য, তাই হ্যাঁ আপনার প্রস্তাব মতো তিনটি ঠিক আছে। আপনি "অন্যকে" "অনির্ধারিত" থেকে আলাদা করতে চাইতে পারেন (যেমন "আমি বলছি না", এবং / অথবা "আমরা ব্যবহারকারীকে এখনও জিজ্ঞাসা করি নি")। আমি লিঙ্গ-তরল লোকদের সম্পর্কে সচেতন নই যে তারা প্রতিদিন যে স্লাইডারটি সেট করতে পারে তার সাথে ভাসমান-পয়েন্ট মান চায়; আমার অনুমান যে তাদের বেশিরভাগ (এবং অন্যান্য প্রচলিত-অপ্রচলিত লিঙ্গযুক্ত লোকেরা) প্রায় কোনও ওয়েবসাইটে কেবল "অন্যান্য" বা "অনির্দিষ্ট" বাছাই করে খুশি হবেন। তবে না, আমি মনে করি না "লিঙ্গ" এর পরিবর্তে "সেক্স" জিজ্ঞাসা করা ভাল ধারণা হবে।
পিটার কর্ডেস

1
@ পিটারকর্ডস আমি "লিঙ্গ-তরল" সম্পর্কে ভালভাবে জানি না, আমার গ্রামে আপনার একজন পুরুষ, একজন মহিলা ... বা গরু a যদি জেনারটি এখন তরল হয়, কম্পিউটারের শব্দ হিসাবে মানের একটি স্কেল তৈরি করা জিজ্ঞাসা করতে একটু বেশিই মনে হয়। আমার দেশে আমরা বরং যৌনতার জন্য জিজ্ঞাসা করি, এটি কম জটিল। ওহ, বিশ্বাস করি না আমরা এখন পর্যন্ত প্রস্তর যুগে আছি! আমরা ইতিমধ্যে Godশ্বরকে আবিষ্কার করেছি এবং আমরা গত colonপনিবেশিকরণের পর থেকে বেশিরভাগ অংশের একেশ্বরবাদী।
মনিকার জন্য

2
@ পিটারকর্ডস: বর্তমান রাজনৈতিক জলবায়ুতে এ জাতীয় জিনিস দাবি করা মানুষকে অন্যের উপর কর্তৃত্ব প্রদানের সুযোগ দেয়, আপনি যেমন কোনও ফ্লোট-ভ্যালু স্লাইডার অন্তর্ভুক্ত করবেন, তখনই কেউ বহুমাত্রিক দাবিতে এগিয়ে আসবে। "কেবল একটি স্লাইডার? আপনি কি পাথরের যুগে?"
বনাম

উত্তর:


82

আমি কলামটিকে "লিঙ্গ" বলি।

Data Type   Bytes Taken          Number/Range of Values
------------------------------------------------
TinyINT     1                    255 (zero to 255)
INT         4            -       2,147,483,648 to 2,147,483,647
BIT         1 (2 if 9+ columns)  2 (0 and 1)
CHAR(1)     1                    26 if case insensitive, 52 otherwise

বিআইটি ডাটা টাইপ ছিটকে যাবে না কারণ এটি শুধুমাত্র দুটি সম্ভাব্য লিঙ্গ যা অপর্যাপ্ত সমর্থন করে। যদিও আইএনটি দুটিরও বেশি বিকল্পের সমর্থন করে, এটিতে 4 বাইট লাগে - একটি ছোট / আরও সংকীর্ণ ডেটা টাইপের সাথে পারফরম্যান্স আরও ভাল হবে।

CHAR(1)টিনিআইএনটি - তে প্রান্ত রয়েছে - উভয়ই একই সংখ্যক বাইট নিয়ে থাকে তবে CHAR একটি আরও সংকীর্ণ মানের মান সরবরাহ করে। ব্যবহার CHAR(1), "মি", "চ", ইত্যাদি প্রাকৃতিক কীগুলি ব্যবহার করে বনাম সাংখ্যিক ডেটা যা ভাড়াটে / কৃত্রিম কী হিসেবে উল্লেখ করা হয় ব্যবহার করতে হবে। CHAR(1)যে কোনও ডাটাবেসে সমর্থিত, যদি পোর্ট করার দরকার পড়ে।

উপসংহার

আমি বিকল্প 2: CHAR (1) ব্যবহার করব।

অভিযোজ্য বস্তু

লিঙ্গ কলামে একটি সূচক সম্ভবত হবে না কারণ নিম্ন কার্ডিনালিটির কলামে একটি সূচকের কোনও মূল্য নেই। অর্থ, সূচকের কোনও মান সরবরাহ করার জন্য মানগুলিতে পর্যাপ্ত বৈচিত্র নেই।


পারফরম্যান্সের কোনও রেফারেন্স? আমি জানি এটি প্রায় মাইক্রো-অপ্টিমাইজিং যা আমার করা উচিত নয়, তবে এটি আমার কৌতূহল মনের খাবার।
মার্কো

ধন্যবাদ @ ওএমজি পনিস, পারফরম্যান্স সম্পর্কে কী? এই ক্ষেত্রে একটি গৃহস্থালিটি কি কিছুটা ব্যয়বহুল হতে হবে?
মার্কো

4
@ মারকো: যেমনটি আমি আগে বলেছি, তারা সমান। তবে কোনও সূচক সম্ভবত সহায়তা করবে না কারণ নিম্ন কার্ডিনালিটির কলামে একটি সূচকের কোনও মূল্য নেই। অর্থ, সূচকের কোনও মান সরবরাহ করার জন্য মানগুলিতে পর্যাপ্ত বৈচিত্র নেই।
ওএমজি পনিজ

1
কত ভাল কর্মক্ষমতা হয় সত্যিই 64-বিট প্ল্যাটফর্মের উপর ব্যবহার করা, বলে, একটি 4 বাইট ডাটা টাইপ যাচ্ছ? কেবল বলছি ... ;-)
ক্রেগ

1
আমি কিছুটা আটকে থাকব, কারণ এখানে কেবল দুটি লিঙ্গ রয়েছে। তবে ওপির প্রাথমিক প্রশ্নটি রয়ে গেছে: কলামের নামটি কী হবে? "ইসমালে" বা "ইসফালে" কিছুটা অদ্ভুত ...
ফিলিপ

180

এর জন্য ইতিমধ্যে একটি আইএসও স্ট্যান্ডার্ড রয়েছে; আপনার নিজের স্কিম উদ্ভাবনের দরকার নেই:

http://en.wikipedia.org/wiki/ISO_5218

মান অনুসারে, কলামটিকে "লিঙ্গ" বলা উচিত এবং 'নিকটতম' ডেটা টাইপ যথাযথভাবে CHECK সীমাবদ্ধতা বা অনুসন্ধান সারণী সহ ক্ষুদ্রতম হবে।


4
'প্রযোজ্য নয়' এর জন্য কেন এটি 9 এ চলে যায়? 3-8 সম্পর্কে কি?
কেনমোর

4
এটি যৌনতার জন্য। ওপি বিশেষত লিঙ্গ চেয়েছিল। লিঙ্গ এবং লিঙ্গ সম্ভবত বিভিন্ন ভিন্ন মান থাকতে পারে যা ক্যাপচার করার প্রয়োজন হতে পারে।
নীলনবী

2
@ ইন্ডিগচাইল্ড ওপি প্রশ্ন শিরোনামে উভয় শব্দের ব্যবহার করে এবং এগুলিকে কমপক্ষে তার ব্যবহারের ক্ষেত্রে (ওয়াইএমএমভি) জন্য এগুলিকে সমতুল্য বলে বিবেচনা করে । আমার বক্তব্যটি হ'ল এই ক্ষেত্রে একটি আইএসও স্ট্যান্ডার্ড বিদ্যমান এবং যখন কোনও অফিসিয়াল স্ট্যান্ডার্ড উপস্থিত থাকে তখন আপনার নিজের স্কিম তৈরির ক্ষেত্রে কখনই সময় নষ্ট করা উচিত নয়। অবশ্যই যদি না সেই মান আপনার নির্দিষ্ট কেসটিকে আবরণ করে না, যা সম্পূর্ণ সম্ভব।
পন্ডলাইফ

1
এটি গ্রহণযোগ্য উত্তর হওয়া উচিত। এটি অপ্টিমাইজেশনের পরিবর্তে ডেটা অখণ্ডতার (যা স্থায়ী is
পল ক্যান্ট্রেল

1
এটি অবশ্যই উত্তর হওয়া উচিত। @ পিটারকর্ডস এই আইএসও লিঙ্গ (জৈবিক সেক্স) এর জন্য ব্যবহৃত হয় জেন্ডার নয় (আপনি কী হিসাবে চিহ্নিত করেন) - ব্যাখ্যা এখানে । আমি ধারণা করি যে জেন্ডারটি সংরক্ষণ করতে ইচ্ছুক হওয়ার ক্ষেত্রে (যা আপনি জানেন যে কোনটি ব্যবহার করে আপনি তা ব্যবহার করতে পারবেন না), যতক্ষণ না আপনি 255 জেন্ডার থেকে কম সঞ্চয় করতে চান ততক্ষণ পর্যন্ত একটি ছোট্ট ইনট যথেষ্ট ভাল (ফে 0 বলে = অজানা / ঘোষণা করতে ইচ্ছুক নয়, 1 = পুরুষ, 2 = মহিলা, 3 = পুরুষ হিসাবে নারী পরিচয় দেওয়া ইত্যাদি)
সলিডটারে

43

মেডিসিনে চারটি লিঙ্গ রয়েছে: পুরুষ, মহিলা, অনির্দিষ্ট এবং অজানা। আপনার চারটির প্রয়োজন নাও হতে পারে তবে আপনার অবশ্যই 1, 2 এবং 4 প্রয়োজন this এই ডেটাটাইপের জন্য একটি ডিফল্ট মান থাকা উপযুক্ত নয়। এমনকি এটি 'বুলিয়ান' 'এর' এবং 'নন' রাজ্য হিসাবে বিবেচনা করা কম।


1
@EJP, আকর্ষণীয় আপনার এটার কোন রেফারেন্স আছে?
মার্কো

11
আমার বাবা, এমডি বিএস এফআরএসিপি।
লার্নের মার্কুইস

এই তথ্যের উপর ভিত্তি করে, আমি TinyIntএকটি এনাম (হুগো প্রস্তাবিত) এর সাথে একত্রিত হয়ে কমপক্ষে 1, 2 এবং 3 (অন্যান্য) সাথে যেতে চাই।
IAbstract

1
@ জেজেপি, যদিও আপনার উত্তর সম্ভবত সঠিক, এটি আমার কী ডেটাটাইপ ব্যবহার করা উচিত তা বলে না, বরং - (প্রযুক্তিগতভাবে) সঠিক লিঙ্গগুলি কী।
মার্কো

17
ইউ কে ন্যাশনাল হেলথ সার্ভিস (এনএইচএস) ডেটা অভিধানে চারটি মান নির্ধারণ করে: 0 = Not Known, 1 = Male, 2 = Female, 9 = Not Specified, যা আইএসও 5218 মানকে মিরর করে । নোট দুটি ধরণের রয়েছে : নিবন্ধকরণে লিঙ্গ (সাধারণত শীঘ্রই জন্মের পরে) এবং বর্তমান।
onedaywhen

3

একটি Int(বা TinyInt) Enumক্ষেত্রের সাথে সংযুক্ত করা হবে আমার পদ্ধতি ology

প্রথমত, যদি আপনার bitএকটি ডাটাবেসে একক ক্ষেত্র থাকে, সারিটি এখনও একটি সম্পূর্ণ বাইট ব্যবহার করবে, তাই স্পেস সাশ্রয় হিসাবে, যদি আপনার একাধিক bitক্ষেত্র থাকে তবে এটি কেবল অর্থ প্রদান করে।

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

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


2

আমি চর 'এফ', 'এম' এবং 'ইউ' ব্যবহার করি কারণ আমি লিঙ্গটিকে নাম, ভয়েস এবং কথোপকথন থেকে প্রাধান্য দিয়েছি এবং কখনও কখনও লিঙ্গটি জানি না। চূড়ান্ত সংকল্প তাদের মতামত।

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


বিষয় নয়। এটি কোনও উত্তর নয়।
hod

1

অপশন 3 আপনার সেরা বাজি, তবে সমস্ত ডিবি ইঞ্জিনের "বিট" টাইপ থাকে না। আপনার যদি কিছুটা না থাকে তবে টিনিনআইএনটি আপনার সেরা বাজি হয়ে উঠবে।


-5
CREATE TABLE Admission (
    Rno INT PRIMARY KEY AUTO_INCREMENT,
    Name VARCHAR(25) NOT NULL,
    Gender ENUM('M','F'),
    Boolean_Valu boolean,
    Dob Date,
    Fees numeric(7,2) NOT NULL
);




insert into Admission (Name,Gender,Boolean_Valu,Dob,Fees)values('Raj','M',true,'1990-07-12',50000);
insert into Admission (Name,Gender,Boolean_Valu,Dob,Fees)values('Rani','F',false,'1994-05-10',15000);
select * from admission;

লিঙ্ক বিবরণ এখানে প্রবেশ করুন


-5

আমি বিকল্প 3 দিয়ে যাব তবে একটির পরিবর্তে একাধিক নন বিলেট বিট কলাম। ইসমালে (1 = হ্যাঁ / 0 = না) ইসফ্যামেল (1 = হ্যাঁ / 0 = না)

যদি পুনরুদ্ধার করা হয়: ইসউনজেন্ডার জেন্ডার (1 = হ্যাঁ / 0 = না) এবং আরও ...

এটি সংজ্ঞাগুলির সহজ পাঠ, সহজ এক্সটেনসিবিলিটি, সহজ প্রোগ্রামযোগ্যতা, ডোমেনের বাইরে মান ব্যবহারের কোনও সম্ভাবনা এবং মানগুলি লক করে রাখতে দ্বিতীয় সারণী + এফকে বা চেক সীমাবদ্ধতার প্রয়োজন নেই requirement

সম্পাদনা: সংশোধন, সেট পতাকাগুলি বৈধ কিনা তা নিশ্চিত করতে আপনার কমপক্ষে একটি বাধা দরকার need


শুনে আমার ভালো লাগবে কেন আমার উত্তরটি নিম্নমুখী হয়?
হ্যানস লিন্ডগ্রেন

সীমাবদ্ধতা ব্যতীত, সমস্ত কলাম 1 বা তার সমস্ত 0 হতে বাধা দেয় না, যা বোকামিযুক্ত হবে, তাই আপনার স্কিম আপনার দাবির একটিও পূরণ করে না।
জে কোমিনেক

হ্যাঁ, আপনি ঠিক বলেছেন যে সঠিক সংখ্যার পতাকাটি 'পরীক্ষা করা হয়েছে' তা পরীক্ষা করার জন্য আপনার একটি বাধা দরকার। আমি মনে করি না যে সমস্ত ডাউন ভোট সেই বাদ পড়ার জন্য ...
হ্যানস লিন্ডগ্রেন

এটি একটি ভারী পরিদর্শন করা প্রশ্ন (অন্যান্য উত্তরের কয়েকটি জন্য লক্ষ্য দেখুন!), এবং আপনি কয়েক বছর পরে এসেছিলেন এবং একটি উত্তর যুক্ত করেছেন যা এক-হট এনকোডিং, একটি বিস্তৃতভাবে শেখানো কৌশল, যা এমনকি নেই কয়েকটি কংক্রিট বৈশিষ্ট্য যা আপনি এতে উল্লেখ করেছেন। আমি আপনাকে 0 এর নিচে ভোট দেওয়া ঠিক বলে মনে করি না, তবে আমি এটির দ্বারা আশ্চর্য হয়েছি না।
জে কমিনেক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.