Best practice for storing tags in a database?

前端 未结 3 1254
情书的邮戳
情书的邮戳 2020-12-23 18:28

I developed a site that uses tags (key words) in order to categorize photographs. Right now, what I have in my MySQL database is a table with the following structure:

3条回答
  •  礼貌的吻别
    2020-12-23 19:03

    Use a many-to-many table to link a TAG record to an IMAGE record:

    IMAGE

    DROP TABLE IF EXISTS `example`.`image`;
    CREATE TABLE  `example`.`image` (
      `image_id` int(10) unsigned NOT NULL auto_increment,
      PRIMARY KEY  (`image_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    TAG

    DROP TABLE IF EXISTS `example`.`tag`;
    CREATE TABLE  `example`.`tag` (
     `tag_id` int(10) unsigned NOT NULL auto_increment,
     `description` varchar(45) NOT NULL default '',
     PRIMARY KEY  (`tag_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

    IMAGE_TAG_MAP

    DROP TABLE IF EXISTS `example`.`image_tag_map`;
    CREATE TABLE  `example`.`image_tag_map` (
     `image_id` int(10) unsigned NOT NULL default '0',
     `tag_id` int(10) unsigned NOT NULL default '0',
     PRIMARY KEY  (`image_id`,`tag_id`),
     KEY `tag_fk` (`tag_id`),
     CONSTRAINT `image_fk` FOREIGN KEY (`image_id`) REFERENCES `image` (`image_id`),
     CONSTRAINT `tag_fk` FOREIGN KEY (`tag_id`) REFERENCES `tag` (`tag_id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    

提交回复
热议问题