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

Bagaimana cara mengelola unit pengukuran dalam aplikasi web PHP?

Penjelasan masalahnya agak kabur dan saya tidak yakin ruang lingkup aplikasi, tetapi dari sudut pandang arsitektur sistem, jika Anda menggunakan kerangka kerja MVC, Anda mungkin ingin menyimpan semua unit basis data Anda sama dan buat UnitConversion Controller. Controller ini akan mengambil unit standar sebagai input dan output nilai berdasarkan unit yang diinginkan. Sebuah bendera akan disimpan pada catatan pengguna/klien Anda di database untuk memberi tahu Anda Unit mana yang mereka sukai sehingga Anda tidak kehilangan informasi ini di antara login. Masukkan nilai dalam format satuan standar (misalnya, meter) dan bendera satuan yang diinginkan (misalnya, 'FEET') ke Pengontrol Anda dan biarkan ia melakukan konversi dan mengembalikan nilai.

Saya tidak akan mencoba untuk menyimpan tipe unit yang berbeda dalam database karena Anda kemungkinan besar akan menulis semua jenis kode yang mencoba mengelola pengecualian dan pemeliharaan (memperbarui semua nilai ketika klien mengubah unit mereka, misalnya). Simpan unit standar dalam database dan lakukan konversi melalui kelas php yang mirip dengan cara Zend Framework yang disebutkan oleh Robert. Googling "konversi unit php" akan memunculkan beberapa kelas yang mungkin sesuai dengan kebutuhan Anda.

DI UPDATE:

Masih tidak yakin saya melihat seluruh masalah, tetapi saya akan mencoba menjawab sebaik yang saya mengerti. Seperti sebelumnya yang terbaik adalah menyimpan 1 unit sistem dalam database, katakanlah, metrik. Measurement_type di user_pref memberi tahu apa yang diinginkan klien, katakan 'IMPERIAL'. Bergantung pada seberapa tersebar database Anda, Anda dapat memilih salah satu dari dua solusi untuk menyimpan nilai:

  1. Untuk item dalam DB Anda, Anda mungkin memiliki properti (kolom) yang berbeda, seperti berat, tinggi, volume, dll.

  2. Anda mungkin memiliki tabel Item yang menyimpan item. Kemudian Anda memiliki tabel Properti yang menyimpan properti. Tabel Properti memiliki 4 kolom:property_id(kunci utama), property(HEIGHT, WIDTH, LENGTH, WEIGHT), property_type(SIZE,MASS,VOLUME,AWESOMENESS), dan value. Kemudian Anda memiliki tabel Property_Lookup yang memiliki 2 kolom:item_id, property_id dan gabungan antara 3 tabel ini akan memberi Anda semua nilai dan tipe unit dari setiap properti milik Item. Dalam skema ini saya masih akan menyimpan semua entri di kolom 'nilai' dalam satu sistem unit (dalam contoh metrik ini). Lihat tautan ini untuk informasi lebih lanjut tentang hubungan banyak-ke-banyak (http://www.tomjewett.com/dbdesign/dbdesign.php?page=manymany.php ).

Model Anda akan mengambil data dan merangkum properti ini dalam Unit { system(METRIC*,IMPERIAL,BOTH); jenis (UKURAN, MASSA, VOLUME); nilai } Mini-Model. Berikan itu ke Controller Anda. Saat merender Tampilan Anda akan mengharapkan nilai unit berdasarkan apa yang diinginkan klien, jadi ketika Pengontrol Anda mengumpulkan data untuk Tampilan Anda, itu akan mengirim objek Unit melalui Perpustakaan UnitConversion. Perpustakaan UnitConversion akan memeriksa Model Pengguna untuk sistem pilihan klien dan 'sistem' dalam model Unit dan membuat konversi yang diperlukan (karena Perpustakaan dapat menganggap sistem dalam model Unit adalah metrik ketika berasal dari database, itu membuat ini langkah sedikit lebih mudah). Ini kemudian akan menampilkan nomor dalam unit yang benar (unit jika KEDUA dipilih), yang dapat diteruskan ke View.

Sebuah kata singkat di atas adalah bahwa selalu ketika berhadapan dengan arsitektur sistem tidak ada solusi 'benar' untuk suatu masalah. Beginilah cara saya mengatur berbagai hal berdasarkan informasi yang diberikan, tetapi Anda mungkin perlu sedikit mengubahnya agar sesuai dengan apa yang sedang Anda kerjakan. Yang mengatakan, saya akan men-tweak di atas untuk bekerja di sistem Anda, dan tidak men-tweak sistem Anda agar di atas berfungsi! Semoga ini memberi Anda beberapa ide bagus.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara efisien untuk membuat daftar putih lebih banyak tabel di Debezium Mysql Connector

  2. Bagaimana saya bisa menambahkan kolom ke tabel kerja menggunakan prosedur tersimpan baru

  3. $wpdb->masukkan tidak berfungsi. Tidak Ada Pesan Kesalahan

  4. Kesalahan:ER_NOT_SUPPORTED_AUTH_MODE:Klien tidak mendukung protokol otentikasi yang diminta oleh server; pertimbangkan untuk memutakhirkan klien MySQL

  5. Kata sandi MySQL () berfungsi untuk PHP