sql >> Databáze >  >> RDS >> Mysql

Jedinečné omezení Mysql umožňující jeden řádek pro kombinaci

normální způsob, jak to udělat, je extrahovat samostatnou tabulku, která bude obsahovat výchozí cenu:

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)
);

Většina lidí doporučí zavedení náhradních klíčů:

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. Rozlišují se v názvech sloupců a tabulek v MySQL velká a malá písmena?

  2. ACID vlastnosti výpisů a transakcí

  3. MySQL a kontrolní omezení

  4. Jak mapovat pole entity, jehož název je vyhrazeným slovem v JPA