Ако попаднете в ситуация, в която започнете да имате 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