powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как хранить данные в неявном виде?
20 сообщений из 20, страница 1 из 1
как хранить данные в неявном виде?
    #35095155
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть таблица (первая сверху на картинке).

В ней хранятся id товара, его название, несколько свойств товара.
Свойства хранятся в явном виде, т. е. в ячейке храниться само слово (или выражение)

Что хотелось бы сделать:
Иметь таблицу, в которой бы содержались только уникальные свойства (т.е. id и само название) (вторая таблица на картинке)

А таблицу (первая сверху на картинке) превести к виду как показано на рисунке (самая нижняя на картинке). Т.е. в ней хранились не сами свойства, а ссылки на свойства, которые содержаться в таблице уникальных свойств.

Как это можно реализовать?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095174
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenOnnКак это можно реализовать?
Вручную или автоматически хочется?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095183
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хочется автоматом, т.к. товаров будет много или вы не это имеете в виду?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095257
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenOnn
Автомат здесь интересен для произвольного числа полей со свойствами. А сколько товара - в общем-то без разницы. Логика, если попроще и потупее, такая:
1. Создаем справочник свойств с автоинкрементом (таблица XXX).
2. Для каждого поля property_N свойства выполняем запрос вида insert into XXX (name) select distinct v.property_N from table1 N where v.property_N is not null and not exists(select 1 from XXX where xxx.name=v.property_N). Можно и через union все пропихнуть в принципе.
3. Сливаем информацию о текущих значениях свойств (например, во временную таблицу).
4. Меняем тип полей свойств на целочисленный, не забывая все поля сначала обNULLить update-ом.
5. Восстанавливаем значения ссылок аналогичным update-ом, беря id по значению свойства из сохраненной на шаге 3 информации, для каждого поля свойств.
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095279
Фотография shelsoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xenOnn

Недоперепонял ...
Про классификатор допустим сами легко могли бы догадаться (таблица посредине), но вот зачем мешать плоское с зеленым

Перезагрузитесь (жЫжненный пример и человеческим языком зачем это надо)


______________________________________________________
Задолбали вихри яростных атак ...
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095425
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну я слова просто для примера дал:))
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095468
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов

Сорри, наверное некорректно задал вопрос.
Суть в в том чтобы конвертировать имеющуюся базу. Базы пока нет.

Я о том как её создать. Т.е. при заполнении базы, в поля Свойство_1, Свойство_2 и т. д.
не помещались сами свойства в явном виде, а чтобы было как в нижней таблице. Чтобы в полях Свойство_1, Свойство_2 и т. д. хранились ссылки на свойства которые бы содержались в классификаторе (средняя таблица). Я незнаю как в ячейках хранить сами эти ссылки. Извиняюсь если это что-то элементарное.
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35095478
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Васкецов

Сорри, наверное некорректно задал вопрос.
Суть не в том, чтобы конвертировать имеющуюся базу. Базы пока нет.

Я о том как её создать. Т.е. при заполнении базы, в поля Свойство_1, Свойство_2 и т. д.
не помещались сами свойства в явном виде, а чтобы было как в нижней таблице. Чтобы в полях Свойство_1, Свойство_2 и т. д. хранились ссылки на свойства которые бы содержались в классификаторе (средняя таблица). Я незнаю как в ячейках хранить сами эти ссылки. Извиняюсь если это что-то элементарное.
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35096232
xenOnn Сергей Васкецов

Сорри, наверное некорректно задал вопрос.
Суть не в том, чтобы конвертировать имеющуюся базу. Базы пока нет.

Я о том как её создать. Т.е. при заполнении базы, в поля Свойство_1, Свойство_2 и т. д.
не помещались сами свойства в явном виде, а чтобы было как в нижней таблице. Чтобы в полях Свойство_1, Свойство_2 и т. д. хранились ссылки на свойства которые бы содержались в классификаторе (средняя таблица). Я незнаю как в ячейках хранить сами эти ссылки. Извиняюсь если это что-то элементарное.
Реляционная теория нас учит (классичекое отношение "многие-ко-многим"), что будут три таблицы:
1. Товары (IDтовара, наименование товара);
2. Свойства(IDсвойства, название свойства);
3. Свойства товаров(IDтовара, IDсвойства, Значение свойства).
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35096676
Фотография proposed amendment
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EAV и поиском по форуму
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35097632
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийРеляционная теория нас учит (классичекое отношение "многие-ко-многим"), что будут три таблицы:
1. Товары (IDтовара, наименование товара);
2. Свойства(IDсвойства, название свойства);
3. Свойства товаров(IDтовара, IDсвойства, Значение свойства).
Поддерживаю
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35098763
xenOnn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий

Сенкс
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35099223
xenOnn Станислав С...кий

Сенкс
Здесь есть только один "маленький камушек": Ваша третья таблица (см. Ваш первый пост) будет как бы "лежать на боку". Чтобы развернуть ее обратно - потребуется немало усилий на клиентской стороне
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35099417
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийпотребуется немало усилий на клиентской стороне
Собственно, переписать пользовательский интерфейс в части работы с этой таблицей и потребуется. Если нет фантастических наворотов, это ерунда, куда большая проблема может быть в отчетах, которые это используют. А со слов автора не ясно, существуют ли отчеты, о которых он не знает (например, поставщик ПО для внешних клиентов не знает об отчетах, которые сами клиенты для себя создают).
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35100667
ModelR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кий xenOnn Станислав С...кий

Сенкс
Здесь есть только один "маленький камушек": Ваша третья таблица (см. Ваш первый пост) будет как бы "лежать на боку". Чтобы развернуть ее обратно - потребуется немало усилий на клиентской стороне
Только сформировать достаточно шаблонный запрос по транспонированию строк в столбцы .
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35101013
Фотография Jоhn__Dоe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А почему бы, если кол-во свойств фиксировано, т.е. 5, не использовать вместо самого свойства, foreign key на ID_Свойства таблицы - справочника свойств?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35112053
Владимирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Станислав С...кийРеляционная теория нас учит (классичекое отношение "многие-ко-многим"), что будут три таблицы:
1. Товары (IDтовара, наименование товара);
2. Свойства(IDсвойства, название свойства);
3. Свойства товаров(IDтовара, IDсвойства, Значение свойства).

а как сделать команду Select по товару с заданым ИДтовар?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35112054
egorych
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
SELECT * FROM "Товар" WHERE "IDтовара" = ...
?
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35112055
Владимирович
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имею ввиде что вышла таблица с столбцами

ИДтовара - наименование - название свойства1 - ... - название свойстваN
...
Рейтинг: 0 / 0
как хранить данные в неявном виде?
    #35112353
Владимировичимею ввиде что вышла таблица с столбцами

ИДтовара - наименование - название свойства1 - ... - название свойстваN
Например, так (таблица "повернута" на 90 градусов), а затем преобразовать к "нормальному" виду на клиенте (Или почитать инфо по ссылке, данной в постах выше...):
Код: plaintext
1.
2.
3.
Select a.IDтовара, a.наименование,b.название свойства 
from Товары а, Свойства b, Свойства товара с
where a.IDтовара = <значение> and c.IDтовара = a.IDтовара and c.IDсвойства = b.IDсвойства
(Естественно, SELECT можно переписать с использованием JOIN'ов, но я этого делать не буду...)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / как хранить данные в неявном виде?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]