powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужна ваша помощь
13 сообщений из 13, страница 1 из 1
Нужна ваша помощь
    #37046377
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Часто сталкиваюсь с задачами, следующего вида:
Есть таблица, к примеру - справочник задач:
[Номер задачи] [Код задачи] [Языки программирования] [Пользователи] [Программисты] и тп.
1 2 3 4 5

Причем поля 3,4,5 - могут содержать несколько значений. Такие таблицы я обычно разбиваю на несколько:

Таблица А
[Номер задачи] [Код задачи]
1 2

Таблица Б
[Id] [Код задачи] [Язык программирования]
1 2 3

Таблица В
[Id] [Код задачи] [Пользователь]
1 2 3
и тп.

В итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места.

Есть ли какие альтернатывные способы реализации данных задач ?
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046400
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreen,

Как авторы любительских писем: "Дорогие ученые. У меня
который год в подполе происходит подземный стук. Объясните, пожалуйста,
как он происходит".

Что есть id ?
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046405
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
id - счетчик, т.е. номера записей:
1 иванов
2 петров
3 сидоров
......
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046517
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места.
В теории баз данных это называется нормализацией, и делается в т.ч. для уменьшения занимаемого объема. Может у тебя много помеченных на удаление записей? они тоже место занимают.
faustgreenЕсть ли какие альтернатывные способы реализации данных задач ?
За последние полсотни лет ничего лучше не придумано.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046638
Sea_Cat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreen,
Если проблема в том, что множество мелких справочников становится трудно управляемым - через некоторое время уже трудно вспомнить имена таблиц и назначение справочников - можно собрать их в один файл.
Я, к примеру, храню все мелкие и редко изменяемые справочники в формате XML в поле MEMO (BLOB) одного таблицы - каталога служебных справочников.
Когда в каком-либо справочнике возникает надобность, он создается в виде курсора, при необходимости - индексируется.
Такой подход не накладывает ограничений на структуру справочников и облегчает их поддержание в актуальном состоянии.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046656
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места.

В смысле места на диске ? При нынешних дисках это особо не должно волновать. Если проблема в том, что этих "мелких" сильно много - тоже не есть причина для волнений, надо аккуратно формировать и запоминать их имена, чтобы потом обратиться к нужному. У меня в проекте формируется около сотни временных таблиц, никаких проблем. В зависимости от задачи, можно обойтись и курсорами, обращаясь к ним по алиасу.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37046779
fore5ta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места.

Есть ли какие альтернатывные способы реализации данных задач ?Как писали выше, этот процесс в проектировании БД называется нормализацией и он плавно движется (при выполнении разработчиком правил приведения таблиц к нормальным формам) к созданию списков из двух полей: кода и описания. Иногда возникают моменты, когда разработчик идет на обратный процесс денормализации таблиц. По этим вопросам просто целый лес аргументированных мнений. Не ясно по каким причинам у тебя волнения по кол-ву таблиц, ведь все они нужны для описания предметной области, или как? Может просто ошибки в отражении предметной области при проектировании таблиц? Например: не списки[Пользователи] [Программисты] а список [Специальность] и [Люди], разница в том, в первом случае при добавлении например Руководителей требуется новый список [Руководители], а во втором случае это новая запись в списке [Специальность]. В любой книге по БД прочти раздел по правилам нормализации, и сверься со своей структурой базы, может вопросы отпадут сами.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37047305
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В таких случаях (много однотипных справочников) можно сделать 1 таблицу со сл. структурой

КодСправочника, № п/п в справочнике, ...............
100001 1 Математика
100001 2 Физика
100001 3 История
100002 1 Директор
100002 2 Учитель
100002 3 Сторож
....................................................................
....................................................................
....................................................................

Вторая таблица содержит наименования и коды справочников
100001 Справочник предметов
100002 Справочник профессий
.............................................
.............................................
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37047550
faustgreen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц.

Приведу пример:
Таблица, которая в бумажном виде выглядит так:
[код задачи]________[наименование задачи]____[пользователи]____[языки програмирования] ....
1234_______________задача 1_________________иванов, петров____FoxPro, exel
0999_______________задача 2_________________сидоров,иванов___Delphi, html
.......
Для реализации данного справочника я разбил эту таблицу на несколько, как описано выше. Затем на форму добавил грид содержащий главную таблицу, затем грид содержащий таблицу пользователей, языков программирования и так далее.


Это было сделано чтобы пользователь перемещая курсор в главном гриде видел все реквизиты текущей записи.
т.е. если пользователь в главном гриде выбрал поле с кодом задачи 0999, для приведденого выше примера, то в гриде "языки программирования" отобразилось бы 2 записи: Delphi и Html.
В итоге у меня получилась форма загромажденная гридами. Вот я и хотел спросить, правильно ли я сделал.
Какие еще есть спосбы отобразить исходную таблицу на форме ? (Хотелось бы получить вариант близкий к исходному виду, так как там данные визуально проще для восприятия(не нужно бегать глазами по всей форме, все данные расположены в 1 строке)).
При этом хотелось бы сохранить оптимальную структуру таблиц, и простоту редактирования данных.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37047579
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenЯ имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц.
Молодец, все так и подумали прочитав твой первый пост
От того как отображаются данные на форме структура их хранения никак не зависит.

faustgreenПриведу пример:
Таблица, которая в бумажном виде выглядит так:
[код задачи]________[наименование задачи]____[пользователи]____[языки програмирования] ....
1234_______________задача 1_________________иванов, петров____FoxPro, exel
0999_______________задача 2_________________сидоров,иванов___Delphi, html
Показывай на экран в таком же виде, сделай курсор, заполни и выводи в одном гриде.
Заполнение формы данными зависит от типа информации, ее важности и т.п., т.е. надо чтобы пользователь видел то что ему надо и там где ему надо.
Как оно на самом деле хранится пользователям знать не интересно.

PS Советую взять книжку по фоксу и почитать, т.к. расписывать тут то что подробно расписано в книжках по фоксу - долго и муторно.
PPS Будут конкретные вопросы - задавай.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37047710
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
faustgreenЯ имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц.
<skipped>
Это было сделано чтобы пользователь перемещая курсор в главном гриде видел все реквизиты текущей записи.
т.е. если пользователь в главном гриде выбрал поле с кодом задачи 0999, для приведденого выше примера, то в гриде "языки программирования" отобразилось бы 2 записи: Delphi и Html.

Классический случай - "как впихнуть в экран то, чего туда не влазит". Ну, к примеру, встали курсором в поле кода задачи, ну нажмите RightClick/DblClick (или чего угодно) и получите в отдельном окошке столь желанные Delphi и Html.
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37047866
Местами администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
reware,

Как вариант использовать Page Frame
...
Рейтинг: 0 / 0
Нужна ваша помощь
    #37048909
reware
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Местами администраторreware,
Как вариант использовать Page Frame
Да масса вариантов. Можно даже ToolTipText сюда прикрутить, и нажимать-то ничего не надо.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Нужна ваша помощь
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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