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

組み合わせに単一行を許可するMysqlの一意の制約

    通常 これを行う方法は、デフォルトの価格を保持するために別のテーブルを抽出することです:

    CREATE TABLE price (
        name VARCHAR(255),
        price INT,
        PRIMARY KEY (name, price)
    ) ;
    
    CREATE TABLE defaultPrice (
        name VARCHAR(255),
        price INT,
        PRIMARY KEY (name),
        FOREIGN KEY(name, price) REFERENCES price(name, price)
    );
    

    ほとんどの人は代理キーの導入をアドバイスします:

    CREATE TABLE item (
        id INT PRIMARY KEY,
        name VARCHAR(255),
        UNIQUE(name)
    );
    
    CREATE TABLE price (
        itemId INT,
        price INT,
        PRIMARY KEY (itemId, price),
        FOREIGN KEY (itemId) REFERENCES item (id)
    ) ;
    
    CREATE TABLE defaultPrice (
        itemId INT,
        price INT,
        PRIMARY KEY (itemId),
        FOREIGN KEY (itemId, price) REFERENCES price (itemId, price)
    );
    


    1. いくつかの範囲に一致する数値のリストを値のリストに変換するSQLクエリ

    2. MySQL:結合パラメータとしてCASE/ELSE値を使用します

    3. Oracleデータベースで特定の列名のテーブルを検索しますか?

    4. XMLサーバーXMLパフォーマンスの最適化