Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как лучше такое реализовать?

6.6K
28 июля 2008 года
Ordos
105 / / 02.11.2007
Использую MS SQL Server 2005.
Пусть есть таблица Т1 (id, f1, f2, f3...) и таблица Т2(id, f). В Т2 поле f должно представлять собой что то вроде указателя на одно из полей в Т1, т.е например у меня есть Т2.id = 13, я ищу запись в Т2, смотрю поле Т2.f, там нахожу, например "f2", и делаю SELECT f2 FROM Т1.

Это можно несложно сделать, если в Т2.f хранить строку и динамически генерировать запрос, меня интересует, можно ли это сделать как-то ещё?

Заранее спасибо.
8.2K
28 июля 2008 года
Ora-cool
211 / / 20.09.2007
Может, расскажете исходные условия задачи, т.е. для чего нужно такое решение, т.к. на первый взгляд оно кажется довольно странным.
6.6K
31 июля 2008 года
Ordos
105 / / 02.11.2007
Для чего - универсальность и быстрота.
В качестве таблицы Т1 выступает, скажем, сущность "Продукт". поскольку разные группы продуктов имеют разные характеристики, то нужны шаблоны, т.е например "Диск с фильмом" имеет характеристику "продолжительность" (колонка f1 например), а "книга" - "число страниц" (f2) и "Фамилия автора" (f3).
Я извлекаю продукт, смотрю его шаблон, там сказано, что продукт сделан по шаблну "книга". Поэтому я извлекаю только главные поля и поля f2 и f3. (Возможно, не совсем то, что я описал выше, но идея одна и таже)
11
31 июля 2008 года
oxotnik333
2.9K / / 03.08.2007
Обычно для таких схем есть доп таблица тип параметра/значение...
т.е. из Вашей "горизонтальной" схемы она превращается в вертикальную
Было: Т1 (id, f1, f2, f3...)
Стало: T1 (Name, Value)
f1 | SomeValue1
f2 | SomeValue2
f3 | SomeValue3
....
6.6K
31 июля 2008 года
Ordos
105 / / 02.11.2007
Да, понимаю, но учитывая большое число таких параметров и большое число объектов к которым они относятся доставать по несколько таких параметров может быть не эффективно (особенно доставая сразу несколько объектов, например тех же самых книжек), хотелось бы всё иметь в одной таблице и доставать всё нужное одним запросом.
8.2K
31 июля 2008 года
Ora-cool
211 / / 20.09.2007
Зачем изобретать велосипед, если все уже давно изобретено до вас? Ваш подход как раз громоздок, неунивесален и нереализуем в рамках реляционного подхода (либо реализуем через 33 забора). Вам при появлении нового свйоства нужно каждый раз менять структуру вашей мега-таблицы. Как уже было сказано, заводится отдельная таблица свойств, а в таблицах-групп продуктов будут ссылки на записи этой таблицы. При добавлении нового свойства - всего лишь нужно будет добавить новую запись в таблице свойств.
6.6K
02 августа 2008 года
Ordos
105 / / 02.11.2007
Цитата: oxotnik333
Обычно для таких схем есть доп таблица тип параметра/значение...
т.е. из Вашей "горизонтальной" схемы она превращается в вертикальную
Было: Т1 (id, f1, f2, f3...)
Стало: T1 (Name, Value)
f1 | SomeValue1
f2 | SomeValue2
f3 | SomeValue3
....



Данный подход, боюсь, не применим, Value может для одного свойства иметь тип Text, для другого Int, а для третьего Image. Не буду же я каждый раз, когда нужно свойство нового типа новую таблицу создавать. а в моём методе - добавил колонку в таблице и всё.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог