sql >> データベース >  >> RDS >> Mysql

タグをデータベースに保存するためのベストプラクティスは?

    多対多のテーブルを使用して、TAGをリンクします 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;
    

    タグ

    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;
    


    1. mysqlクエリで行を一番上に配置する方法。

    2. サブクエリを使用しないPostgreSQLの合計に対する割合

    3. 生年月日に基づいて年齢を計算します

    4. Sphinx vs. MySql-友達のリストを検索(効率/速度)