Здравствуйте!
Есть таблица с машинами :
+----+-----------+-----------+-----------------+--------------+
| id | car_firm | car_model | year_of_produce | car_color_id |
+----+-----------+-----------+-----------------+--------------+
| 1 | Toyota | Sprinter | 1994 | 1 |
| 2 | Nissan | Patrol | 2001 | 1 |
| 3 | Toyota | Harrier | 2004 | 2 |
| 4 | Toyota | Camry | 1999 | 1 |
| 5 | Toyota | Camry | 2010 | 3 |
| 6 | Mazda | Demio | 2005 | 1 |
| 7 | Toyota | Sprinter | 1994 | 1 |
| 8 | Nissan | Note | 2003 | 2 |
| 9 | Nissan | Teana | 2003 | 3 |
| 10 | Nissan | Teana | 2014 | 1 |
| 11 | Honda | Accord | 2000 | 1 |
| 12 | Honda | Fit | 2000 | 1 |
| 13 | Honda | Fit | 2014 | 1 |
| 14 | Nissan | Fuga | 2005 | 3 |
| 15 | Nissan | Fuga | 2017 | 1 |
| 16 | Toyota | Vanguard | 2004 | 2 |
| 17 | Nissan | Juke | 2005 | 3 |
| 18 | Mitsubisi | Pajero | 1999 | 3 |
| 19 | Mitsubisi | Outlander | 2005 | 3 |
| 20 | Mitsubisi | Outlander | 2019 | 1 |
| 21 | Toyota | MarkX | 2016 | 1 |
+----+-----------+-----------+-----------------+--------------+
Чисто ради эксперимента решил вынести поле
car_color_id
в отдельную таблицу, в виде :
+----------+------------+
| color_id | color_name |
+----------+------------+
| 3 | blue |
| 2 | green |
| 1 | red |
+----------+------------+
т.е. соотвественно есть айди цвета, ну и из основной таблицы мы можем по этому айди найти нужный нам цвет ( вроде не сложно )! Запрос выглядит так :
SELECT `car_firm`, `car_model`
FROM `cars_info`
WHERE `car_color_id` = (SELECT `color_id` FROM `car_colors_info` WHERE `color_name` = 'blue' );
В целом запрос работает как надо, НО пока изучаю скл везде приводятся примеры таблиц связанных с помощью
PRIMARY KEY
, что в данном случае мне представляется возможным лишь если сделать
id
из основной таблицы вторичным ключём второй таблицы (ну или как там переводится
FOREIGN KEY
)! НО тогда вторая (таблица потомок с цветами) будет иметь размерность таблицы родителя, что сообственно разумеется замедлит запросы и выборку данных (ну наверное), НО зато таблицы будут связаны, так вот в чем вопрос ,
то что я сделал (в примере выше) имеет место в этом мире? Нужно ли стараться связывать такие таблицы каким-то образом? Или вполне можно чтобы в одной схеме присутствовали две таблицы связаны не "жёзтко" а чисто логически друг с другом? Или есть способ в данном случае связать этот
id
из первой таблицы с
color_id
из второй таблицы, при этом не делая из второй таблицы здорового монстра, а лишь оставить по одному соотвествию
color_id
и
color_name
?