проектирование базы данных для традиционных ИИНИ-файловых данных с целостностью - PullRequest
1 голос
/ 18 мая 2009

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

Например, предположим, у меня есть таблица "ВАЛЮТА" с 100 строками. В то же время у меня есть системная настройка для «валюты по умолчанию», и она должна отображаться на одну из этих 100 строк.

Прямо сейчас я бы сохранил код валюты по умолчанию в файле конфигурации XML, ini-файле или реестре Windows. Это хорошо для данных, но нужно немного поработать, чтобы убедиться, что значения в файле XML действительно соответствуют действительным значениям внешнего ключа в базе данных.

Как это можно сделать (декларативно?) В базе данных, чтобы иерархические данные могли ссылаться и, следовательно, иметь целостность с реляционными данными?

Ответы [ 3 ]

1 голос
/ 18 мая 2009

Возможно, что таблица с 2 столбцами, ключом (или именем) и столбцом значения делает то, что вам нужно. Поместите ваши реляционные данные в нормализованные таблицы и данные типа 'config' в таблицу пар ключ / значение.

0 голосов
/ 18 мая 2009

Это невозможно сделать, потому что параметр конфигурации всегда можно обновить с помощью внешней программы, такой как текстовый редактор, regedit и т. Д. Единственный способ предотвратить это - запустить службу, которая постоянно отслеживает параметры файла или реестра и запретил любые изменения, если база данных не была запущена и проверка целостности также могла быть выполнена. Это явно излишне - правильное решение - сохранить данные конфигурации в базе данных.

0 голосов
/ 18 мая 2009

Возможно, имеет смысл сохранить значение по имени в файле конфигурации, а не использовать идентификатор внешнего ключа. Файл конфигурации может иметь «USD», тогда ваш код будет выполнять поиск по имени, чтобы получить строку в таблице CURRENCY.

...