sql >> Databasteknik >  >> RDS >> Mysql

MySQL-tabell med endast en varchar som främmande nyckel

Jag körde ett enkelt test:skapa 3 tabeller, en för att hålla själva data med två kolumner, och ID (int) och data (varchar[120]), en annan tabell som använder ID som främmande nyckel och en sista som använder data som främmande nyckel:

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;

Infogade 100 poster i varje tabell och jämförde den slutliga tabellens storlek:

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

Så jag antar att data INTE replikeras i varchar främmande nyckel, ja, åtminstone i MySQL 5.1-versionen.



  1. MySQL:Fel 1628:Kommentar för tabellen "kund" är för lång (max =60)

  2. Paketet har redan lagt upp 50 skålar. Visar inte mer

  3. PostgreSQL 'NOT IN' och underfråga

  4. Behöver jag uppdatera min enanvändarappdatabas för att tillåta flera användare, hur ändrar man databasschemat?