कई तरीके हैं... एक में केवल दो संख्यात्मक कॉलम हों, एक ऊंचाई के लिए, एक वजन के लिए, फिर प्रदर्शन समय पर रूपांतरण (यदि आवश्यक हो) करें। दूसरा एक "ऊंचाई" तालिका और "वजन" तालिका बनाना है, प्रत्येक में प्राथमिक कुंजी है जो किसी अन्य तालिका से जुड़ी हुई है। फिर आप इन तालिकाओं में अंग्रेजी और मीट्रिक दोनों मान संग्रहीत कर सकते हैं (किसी भी अन्य मेटा जानकारी के साथ जो आप चाहते हैं):
CREATE TABLE height (
id SERIAL PRIMARY KEY,
english VARCHAR,
inches INT,
cm INT,
hands INT // As in, the height of a horse
);
INSERT INTO height VALUES
(1,'4 feet', 48, 122, 12),
(2,'4 feet, 1 inch', 49, 124, 12),
(3,'4 feet, 2 inches', 50, 127, 12),
(3,'4 feet, 3 inches', 51, 130, 12),
....
आपको अंदाजा हो गया...
तब आपकी उपयोगकर्ता तालिका ऊंचाई . का संदर्भ देगी और वजन तालिकाएँ- और संभवतः कई अन्य आयाम तालिकाएँ--ज्योतिषीय संकेत, वैवाहिक स्थिति, आदि।
CREATE TABLE users (
uid SERIAL PRIMARY KEY,
height INT REFERENCES height(id),
weight INT references weight(id),
sign INT references sign(id),
...
);
फिर 4 से 5 फीट के बीच के उपयोगकर्ताओं की खोज करने के लिए:
SELECT *
FROM users
JOIN height ON users.height = height.id
WHERE height.inches >= 48 AND height.inches <= 60;
इस विधि के कई फायदे:
- प्रदर्शन पर रूपांतरण करने के लिए आपको "प्रयास" (जैसे कि यह कोई वास्तविक कार्य था) की नकल करने की आवश्यकता नहीं है - बस उस प्रारूप का चयन करें जिसे आप प्रदर्शित करना चाहते हैं!
- यह HTML चयन में ड्रॉप-डाउन बॉक्स को पॉप्युलेट करना सुपर आसान बनाता है--बस
SELECT english FROM height ORDER BY inches
, उदाहरण के लिए। - यह आपके तर्क को विभिन्न आयामों के लिए बनाता है--जिसमें गैर-संख्यात्मक (जैसे ज्योतिषीय संकेत) स्पष्ट रूप से समान हैं--आपके पास प्रत्येक डेटा प्रकार के लिए हर जगह विशेष केस कोड नहीं है।
- यह वास्तव में अच्छी तरह से मापता है
- आपके डेटा के नए निरूपण को जोड़ना आसान बनाता है (उदाहरण के लिए, ऊंचाई तालिका में 'हाथ' कॉलम जोड़ना)