Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tiết kiệm chiều cao và cân nặng của người dùng

Có một số cách ... một là chỉ có hai cột số, một cho chiều cao, một cho cân nặng, sau đó thực hiện chuyển đổi (nếu cần) tại thời điểm hiển thị. Cách khác là tạo bảng "chiều cao" và bảng "trọng lượng", mỗi bảng có một khóa chính được liên kết từ bảng khác. Sau đó, bạn có thể lưu trữ cả giá trị tiếng Anh và số liệu trong các bảng này (cùng với bất kỳ thông tin meta nào khác mà bạn muốn):

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

Bạn có được ý tưởng ...

Sau đó, bảng người dùng của bạn sẽ tham chiếu đến chiều cao trọng lượng bảng - và có thể nhiều bảng kích thước khác - dấu hiệu chiêm tinh, tình trạng hôn nhân, v.v.

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

Sau đó, để thực hiện tìm kiếm người dùng từ 4 đến 5 feet:

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

Một số ưu điểm của phương pháp này:

  • Bạn không cần phải lặp lại "nỗ lực" (như thể đó là bất kỳ công việc thực sự nào) để thực hiện chuyển đổi trên màn hình - chỉ cần chọn định dạng bạn muốn hiển thị!
  • Nó làm cho việc điền các hộp thả xuống trong HTML select trở nên cực kỳ dễ dàng - chỉ cần SELECT english FROM height ORDER BY inches chẳng hạn.
  • Nó làm cho logic của bạn đối với các thứ nguyên khác nhau - bao gồm cả các thứ nguyên không phải số (như các dấu hiệu chiêm tinh) rõ ràng là tương tự - bạn không có mã viết hoa đặc biệt cho mỗi loại dữ liệu.
  • Quy mô rất tốt
  • Nó giúp bạn dễ dàng thêm các đại diện mới cho dữ liệu của mình (ví dụ:thêm cột 'tay' vào bảng chiều cao)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Lỗi kết nối SSL MySQL C # khi cố gắng sử dụng conn.Open ()

  2. Làm cách nào để tìm tất cả các bảng có khóa ngoại tham chiếu đến table.column cụ thể và có giá trị cho các khóa ngoại đó?

  3. Cách sử dụng các chỉ mục để cải thiện hiệu suất truy vấn MySQL

  4. jQuery Validate Remote - Kiểm tra xem email đã tồn tại chưa

  5. ClassNotFoundException khi kết nối với Mysql bằng JDBC