Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menghemat tinggi dan berat pengguna

Ada beberapa cara... salah satunya adalah dengan hanya memiliki dua kolom numerik, satu untuk tinggi, satu untuk berat, lalu lakukan konversi (jika perlu) pada waktu tampilan. Cara lainnya adalah membuat tabel "tinggi" dan tabel "berat", masing-masing dengan kunci utama yang ditautkan dari tabel lain. Kemudian Anda dapat menyimpan nilai bahasa Inggris dan metrik dalam tabel ini (bersama dengan info meta lain yang Anda inginkan):

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),
    ....

Anda mendapatkan idenya...

Kemudian tabel pengguna Anda akan mereferensikan tinggi dan berat tabel--dan mungkin banyak tabel dimensi lainnya--tanda astrologi, status perkawinan, dll.

CREATE TABLE users (
    uid         SERIAL PRIMARY KEY,
    height      INT REFERENCES height(id),
    weight      INT references weight(id),
    sign        INT references sign(id),
    ...
);

Kemudian untuk melakukan pencarian pengguna antara 4 dan 5 kaki:

SELECT *
FROM users
JOIN height ON users.height = height.id
WHERE height.inches >= 48 AND height.inches <= 60;

Beberapa keuntungan dari metode ini:

  • Anda tidak perlu menduplikasi "usaha" (seolah-olah itu adalah pekerjaan nyata) untuk melakukan konversi pada tampilan--cukup pilih format yang ingin Anda tampilkan!
  • Itu membuat mengisi kotak drop-down dalam HTML pilih super mudah--cukup SELECT english FROM height ORDER BY inches , misalnya.
  • Itu membuat logika Anda untuk berbagai dimensi--termasuk yang non-numerik (seperti tanda astrologi) jelas serupa--Anda tidak memiliki kode kasus khusus di semua tempat untuk setiap jenis data.
  • Skalanya sangat bagus
  • Memudahkan untuk menambahkan representasi baru dari data Anda (misalnya, untuk menambahkan kolom 'tangan' ke tabel ketinggian)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Format kode MySQL di dalam string PHP

  2. Apa perbedaan antara menggunakan dan bergabung dalam tabel di MySQL?

  3. mysql pilih dalam daftar dengan regexp/substring

  4. Bagaimana menghubungkan ke MySQL menggunakan Perl

  5. Mengapa kita harus memiliki kolom ID di tabel pengguna?