Я новичок в SQL и базах данных, но мне было поручено создать несколько таблиц для хранения информации. У меня возникли проблемы с наилучшим подходом к этому.
Таблица A /* Populated by Flat csv file in SSMS-2016 */
Col1(name), Col2(ArrayX,cPK), Col3(ArrayY,cPK), Col4(subname)
/* two are required to identify a row. 1,000,000 rows */
Цель: Я хочу добавить описание каждой строки без повторения бесконечного блока текста, где мне может понадобиться 10000 строк, нуждающихся в одном и том же тексте описания.
Пример
**Table A**
Name, ArrayX, ArrayY, Subname
Red, 1, 1, Crayon
Red, 1, 2, Car
Red, 1, 3, Ball
Blue, 2, 1, Ball
Blue, 2, 2, Earth
**Table B**
Name(PK), Descriptions(Text)
Blue, "color, sky, azul, rainbow"
Red, "color, fire, hot, sun, rainbow"
Green, "(null value)"
Я бы хотел, чтобы конечный пользователь мог search
Select *
From Table A
where Name like %color% AND Subname like %car%`
And SQL returns: `Red, car, "color, fire, hot, sun"`
или
where Name like %rainbow%
И SQL возвращает:
name, subname, table2(descriptions)
Red, Crayon, "color, fire, hot, sun, rainbow"
Red, Car, "color, fire, hot, sun, rainbow"
Red, Ball, "color, fire, hot, sun, rainbow"
Blue, Ball "color, sky, azul, rainbow"
Blue, Earth "color, sky, azul, rainbow"
Важно, что таблица A Col (Имя) должна вводить описания для всех элементов с тем же значением, которое сохраняет повторение и хранение, необходимое для поля [текст].
Я предполагаю, что сложное представление приведет меня сюда, но я также хотел бы иметь возможность вводить описания, такие как
Update Table B /* this can be manual as the number of unique items for Table1 Col(Name) is low */
set Description = "color, fire, hot, sun, rainbow"
Name = red
Так что на данный момент, я думаю, что застрял на создание поиска или процедуры, которая дала бы мне соединение, описанное выше. Я знаю, что мне понадобится where table A Name = Table B Name
Но я еще не понял этого.
В этом смысл? Должен ли я создать Identity в первой таблице в качестве PK для связи с таблицей B? Если я сделаю это, могу ли я автоматически заполнить таблицу B Col (имя)?
Спасибо, что продвинулись так далеко и на мгновение перешли на псевдокод. У меня новое уважение к разработчикам баз данных!