Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как определить поле для типа integer[] pgsql'я 
V
    Опции темы
fray
Дата 11.6.2009, 00:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



Django. 
Вот появилась проблема мне нужно определить поле типа integer[] в модели, не нахожу подходящего из уже имеющихся, объесните как его указать.
Спасибо.

Это сообщение отредактировал(а) fray - 11.6.2009, 01:00
PM MAIL   Вверх
pythonwin
Дата 11.6.2009, 09:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



fray, объясни, пожалуйста, зачем создавать поле в таблице типа массив если это можно сделать через таблицу? 
Нормальная_форма
Цитата

Таблица находится в первой нормальной форме, если каждый её атрибут атомарен. Под выражением «атрибут атомарен» понимается, что атрибут может содержать только одно значение. Таким образом, не существует 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.

PM WWW GTalk Jabber   Вверх
fray
Дата 11.6.2009, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



можно конечно и нормализавать, но моему это менее наглядно, таблица раздуется и при этом скорость выборки снизиться. Так как сильно увеличиться количество полей. В любом случае спасибо, было интересно почитать. Ну раз в джанго нет, класса для определения данного типа поля, видимо придется делать именно так, конечно в данном подходе есть и плюсы, не придется писать сеттеры проверяющие существование элементов в массиве smile. 

Это сообщение отредактировал(а) fray - 11.6.2009, 15:03
PM MAIL   Вверх
pythonwin
Дата 11.6.2009, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



Цитата(fray @  11.6.2009,  17:56 Найти цитируемый пост)
можно конечно и нормализавать, но моему это менее наглядно, таблица раздуется и при этом скорость выборки снизиться. Так как сильно увеличиться количество полей. 

fray, пожалуйста, сообщите для какой предметной области вы разрабатывается программу и что эта программа должна делать (можно и в ПМ если информация конфиденциальная ).
такой способ использования хорош если вы пытаетесь использовать psql как объектную СУБД для хранения произвольной информации (например = документооборот), но тогда лучше посмотреть на Zope и на готовые решения
PM WWW GTalk Jabber   Вверх
fray
Дата 11.6.2009, 15:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



user posted image
Вот примерно такая схема.
Пытаюсь реализовать бесконечную вложенность.  Да что-то типа документа оборота, но думаю вложенность будет не очень глубокая.
Нормализация к данной схеме, видимо это мы вводим еще один общий primary_key-шник, а для таблиц TClass и  GroupClass их собственные id-шники не primary_key, выстпают в роли ForeignKey-eв.


Это сообщение отредактировал(а) fray - 11.6.2009, 15:56
PM MAIL   Вверх
pythonwin
Дата 11.6.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2529
Регистрация: 18.4.2006
Где: за компом

Репутация: 2
Всего: 36



третья нормальная форма очень даже подходит для этой задачи и + при нормализации БД будет легче строить отчеты, т.к. будет чёткая структура организованная с помощью самой СУБД и поэтому скорость генерации будет выше. чем если вы будете использовать одно поле как массив
PS делал подобную задачу - один раз сделал через поле и получил постоянную головную боль с поддержкой и частыми ошибками в части кода, которая связана с этим полем-массивом, а второй раз сделал через несколько таблиц + при помощи уже готового кода к TurboGears (аналог django) и не вспоминаю про эту программу.
PM WWW GTalk Jabber   Вверх
fray
Дата 15.6.2009, 17:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 139
Регистрация: 7.6.2007

Репутация: нет
Всего: 0



Да нормализация помогла. Спасибо.

Это сообщение отредактировал(а) fray - 15.6.2009, 17:48
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Веб-разработка и фреймворки | Следующая тема »


 




[ Время генерации скрипта: 0.0906 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.