Mysql
 sql >> база данни >  >> RDS >> Mysql

Съхранение на масив с неизвестна дължина

Ако попаднете в ситуация, в която започнете да имате column1 , column2 на масата - има вероятност вашият дизайн да е дефектен и вместо това трябва да създадете отделна таблица - където всяка columnX получава собствен ред. (почти) винаги е по-добре да имате отделна таблица, ако установите, че имате множество повтарящи се колони в една и съща таблица.

По този начин избягвате да съхранявате разделени със запетая стойности в колони, избягвате да нарушавате кода/заявките си, ако изведнъж трябва да въведете друга стойност column{X+1} - и вместо това може да има толкова или по-малко входни стойности, колкото е необходимо.

За вас това би било нещо като нова таблица, наречена land_owner_input , където имате стойността (която бихте поставили в columnX ) и препратка към реда в land_owner на която принадлежи стойността.

Типичният модел на дизайн би бил нещо подобно.

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

Имайте предвид, че вашият land_owner_id в новата таблица трябва да бъде от същия тип и размер като идентификатора, към който се отнася.

Можете също да създадете ограничение за външен ключ между land_owner_id и идентификационния номер на land_owner таблица, за да се гарантира целостта на данните.

След като имате новата си таблица, можете да ги заявите заедно, като използвате LEFT JOIN (или нормален JOIN ако искате да върнете редове само ако има входни стойности).

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как мога да предам запазени уеб данни на localStorage към php скрипт?

  2. Как да приложим система за вложени коментари?

  3. Някои въпроси, свързани с индексите SphinxSE и RT

  4. Как да свържете локално хоствана MySQL база данни с докер контейнера

  5. Грешка при изпълнение на SQL скрипт; Процесът не може да получи достъп до файла, защото се използва от друг процес:'C:\\Users\\......\....cnf'