Di kelas, kita semua 'mempelajari' database, dan semua orang menggunakan Access. Bosan dengan ini, saya mencoba melakukan apa yang dilakukan kelas lainnya, tetapi dengan perintah SQL mentah dengan MySQL daripada menggunakan Access.
Saya telah berhasil membuat database dan tabel, tetapi sekarang bagaimana cara membuat hubungan antara dua tabel?
Jika saya memiliki dua tabel saya seperti ini:
CREATE TABLE accounts(
account_id INT NOT NULL AUTO_INCREMENT,
customer_id INT( 4 ) NOT NULL ,
account_type ENUM( 'savings', 'credit' ) NOT NULL,
balance FLOAT( 9 ) NOT NULL,
PRIMARY KEY ( account_id )
)
dan
CREATE TABLE customers(
customer_id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
address VARCHAR(20) NOT NULL,
city VARCHAR(20) NOT NULL,
state VARCHAR(20) NOT NULL,
PRIMARY KEY ( customer_id )
)
Bagaimana cara membuat 'hubungan' antara dua tabel? Saya ingin setiap akun 'ditetapkan' satu customer_id (untuk menunjukkan siapa pemiliknya).
mysql
sql
foreign-keys
relational-database
Josh Hunt
sumber
sumber
Jawaban:
Jika tabelnya innodb Anda bisa membuatnya seperti ini:
Anda harus menentukan bahwa tabel adalah innodb karena mesin myisam tidak mendukung kunci asing. Lihat di sini untuk info lebih lanjut.
sumber
seperti yang dikatakan ehogue, taruh ini di CREATE TABLE Anda
alternatifnya, jika Anda sudah membuat tabel, gunakan perintah ALTER TABLE:
Salah satu cara yang baik untuk mulai mempelajari perintah-perintah ini adalah dengan menggunakan MySQL GUI Tools , yang memberikan Anda lebih banyak antarmuka "visual" untuk bekerja dengan database Anda. Manfaat nyata untuk itu (atas metode Access), adalah bahwa setelah mendesain tabel Anda melalui GUI, ini menunjukkan kepada Anda SQL yang akan dijalankannya, dan karenanya Anda dapat belajar darinya.
sumber
Anda harus bertanya pada diri sendiri apakah ini hubungan 1 banding 1 atau hubungan 1 dari banyak. Artinya, apakah setiap akun memiliki pelanggan dan setiap pelanggan memiliki akun. Atau akan ada pelanggan tanpa akun. Pertanyaan Anda menyiratkan yang terakhir.
Jika Anda ingin memiliki hubungan 1 ke 1 yang ketat, cukup gabungkan kedua tabel tersebut.
Dalam kasus lain, cara yang benar untuk membuat hubungan antara dua tabel adalah dengan membuat tabel hubungan.
Kemudian, jika Anda memiliki customer_id dan menginginkan info akun, Anda bergabung dengan akun dan akun pelanggan:
Karena pengindeksan, ini akan menjadi sangat cepat.
Anda juga dapat membuat TAMPILAN yang memberi Anda efek tabel akun pelanggan gabungan sambil memisahkannya
sumber
ca.
tidak bermaksudac.
(3 tempat).PRIMARY KEY (customer_id, account_id)
tanpa koma setelahnyaMenambahkan ke komentar oleh ehogue, Anda harus membuat ukuran tombol pada kedua tabel cocok. Daripada
buat itu
dan pastikan kolom int Anda di tabel pelanggan juga int (10).
sumber
Mesin MySQL tertentu mendukung kunci asing. Misalnya, InnoDB dapat membuat batasan berdasarkan kunci asing. Jika Anda mencoba untuk menghapus entri dalam satu tabel yang memiliki ketergantungan di tabel lain, penghapusan akan gagal.
Jika Anda menggunakan tipe tabel di MySQL, seperti MyISAM, yang tidak mendukung kunci asing, Anda tidak dapat menautkan tabel di mana pun kecuali diagram dan kueri Anda.
Misalnya, dalam kueri Anda menautkan dua tabel dalam pernyataan pilih dengan gabungan:
sumber
Berikut adalah beberapa sumber daya yang akan membantu memulai: http://www.anchor.com.au/hosting/support/CreatingAQuickMySQLRelationalDatabase dan http://code.tutsplus.com/articles/sql-for-beginners-part- Hubungan-3-database - net-8561
Juga seperti yang dikatakan orang lain, gunakan GUI - coba unduh dan instal Xampp (atau Wamp) yang menjalankan perangkat lunak server (Apache dan mySQL) di komputer Anda. Kemudian ketika Anda menavigasi ke // localhost di browser, pilih PHPMyAdmin untuk mulai bekerja dengan database mySQL secara visual. Seperti disebutkan di atas, innoDB digunakan untuk memungkinkan Anda membuat hubungan seperti yang Anda minta. Menjadikannya lebih mudah untuk melihat apa yang Anda lakukan dengan tabel database. Ingatlah untuk MENGHENTIKAN layanan Apache dan mySQL setelah selesai - ini dapat membuka port yang dapat membuat Anda terkena peretasan / ancaman berbahaya.
sumber
Salah satu aturan yang harus Anda ketahui adalah bahwa kolom tabel yang ingin Anda rujuk harus dengan tipe data yang sama dengan tabel referensi. 2 jika Anda memutuskan untuk menggunakan mysql Anda harus menggunakan InnoDB Engine karena menurut pertanyaan Anda itulah mesin yang mendukung apa yang ingin Anda capai di mysql.
Di bawah ini adalah kodenya mencobanya meskipun orang pertama yang menjawab pertanyaan ini mereka 100% memberikan jawaban yang bagus dan mohon pertimbangkan semuanya.
sumber
sumber