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

Ukládání pole neznámé délky

Pokud se ocitnete v situaci, kdy začnete mít column1 , column2 na stole – je pravděpodobné, že váš návrh začíná být chybný, a měli byste místo toho vytvořit samostatnou tabulku – kde každý columnX dostane vlastní řadu. Je (téměř) vždy lepší mít samostatnou tabulku, pokud zjistíte, že máte v jedné tabulce více opakujících se sloupců.

Tímto způsobem se vyhnete ukládání hodnot oddělených čárkami ve sloupcích, vyhnete se porušení kódu/dotazů, pokud náhle budete muset zavést jinou hodnotu column{X+1} - a místo toho může mít tolik nebo málo vstupních hodnot, kolik potřebujete.

Pro vás by to bylo něco jako nová tabulka s názvem land_owner_input , kde máte hodnotu (kterou byste vložili do columnX ) a odkaz na řádek v land_owner že hodnota patří.

Typický designový vzor by byl něco takového.

CREATE TABLE land_owner_input (
    land_owner_input_id INT(11) AUTO_INCREMENT
    land_owner_id INT(11), 
    land_owner_input_value VARCHAR(MAX)
);

Mějte na paměti, že vaše land_owner_id v nové tabulce by měl být přesně stejného typu a velikosti jako ID, na které se odkazuje.

Můžete také vytvořit omezení cizího klíče mezi land_owner_id a ID land_owner tabulky, aby byla zajištěna integrita dat.

Jakmile budete mít svou novou tabulku, můžete se na ně společně dotazovat pomocí LEFT JOIN (nebo normální JOIN pokud chcete vrátit řádky pouze v případě, že má vstupní hodnoty).

SELECT *
FROM land_owner AS lo
LEFT JOIN land_owner_input AS loi
    ON loi.land_owner_id = lo.land_owner_id 


  1. Získejte čas z MySQL ve formátu HH:MM

  2. php, mysql server odešel

  3. MySQL rychle odstraňuje duplikáty z velké databáze

  4. Pivoting, Unpivoting a Spliting columns in Power BI Query Editor