Сообщение от Mikael86
|
Как вы предлагаете мне стандартизировать характеристики электро-оборудования например
|
СУБД не занимается стандартизацией, она описывает данные, их структуру, связи и т.д. Хотите понять как все это делается, читайте о реляционных базах данных и принципах нормализации их.
Допустим мы хотим иметь базу данных городов, их улиц и характеристику этих улиц. Что будет первично а данной структуре данных - курица или яйцо? Конечно курица, то есть город, ибо улицы в городе, а не наоборот. Значит первичная таблица, это таблица:
cities с двумя полями: id_city - уникальный идентификатор города, формируемый автоматически и являющийся первичным ключом таблицы, и city_name - название города. Таблица имеет значения:
1, Кукуево
2, Гадюкино
Связанные с первичной таблицей таблицы, это:
streets - таблица улиц с полями: id_street - уникальный идентификатор улицы, формируемый автоматически и являющийся первичным ключом таблицы, и street_name - название улицы, id_surface - характеристика дорожного покрытия улицы, id_lighting - характеристика освещения улицы. Таблица имеет значения:
1, Прямая, 1, 3
2, Кривая, 2, 1
3, Элитная, 4, 4
surfaces - таблица различных дорожных покрытий с полями: id_surface - уникальный идентификатор характеристики, формируемый автоматически и являющийся первичным ключом таблицы, surface_value - значение характеристики. Таблица имеет значения:
1, Грязь
2, Песок
3, Гравий
4, Асфальт
lightings - таблица различных дорожных покрытий с полями: id_lighting - уникальный идентификатор характеристики, формируемый автоматически и являющийся первичным ключом таблицы, lighting_value - значение характеристики. Таблица имеет значения:
1, Лампады
2, Свечи
3, Костры
4, Фонари электрические
Если нужно узнать удобно ли гулять в сандалиях по улице Прямой, достаточно сделать запрос к таблице streets объединив его с запросом к таблицам surface и lighting объединив их по идентификаторам id_surface и id_lighting для улицы id_street = 1. Результатом будет: Прямая, Грязь, Костры.
А вот улицы для города уже так не объединить, ибо в городе может быть множество улиц. Для такого объединения потребуется внешняя таблица связей - city_streets, с полями id_city и id_street. Если она будет содержать записи:
1, 1
1, 2
2, 3
значит у города Кукуево две улицы - Прямая и Кривая, а город Гадюкино, это город развитого коммунизма с одной Элитной улицей.
Если представить эти данные в форме как:
<input name="city[1]" value="Кукуево" />
<input name="street[1][1]" value="Прямая" />
<input name="surface[1][1][1]" value="Грязь" />
<input name="lighting[1][1][3]" value="Костры" />
<input name="street[1][2]" value="Кривая" />
<input name="lighting[1][2][2]" value="Песок" />
<input name="surface[1][2][1]" value="Лампады" />
<input name="city[2]" value="Гадюкино" />
<input name="street[2][3]" value="Элитная" />
<input name="surface[2][3][4]" value="Асфальт" />
<input name="lighting[2][3][4]" value="Фонари электрические" />
то сервер получит эти данные в виде массива:
Array
(
[city] => Array
(
[1] => Кукуево
[2] => Гадюкино
)
[street] => Array
(
[1] => Array
(
[1] => Прямая
[2] => Кривая
)
[2] => Array
(
[3] => Элитная
)
)
[surface] => Array
(
[1] => Array
(
[1] => Array
(
[1] => Грязь
)
[2] => Array
(
[1] => Лампады
)
)
[2] => Array
(
[3] => Array
(
[4] => Асфальт
)
)
)
[lighting] => Array
(
[1] => Array
(
[1] => Array
(
[3] => Костры
)
[2] => Array
(
[2] => Песок
)
)
[2] => Array
(
[3] => Array
(
[4] => Фонари электрические
)
)
)
)
в котором все вложенные массивы ключей города, улиц и их характеристик связаны по их идентификаторам. Северу легко такие данные проверить/обработать, и не важно сколько будет городов, улиц и характеристик.
А если данные в форме представить так:
<input name="data[1][city][name]" value="Кукуево" />
<input name="data[1][street][1][name]" value="Прямая" />
<input name="data[1][street][1][surface][1]" value="Грязь" />
<input name="data[1][street][1][lighting][3]" value="Костры" />
<input name="data[1][street][2][name]" value="Кривая" />
<input name="data[1][street][2][surface][2]" value="Песок" />
<input name="data[1][street][2][lighting][1]" value="Лампады" />
<input name="data[2][city][name]" value="Гадюкино" />
<input name="data[2][street][3][name]" value="Элитная" />
<input name="data[2][street][3][surface][4]" value="Асфальт" />
<input name="data[2][street][3][lighting][4]" value="Фонари электрические" />
то сервер получит уже такой массив:
Array
(
[data] => Array
(
[1] => Array
(
[city] => Array
(
[name] => Кукуево
)
[street] => Array
(
[1] => Array
(
[name] => Прямая
[surface] => Array
(
[1] => Грязь
)
[lighting] => Array
(
[3] => Костры
)
)
[2] => Array
(
[name] => Кривая
[surface] => Array
(
[2] => Песок
)
[lighting] => Array
(
[1] => Лампады
)
)
)
)
[2] => Array
(
[city] => Array
(
[name] => Гадюкино
)
[street] => Array
(
[3] => Array
(
[name] => Элитная
[surface] => Array
(
[4] => Асфальт
)
[lighting] => Array
(
[4] => Фонари электрические
)
)
)
)
)
)
А если все именовать так как у вас ХХХ1, ХХХ2, ..., то есть банально пронумеровать данные, то разобраться что есть что в большом массиве данных будет невозможно. Даже если иметь ключи city1, city2, ..., street1, street2, ..., то это все равно будет сущим кошмаром.
Не важно города ли с улицами описаны, товары ли, всегда должна быть связь между всеми данными сущности, которая однозначно указывает что чему принадлежит.
За один присест всего не рассказать, так что "Ок, Гугл, ...", находить, читать, вникать, учится мыслить.