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

Pertanyaan desain database

Anda tidak benar-benar mengatakan apa latar belakang Anda dan seberapa banyak yang Anda ketahui tentang pemrograman dan desain basis data . Sepertinya Anda harus membaca. Secara konseptual meskipun desain Anda cukup sederhana. Deskripsi Anda mengidentifikasi hanya dua entitas:

  • Instrumen keuangan; dan
  • Kutipan.

Jadi, Anda perlu mengidentifikasi atributnya.

Instrumen keuangan:

  • Kode keamanan;
  • Pasar;
  • dst.

kutipan:

  • Stempel waktu;
  • Instrumen keuangan;
  • Harga penawaran; dan
  • Tanyakan harga.

Referensi ke instrumen keuangan ini disebut kunci asing . Setiap tabel juga memerlukan kunci utama , mungkin hanya bidang kenaikan otomatis.

Secara konseptual cukup sederhana.

CREATE TABLE instrument (
  id BIGINT NOT NULL AUTO_INCREMENT,
  code CHAR(4),
  company_name VARCHAR(100),
  PRIMARY KEY (id)
);

CREATE TABLE quote (
  id BIGINT NOT NULL AUTO_INCREMENT,
  intrument_id BIGINT NOT NULL,
  dt DATETIME NOT NULL,
  bid NUMERIC(8,3),
  ask NUMERIC(8,3),
  PRIMARY KEY (id)
)

CREATE INDEX instrument_idx1 ON instrument (code);

CREATE INDEX quote_idx1 ON quote (instrument_id, dt);

SELECT (bid + ask) / 2
FROM instrument i
JOIN quote q ON i.id = q.instrument_id
WHERE i.code = 'GOOG'
AND q.dt >= '01-06-2008' AND q.dt < '02-06-2008'

Jika kumpulan data Anda cukup besar, Anda mungkin ingin menyertakan (tawaran + permintaan) / 2 dalam tabel sehingga Anda tidak perlu menghitung dengan cepat.

Ok, jadi itu tampilan yang dinormalisasi. Setelah ini, Anda mungkin perlu mulai membuat pengoptimalan kinerja. Pertimbangkan pertanyaan ini tentang menyimpan miliaran baris di MySQL . Partisi adalah fitur MySQL 5.1+ (cukup baru).

Tetapi pertanyaan lain untuk ditanyakan pada diri sendiri adalah ini:apakah Anda perlu menyimpan semua data ini? Alasan saya menanyakan hal ini adalah karena saya dulu bekerja di pialang online dan kami hanya menyimpan semua perdagangan untuk jendela yang sangat terbatas dan perdagangan akan menjadi kumpulan data yang lebih kecil daripada kutipan, yang sepertinya Anda inginkan.

Menyimpan miliaran baris data adalah masalah serius dan Anda benar-benar membutuhkan bantuan serius untuk menyelesaikannya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP &mySQL:Tahun 2038 Bug:Apa itu? Bagaimana cara mengatasinya?

  2. Bagaimana saya bisa membalikkan urutan default di MySQL?

  3. PHP 5.4 PDO tidak dapat terhubung ke MySQL 4.1+ menggunakan otentikasi lama yang tidak aman

  4. Menulis Query MySQL yang Kompleks

  5. Tidak Dapat Membuat Model Data Entitas - menggunakan MySql dan EF6