Схема базы данных для связанных текстов - PullRequest
0 голосов
/ 23 ноября 2010

У меня есть задача создания базы данных Библии, не связанной с какой-либо группой;)

Проблема в том, что у меня есть 1 стих из Библии, 18 различных комментариев к стиху из Библии, 5 комментариев ккомментарий.Планируется сделать приложение WPF, которое будет доступно, чтобы у пользователей был текст, помеченный комментариями других комментаторов на боковой стороне экрана.

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

Мне нужно будет предварительно скомпилировать все в sql, а затем экспортировать в SQLite.Я разбил данные на следующую форму.

BOOK
CHAPTER
PARAGRAPH
VERSE
CommentatorName
CommentatorComment
VerseINComment location

Итак, у меня есть следующие проблемы

1: данные вводятся в застойной форме (стих будет вводиться несколько раз, нотолько один комментарий от того же автора) У нас будет блок данных в базе данных.Мне нужно будет обработать данные в комментариях к цитатам стиха.Как это должно быть сделано?Должны ли все ДАННЫЕ быть введены в базу данных, а затем запустить программу для поиска в базе данных, или я могу каким-то образом использовать tsql для поиска комментариев в комментариях к стихам и затем пометить их?сохранить местоположение VerseINComment местоположение?То есть я думал, что какая-то форма картографирования, как они используют в реальных картах, 1,1,1,1 будет означать GENISIS, ГЛАВА 1, абзац 1, ВЕРСИЯ 1 (ФАКТИЧЕСКИЙ = В начале ……).Мы будем благодарны за любые мысли по этому поводу.

ETT (мозговой центр-призрак)

Ответы [ 2 ]

0 голосов
/ 04 января 2011

Я бы, вероятно, использовал нечто подобное в качестве базовой структуры данных.

-- (UI1) = UniqueIndex1

Book (Id (PK), Name)
Verse (Id (PK), BookId (FK / UI1), ChapterNo (UI1), ParagraphNo (UI1), 
        VerseNo (UI1), VerseText)
Commentator (Id (PK), Name)
Comment (Id (PK), VerseId (FK), CommentatorId (FK), CommentText)
CommentOnComment (Id (PK), CommentorId (FK), CommentId (FK), CommentText)

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

Наличие комментариев к комментариям намекает на какое-то текущее диалоговое окно, так что вы, вероятно, захотите добавить какой-либо способ определения порядка, в котором они были сделаны (например, дата создания записи / номер последовательности).Я предположил, что вы не ищете «комментарии к комментариям к комментариям», которые имеют древовидную структуру и требуют таблицу со ссылками.

Если вы хотите предоставить механизм для простой ссылки настих (1,1,1,1 как предложено) это должно быть сопоставлено при вводе данных в соответствующий идентификатор из таблицы стихов.В этом случае вам следует помнить об идентификаторе, присвоенном каждой Книге.

Сравнения между выпусками?

Если ваше приложение позволит комментировать / сравнивать разные издания, вы можетеположить издание в виде таблицы вместе с книгой:

Edition (Id (PK), Name)
Book (Id (PK), Name)
Verse (Id (PK), EditionId (FK / UI1), BookId (FK / UI1), ChapterNo (UI1),  
        ParagraphNo (UI1), VerseNo (UI1), VerseText)

Я не эксперт, когда дело доходит до различий между изданиями Библии, но вы сможете легко определить один и тот же отрывок в разных изданиях, отфильтровавна BookId, CapterNo, ParagraphNo, VerseNo, если вы этого не хотите.

Надеюсь, это поможет, Бретт.

0 голосов
/ 23 ноября 2010

Лучше не допускать попадания неверных данных в базу данных, а не удалять их после факта.

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

...