3.2. АНТИПАТТЕРН: ПОСТОЯННАЯ ЗАВИСИМОСТЬ ОТ ОДНОГО РОДИТЕЛЯ
Простое решение, обычно публикунмое в книгах и статьях, заключается в добавлении столбца parentid. Этот столбец ссылается на другой комментарий в той же таблице, и можно создать ограничение внешнего ключа для ввода в действие данной взаимосвязи. SQL-код для определения такой таблицы показан ниже, а схема взаимосвязей объектов приводится на рис. 3.1.
Файл примера:.Trees/anti/adjacency-list.sql
CREATE TABLE Comments (
comment_id SERIAL PRIMARY KEY,
parent_id BIGINT UNSIGNED,
bug_id BIGINT UNSIGNED NOT NULL,
author BIGINT UNSIGNED NOT NULL,
comment_date DATETIME NOT NULL,
comment TEXT NOT NULL,
FOREIGN KEY (parent_id) REFERENCES Comments(comment_id), FOREIGN KEY (bug_id) REFERENCES Bugs(bug_id), FOREIGN KEY (author) REFERENCES Accounts(account id)
Данная структура называется Списком соседства. Вероятно, это наиболее распространенная структура, которая используется разработчиками программного обеспечения для хранения иерархических данных. Ниже для примера приводятся некоторые данные, демонстрирующие иерархию комментариев и иллюстрацию дерева, показанного на следующей странице, на рис. 3.2.
comment_id parnt_id Author Comment
I NULL Фран В чем причина этой ошибки?
2 l Олли Полагаю, это указатель null.
3 2 Фраи Нет, я проверил это.
4 I Кукла Требуется проверить правильность входных данных.
5 4 Олли Да, в этом ошибка.
6 4 Фран Да, добавьте, пожалуйста, эту проверку.
7 6 Кукла Проверка устраняет ошибку.
Опубликовал vovan666
June 18 2013 12:24:49 ·
0 Комментариев ·
4544 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.