Mysql
 sql >> база данни >  >> RDS >> Mysql

Спестяване на височината и теглото на потребителя

Има няколко начина... единият е просто да имате две числови колони, една за височина, една за тегло, след което да направите преобразуванията (ако е необходимо) по време на показване. Друго е да създадете таблица с "височина" и таблица с "тегло", всяка с първичен ключ, който е свързан от друга таблица. След това можете да съхранявате както английски, така и метрични стойности в тези таблици (заедно с всяка друга мета информация, която искате):

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 изключително лесно – просто SELECT english FROM height ORDER BY inches , например.
  • Това прави логиката ви за различни измерения – включително нечислови (като астрологични знаци) очевидно сходна – нямате специален код на случай навсякъде за всеки тип данни.
  • Много добре се мащабира
  • Улеснява добавянето на нови представяния на вашите данни (например, за добавяне на колоната „ръце“ към таблицата с височина)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо моят PDO не работи?

  2. Codeigniter db->update() VS MySQL родния UPDATE Засегнати редове:0

  3. Намиране на прекъсване на ред и връщане на карета (\r\n) в MySQL

  4. Намерете низ за връзка за свързване към MySQL Server 5.1.50 с помощта на OleDbConnection

  5. Как да повторя обекта Yii CActiveDataProvider?