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

Tabel MySQL dengan hanya varchar sebagai kunci asing

Saya menjalankan tes sederhana:buat 3 tabel, satu untuk menampung data itu sendiri dengan dua kolom, dan ID (int) dan data (varchar[120]), tabel lain yang menggunakan ID sebagai kunci asing dan yang terakhir menggunakan data sebagai kunci asing:

CREATE TABLE `dados` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`) USING BTREE,
  KEY `idx` (`id`,`name`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `refINT` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `dado` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id` (`dado`),
  CONSTRAINT `id` FOREIGN KEY (`dado`) REFERENCES `dados` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

CREATE TABLE `refSTR` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `dado` varchar(120) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  PRIMARY KEY (`id`),
  KEY `nome` (`dado`),
  CONSTRAINT `nome` FOREIGN KEY (`dado`) REFERENCES `dados` (`name`) ON DELETE NO ACTION
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

Memasukkan 100 catatan di setiap tabel dan membandingkan ukuran tabel akhir:

dados:  192.0 KB
refINT: 32.0 KB
refSTR: 32.0 KB

Jadi saya kira data TIDAK direplikasi dalam kunci asing varchar, setidaknya di versi MySQL 5.1.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Server Ruby on Rails tidak dapat dijalankan:dyld:lazy simbol binding gagal:Simbol tidak ditemukan:_mysql_get_client_info

  2. Cara Mendapatkan Ukuran Tabel di MySQL

  3. Bagaimana cara memformat angka agar hanya memiliki dua tempat desimal?

  4. Pilih setiap bulan meskipun bulan tidak ada di tabel mysql

  5. mysql SQL:item spesifik untuk menjadi yang pertama dan kemudian mengurutkan item lainnya