Невозможность принудительного ввода целостности на уровне ссылок
В обычной базе данных можно ограничить диапазон некоторых атрибутов путем определения внешнего ключа для таблицы поиска. Например, атрибут status ошибки или проблемы должен быть одним из значений короткого списка в таблице BugStatus.
Файл примера: V/anti/foreign-key-plain.sql
CREATE TABLE Issues (
issue_id SERIAL PRIMARY KEY,
-- другие столбцы
status VARCHAR(20) NOT NULL DEFAULT 'NEW,
FOREIGN KEY (status) REFERENCES BugStatus (status) ) ;
В EAV-структуре невозможно наложить этот тип ограничений на столбец attr_value. Ограничение целостности на уровне ссылок применяется в таблице к каждой строке.
Файл примера: ?Х V/anti/foreign-key-eav.sql
CREATE TABLE IssueAttributes (
issue_id BIGINT UNSIGNED NOT NULL,
attr_name VARCHAR(100) NOT NULL,
attr_value VARCHAR(IOO),
FOREIGN KEY (attr_value) REFERENCES BugStatus (status)) ;
Если определить данное ограничение, им будет принудительно устанавливаться соответствие каждого атрибута значению в BugStatus, а не только атрибута status.
Опубликовал vovan666
June 18 2013 12:26:27 ·
0 Комментариев ·
3432 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.