Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

5-स्टार रेटिंग के लिए कौन सा डेटा टाइप उपयोग करना चाहिए?

ENUM डेटा टाइप से 5-स्टार रेटिंग लागू करें

निश्चित विकल्पों (1-5 स्टार) वाले रेटिंग कॉलम के लिए ENUM डेटा टाइप आदर्श है। यह स्टोरेज बचाता है, डेटा अखंडता सुनिश्चित करता है, और क्वेरी सरल बनाता है।

टेबल बनाना

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    UserRating ENUM('1', '2', '3', '4', '5')
);

डेटा डालना

mysql> INSERT INTO DemoTable(UserRating) VALUES('5'), ('3'), ('1'), ('3'), ('4');

डेटा देखना

mysql> SELECT * FROM DemoTable;

+----+------------+
| Id | UserRating |
+----+------------+
| 1  | 5          |
| 2  | 3          |
| 3  | 1          |
| 4  | 3          |
| 5  | 4          |
+----+------------+

ENUM के लाभ

लाभविवरण
डेटा अखंडताकेवल सूचीबद्ध मान स्वीकार करता है
कॉम्पैक्ट स्टोरेज1-2 बाइट्स (मानों की संख्या पर निर्भर)
तेज़ तुलनाआंतरिक रूप से इंटीजर के रूप में संग्रहीत
स्वचालित सॉर्टपरिभाषा क्रम में सॉर्ट होता है

क्वेरी उदाहरण

-- औसत रेटिंग (CAST आवश्यक)
SELECT AVG(CAST(UserRating AS UNSIGNED)) FROM DemoTable;

-- रेटिंग वितरण
SELECT UserRating, COUNT(*) FROM DemoTable GROUP BY UserRating;

-- 4+ स्टार रेटिंग
SELECT * FROM DemoTable WHERE UserRating IN ('4', '5');

वैकल्पिक: TINYINT

UserRating TINYINT UNSIGNED CHECK (UserRating BETWEEN 1 AND 5)

पक्ष: गणना आसान, मानक SQL
विपक्ष: डेटाबेस स्तर पर मान प्रतिबंध नहीं (CHECK कंस्ट्रेंट MySQL 8.0.16+ में लागू)

सर्वोत्तम अभ्यास

  • सरल रेटिंग के लिए ENUM ठीक है
  • यदि रेटिंग स्केल बदल सकता है, तो TINYINT + CHECK कंस्ट्रेंट या लुकअप टेबल बेहतर
  • औसत गणना के लिए CAST आवश्यक है
  1. - MySQL में कॉलम मानों के लिए ENUM कैसे सेट करें?

    ENUM कॉलम के साथ टेबल बनाना टेबल बनाते समय ENUM प्रकार निर्दिष्ट करें: ); रिकॉर्ड डालना INSERT INTO DemoTable2019 VALUES (45, Second); सभी रिकॉर्ड देखना SELECT * FROM DemoTable2019; +--------------+---------------+ | StudentMarks | StudentStatus | +--------------+---------------+ | 96

  1. - MySQL में एक क्वेरी में सभी कॉलम नामों के लिए उपनाम (alias) कैसे सेट करें

    सिंटैक्स SELECT yourColumnName1 AS aliasName1, yourColumnName2 AS aliasName2 FROM yourTableName AS tableAlias; उदाहरण टेबल बनाएं: ); डेटा डालें: INSERT INTO DemoTable2014 VALUES (Chris, Brown); उपनाम के साथ क्वेरी FROM DemoTable2014 tbl; परिणाम +------------------+-----------------+ | Studen

  1. - MySQL में स्ट्रिंग और नंबर के मिश्रण के लिए कौन सा डेटा टाइप उपयोग करें?

    VARCHAR() डेटा टाइप स्ट्रिंग और नंबर दोनों स्टोर करने के लिए VARCHAR() सबसे उपयुक्त है: CREATE TABLE yourTableName ( yourColumnName1 VARCHAR(40) ); उदाहरण insert into demo28(user_id) values(John_123), (David_44), (Mike99), (Sam101); परिणाम +----+----------+ | id | user_id | +----+----------+ |