Как мне оформить эту таблицу? - PullRequest
0 голосов
/ 16 декабря 2009

Поскольку у меня недостаточно памяти, я хочу написать простое приложение для хранения информации о столбцах таблицы, особенно о значении столбцов таблицы. Теперь у меня проблема с дизайном стола. Я планирую сделать таблицу иметь следующие столбцы:

id, table_name, column_name, data_type, is_pk, meaning

Но этот дизайн не может выразить отношение внешнего ключа . Например: table1.column1 и table2.column3 и table8.column5 у всех одинаковый тип данных и одно и то же значение. Как я могу изменить дизайн моей таблицы, чтобы выразить эту информацию (взаимосвязь)?

Большое спасибо!

PS: На самом деле, недавно я работаю над устаревшим приложением. База данных плохо спроектирована. Отношение внешнего ключа выражается не на уровне базы данных, а на уровне приложения. Теперь мой начальник не позволяет нам изменять базу данных. Нам просто нужно, чтобы приложение работало. Поэтому я не могу выполнять какую-либо работу с базой данных напрямую.

Ответы [ 8 ]

3 голосов
/ 16 декабря 2009

В зависимости от вашей СУБД, вы можете использовать комментарии к таблице / столбцу, чтобы записать значение каждого из этих столбцов. Большинство СУБД позволяют выполнять какие-то аннотации.

Если он должен быть у вас на столе, у вас есть несколько вариантов.

  • Свободный текст Если это просто для помощи памяти, на самом деле он не должен быть машиночитаемым. Это облегчает вам чтение / использование напрямую.
  • fk_id Сохраните идентификатор поля, в которое отображается внешний ключ. Затем вы можете определить представление, которое извлекает столбец значений из этого внешнего ключа.
  • Таблица значений Сохраните значение в качестве идентификатора в отдельной таблице и используйте представление для упрощения работы с ним.
  • Создать документ Вместо этого сохраните его в документе. Таким образом, вы можете распечатать его и иметь под рукой.

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

1 голос
/ 16 декабря 2009

Я не вижу причины, по которой вам следует реализовать какое-то приложение для хранения там информации. Вы также можете использовать что-то вроде OneNote или любого другого доступного органайзера, вики-сайта для разработчиков и т. Д .: существует множество способов хранить информацию таким образом, чтобы она пригодилась, когда вы будете искать ее в будущем.

Если вы можете внести некоторые внутренние изменения, вы можете изменить имена ограничений ключей на читаемый шаблон, например table1_colName_table2_colName .

И, по крайней мере, вы можете сделать какую-нибудь диаграмму, сделанную вручную или с помощью какого-нибудь дизайнерского приложения.

Если все это не решит вашу проблему, вам понадобятся дополнительные сведения о том, что именно вам нужно решить:)

1 голос
/ 16 декабря 2009

Я знаю, что это не отвечает на ваш вопрос напрямую, но как насчет использования диаграммы базы данных?
У меня также плохая память (возраст, я думаю), и у меня всегда есть обновленная диаграмма на моей стене.

Вы можете показать все таблицы, поля и внешние ключи, а также добавить комментарии.
Я использую конструктор базы данных PowerAMC ​​(также известный как PowerDesigner от Sybase), он также генерирует сценарий SQL для создания базы данных, возможно, не очень полезный для устаревших баз данных, хотя он будет выполнять обратный инжиниринг базы данных и создавать диаграмму автоматически (это может занять некоторое время сделать диаграмму удобочитаемой).

1 голос
/ 16 декабря 2009

FWIW, я делаю это довольно часто, и лучшее "простое приложение", которое я нашел, - это электронная таблица.

Я использую страницу для определения таблицы / столбца и дополнительные страницы, когда они мне нужны, для таких вещей, как отношения FK, значения поиска и т. Д.

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

Возможность индексирования электронной таблицы также очень полезна, если у вас есть большое количество таблиц для работы.

1 голос
/ 16 декабря 2009

Если вам не разрешено редактировать базу данных, то, вероятно, вы создаете ее в другой автономной СУБД. Я не думаю, что это то, что вы можете достигнуть просто, и вам может быть лучше просто записать это в текстовом документе.

Я думаю, что вам нужно более одного стола. Если вы создаете таблицу таблиц:

id, table_name, meaning

А затем таблица столбцов:

id, column_name, datatype, meaning

Затем вы можете создать таблицу ссылок:

table_id, column_id, is_pk, meaning

Это позволит вам иметь один и тот же столбец, связанный с более чем одной таблицей - таким образом выражая ваши внешние ключи. Хотя, как я уже сказал выше, это может быть больше усилий, чем стоит.

1 голос
/ 16 декабря 2009

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

id, fk_name, primary_table_id, foreign_table_id

и добавьте столбец fk_id, чтобы связать поля, используемые в отношении внешнего ключа. Это работает как для внешнего ключа одного столбца, так и для составного внешнего ключа.

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

1 голос
/ 16 декабря 2009

Почти все СУБД позволяют прикреплять описания или комментарии к определениям таблиц, индексов и столбцов.

Oracle:

COMMENT ON COLUMN employees.job_id  IS 'abbreviated job title';

Если вы зададите отношения внешнего ключа как часть схемы, база данных будет отслеживать их и отображать их для вас.

1 голос
/ 16 декабря 2009

Я бы просто добавил к вашему дизайну столбец "FK_Column_ID", который будет содержать ссылку на идентификатор столбца в случае ограничения FK.

Другим способом будет создание дубликата вашей БД в виде DBDefinitions или чего-то подобного.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...