Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Tabela MySQL, w której kluczem obcym jest tylko varchar

Przeprowadziłem prosty test:utwórz 3 tabele, jedną do przechowywania samych danych z dwiema kolumnami oraz ID (int) i danymi (varchar[120]), kolejną tabelę, która używa ID jako klucza obcego i ostatnią, która używa dane jako klucz obcy:

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;

Wstawiono 100 rekordów w każdej tabeli i porównano ostateczny rozmiar tabeli:

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

Sądzę więc, że dane NIE są replikowane w kluczu obcym varchar, przynajmniej w wersji 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. Jak sprawdzić, czy podczas korzystania z aktualizacji zduplikowanego klucza wiersz został wstawiony lub zaktualizowany?

  2. Jak mogę zmodyfikować kod źródłowy łącznika MySQL i zainstalować go na moim komputerze?

  3. MySQL - Lista ściągana w zależności od daty i kategorii

  4. Jak wykonać skrypt mysql ze zmiennymi przy użyciu PHP::PDO?

  5. PDO mysql:Jak sprawdzić, czy wstawienie się powiodło?