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

外部キーとしてvarchar列を持つMySQLテーブル

    一意のフィールドを参照する外部キーのみを持つことができます。以下のように、カテゴリフィールドが一意になるようにnetwork_classesテーブルを変更します

     CREATE TABLE network_classes (
        id TINYINT(1) UNSIGNED NOT NULL AUTO_INCREMENT,
        category VARCHAR(80) NOT NULL,
        PRIMARY KEY(id),
        UNIQUE KEY `category_UNIQUE` (`category`),
        KEY `key_1` (`id`,`category`)
    )
    ENGINE=InnoDB;
    
    
    CREATE TABLE networks (
        id TINYINT(3) UNSIGNED NOT NULL AUTO_INCREMENT,
        name VARCHAR(100) NOT NULL,
        category VARCHAR(80) NOT NULL,
        director_id TINYINT(3) UNSIGNED NULL,
        director_name VARCHAR(100) NULL,
        description VARCHAR(1000) NULL,
        last_modified TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
        user_id SMALLINT UNSIGNED NULL,
        PRIMARY KEY(id),
        KEY `networks_fk1` (`category`),
        CONSTRAINT `networks_fk1` FOREIGN KEY (`category`) REFERENCES `network_classes` (`category`) ON DELETE NO ACTION,
        INDEX networks_index2471(name),
        INDEX networks_index2472(director_id, director_name)
    )
    ENGINE=InnoDB;
    

    これで、必要な外部キーを追加できるようになります



    1. PL / SQLがロールによって付与された権限を尊重しないのはなぜですか?

    2. SQLでは、OR付きの括弧の使用はどういう意味ですか?

    3. PG ::DuplicateTable:エラー:リレーション投稿はすでに存在します

    4. 自動車修理店のデータモデル