|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
Часто сталкиваюсь с задачами, следующего вида: Есть таблица, к примеру - справочник задач: [Номер задачи] [Код задачи] [Языки программирования] [Пользователи] [Программисты] и тп. 1 2 3 4 5 Причем поля 3,4,5 - могут содержать несколько значений. Такие таблицы я обычно разбиваю на несколько: Таблица А [Номер задачи] [Код задачи] 1 2 Таблица Б [Id] [Код задачи] [Язык программирования] 1 2 3 Таблица В [Id] [Код задачи] [Пользователь] 1 2 3 и тп. В итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места. Есть ли какие альтернатывные способы реализации данных задач ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 11:20 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreen, Как авторы любительских писем: "Дорогие ученые. У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит". Что есть id ? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 11:41 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
id - счетчик, т.е. номера записей: 1 иванов 2 петров 3 сидоров ...... ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 11:47 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места. В теории баз данных это называется нормализацией, и делается в т.ч. для уменьшения занимаемого объема. Может у тебя много помеченных на удаление записей? они тоже место занимают. faustgreenЕсть ли какие альтернатывные способы реализации данных задач ? За последние полсотни лет ничего лучше не придумано. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 13:54 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreen, Если проблема в том, что множество мелких справочников становится трудно управляемым - через некоторое время уже трудно вспомнить имена таблиц и назначение справочников - можно собрать их в один файл. Я, к примеру, храню все мелкие и редко изменяемые справочники в формате XML в поле MEMO (BLOB) одного таблицы - каталога служебных справочников. Когда в каком-либо справочнике возникает надобность, он создается в виде курсора, при необходимости - индексируется. Такой подход не накладывает ограничений на структуру справочников и облегчает их поддержание в актуальном состоянии. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 15:44 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места. В смысле места на диске ? При нынешних дисках это особо не должно волновать. Если проблема в том, что этих "мелких" сильно много - тоже не есть причина для волнений, надо аккуратно формировать и запоминать их имена, чтобы потом обратиться к нужному. У меня в проекте формируется около сотни временных таблиц, никаких проблем. В зависимости от задачи, можно обойтись и курсорами, обращаясь к ним по алиасу. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 16:03 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreenВ итоге получается форма с 1 главной таблицей и кучей мелких. И иногда получается что мелкие таблицы занимают очень много места. Есть ли какие альтернатывные способы реализации данных задач ?Как писали выше, этот процесс в проектировании БД называется нормализацией и он плавно движется (при выполнении разработчиком правил приведения таблиц к нормальным формам) к созданию списков из двух полей: кода и описания. Иногда возникают моменты, когда разработчик идет на обратный процесс денормализации таблиц. По этим вопросам просто целый лес аргументированных мнений. Не ясно по каким причинам у тебя волнения по кол-ву таблиц, ведь все они нужны для описания предметной области, или как? Может просто ошибки в отражении предметной области при проектировании таблиц? Например: не списки[Пользователи] [Программисты] а список [Специальность] и [Люди], разница в том, в первом случае при добавлении например Руководителей требуется новый список [Руководители], а во втором случае это новая запись в списке [Специальность]. В любой книге по БД прочти раздел по правилам нормализации, и сверься со своей структурой базы, может вопросы отпадут сами. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.01.2011, 17:55 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
В таких случаях (много однотипных справочников) можно сделать 1 таблицу со сл. структурой КодСправочника, № п/п в справочнике, ............... 100001 1 Математика 100001 2 Физика 100001 3 История 100002 1 Директор 100002 2 Учитель 100002 3 Сторож .................................................................... .................................................................... .................................................................... Вторая таблица содержит наименования и коды справочников 100001 Справочник предметов 100002 Справочник профессий ............................................. ............................................. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2011, 11:36 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
Я имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц. Приведу пример: Таблица, которая в бумажном виде выглядит так: [код задачи]________[наименование задачи]____[пользователи]____[языки програмирования] .... 1234_______________задача 1_________________иванов, петров____FoxPro, exel 0999_______________задача 2_________________сидоров,иванов___Delphi, html ....... Для реализации данного справочника я разбил эту таблицу на несколько, как описано выше. Затем на форму добавил грид содержащий главную таблицу, затем грид содержащий таблицу пользователей, языков программирования и так далее. Это было сделано чтобы пользователь перемещая курсор в главном гриде видел все реквизиты текущей записи. т.е. если пользователь в главном гриде выбрал поле с кодом задачи 0999, для приведденого выше примера, то в гриде "языки программирования" отобразилось бы 2 записи: Delphi и Html. В итоге у меня получилась форма загромажденная гридами. Вот я и хотел спросить, правильно ли я сделал. Какие еще есть спосбы отобразить исходную таблицу на форме ? (Хотелось бы получить вариант близкий к исходному виду, так как там данные визуально проще для восприятия(не нужно бегать глазами по всей форме, все данные расположены в 1 строке)). При этом хотелось бы сохранить оптимальную структуру таблиц, и простоту редактирования данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2011, 14:25 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreenЯ имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц. Молодец, все так и подумали прочитав твой первый пост От того как отображаются данные на форме структура их хранения никак не зависит. faustgreenПриведу пример: Таблица, которая в бумажном виде выглядит так: [код задачи]________[наименование задачи]____[пользователи]____[языки програмирования] .... 1234_______________задача 1_________________иванов, петров____FoxPro, exel 0999_______________задача 2_________________сидоров,иванов___Delphi, html Показывай на экран в таком же виде, сделай курсор, заполни и выводи в одном гриде. Заполнение формы данными зависит от типа информации, ее важности и т.п., т.е. надо чтобы пользователь видел то что ему надо и там где ему надо. Как оно на самом деле хранится пользователям знать не интересно. PS Советую взять книжку по фоксу и почитать, т.к. расписывать тут то что подробно расписано в книжках по фоксу - долго и муторно. PPS Будут конкретные вопросы - задавай. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2011, 14:59 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
faustgreenЯ имел ввиду. что не хватает места на форме для размещения гридов мелких таблиц. <skipped> Это было сделано чтобы пользователь перемещая курсор в главном гриде видел все реквизиты текущей записи. т.е. если пользователь в главном гриде выбрал поле с кодом задачи 0999, для приведденого выше примера, то в гриде "языки программирования" отобразилось бы 2 записи: Delphi и Html. Классический случай - "как впихнуть в экран то, чего туда не влазит". Ну, к примеру, встали курсором в поле кода задачи, ну нажмите RightClick/DblClick (или чего угодно) и получите в отдельном окошке столь желанные Delphi и Html. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2011, 17:01 |
|
Нужна ваша помощь
|
|||
---|---|---|---|
#18+
reware, Как вариант использовать Page Frame ... |
|||
:
Нравится:
Не нравится:
|
|||
06.01.2011, 19:59 |
|
|
start [/forum/topic.php?fid=41&msg=37046656&tid=1584644]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 16ms |
total: | 153ms |
0 / 0 |