Шаблон проектирования базы данных для добавления заметок в столбцы - PullRequest
1 голос
/ 22 июля 2010

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

  1. Для каждого столбца таблиц, который нуждается в примечании, добавьте «примечание к столбцу», например:

    create table tab (id integer, A varchar(100), B varchar(200))
    

    станет:

    create table tab (id integer, A varchar(100), A_note varchar(300), B varchar(200), B_note varchar(300))
    
  2. Добавить таблицу Заметки, в которых хранятся заметки ... вот так:

    create table notes (id integer, table_name varchar(100), reference_id integer, reference_column varchar(100), note varchar(300)
    

Можете ли вы предложить мне другие способы?Если вам интересно, я использую HsqlDB.

Ответы [ 4 ]

2 голосов
/ 22 июля 2010

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

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

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

Если одна таблица неприятна, рассмотрите возможность применения шаблона к кластерам таблиц.

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

Extension

Я прочитал требование как один Примечание на столбец.

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

1 голос
/ 23 июля 2010

Вы не говорите, для чего эти записи. Если каждая заметка описывает столбец в целом, например, столбец с именем EXPIRY_DATE имеет заметку с надписью «Дата истечения срока действия билета», в HSQLDB 2.0 есть встроенное решение.

КОММЕНТАРИЙ НА MYTABLE.EXPRIRY_DATE IS 'Дата истечения срока действия билета'

И вы можете получить примечание для пары имя таблицы, имя столбца, используя SELECT в одной из таблиц INFORMATION_SCHEMA.

См. Руководство:

http://hsqldb.org/doc/2.0/guide/databaseobjects-chapt.html#N10D75

1 голос
/ 22 июля 2010

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

1 голос
/ 22 июля 2010

Да, отдельные таблицы - это путь.

Я бы сделал таблицу комментариев, например, cmnt_table или notes_table для каждой фактической таблицы.Имейте его с тем же идентификатором, что и в основной таблице, и в запросах будет легко выполнить объединение.

...