Начальник сообщает вам, что у него возникли проблемы с генерированием отчета, так как даты вводились в разных форматах, а порой задавалась символьная строка, не являвшаяся датой. В обычной базе данных это можно предотвратить, если объявить столбец с типом данных DATE.
Файл примера:. ?Л V/anti/insert-plain.sql
INSERT INTO Issues (date_reported) VALUES ('banana'); — ОШИБКА!
В EAV-структуре тип данных столбца IssueAttributes. attr_value является обычно символьной строкой для размещения всех возможных атрибутов в одном столбце. Поэтому здесь нет способа отбраковки недопустимых данных.
Файл примера:. Е4 V/anti/insert-eav.sql
INSERT INTO IssueAttributes (issue_id, attr_name, attr_value) VALUES (1234, 'date_reported', 'banana'); — He ошибка!
Некоторые пытаются расширить EAV-структуру путем определения отдель-
ного столбца attrvalue для каждого типа данных SQL, оставляя значение
NULL в неиспользуемых столбцах. Это дает возможность использовать типы
данных, но дополнительно усложняет запросы: V
Файл примера:.ЕА V/anti/'data-types.sql
SELECT issue_id, COALESCE(attr_value_date, attr_value_ datetime,
attr_value_integer, attr_value_numeric, attr_value_float, attr_value_string, attr_value_text) AS "date_reported"
FROM IssueAttributes
WHERE attr_name = 'date_reported';
Для поддержки пользовательских типов данных или доменов потребуется добавить еще больше столбцов.
Опубликовал vovan666
June 18 2013 12:26:25 ·
0 Комментариев ·
3665 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.