У меня есть следующий проект базы данных:Должен ли я нормализовать этот проект базы данных дальше?
TABLE [Document]
[DocumentId] [int] NOT NULL, --Primary Key
[Status] [bit] NULL,
[Text] [nvarchar](max) NULL,
[FolderPath] [nvarchar](max) NULL
TABLE [Metadata]
[MetadataId] [int] IDENTITY(1,1) NOT NULL, -- Primary Key
[DocumentId] [int] NOT NULL, -- Foreign Key Document.DocumentId (1:1 relationship)
[Title] [nvarchar](250) NOT NULL,
[Author] [nvarchar](250) NOT NULL
TABLE [Page](
[PageId] [int] IDENTITY(1,1) NOT NULL, -- Primary Key
[DocumentId] [int] NOT NULL, -- Foreign Key Document.DocumentId (1:N Relationship)
[Number] [int] NOT NULL,
[ImagePath] [nvarchar](max) NULL,
[PageText] [nvarchar](max) NOT NULL
TABLE [Word](
[WordId] [int] IDENTITY(1,1) NOT NULL, -- Primary Key
[PageId] [int] NOT NULL, -- Foreign Key Page.PageId (1:N Relationship)
[Text] [nvarchar](50) NOT NULL
TABLE [Keyword](
[KeywordId] [int] IDENTITY(1,1) NOT NULL, -- Primary Key
[Word] [nvarchar](50) NOT NULL
TABLE [DocumentKeyword](
[Document_DocumentId] [int] NOT NULL, -- Foreign Key Document.DocumentId (N:N Relationship)
[Keyword_KeywordId] [int] NOT NULL -- Foreign Key Keyword.KeywordId
Я использую Entity Framework Code First, чтобы создать базу данных.
Должен ли я нормализовать дизайн своей базы данных дальше? т. е. создавать таблицы ссылок между документами и страницей, документами и метаданными и т. д.? Если да, есть ли способ заставить Entity Framework создавать таблицы отношений для меня, так что мне не нужно включать их в мои модели? Я пытаюсь научиться делать это правильно и наиболее эффективно.
спасибо.
1. Должен ли я создать таблицу Автор? У меня также есть другие поля, такие как Collector, Owner и т. Д., Не показанные выше. Нужно ли мне создавать таблицы для каждого, или я могу использовать таблицу «Лицо»? 3. Эта база данных предназначена для OCR'ing изображений документов. Таблица слов содержит изображения и положение слов в документе. В интересах краткости я пропустил столбцы. 4. Имена столбцов были созданы автоматически с помощью сущности. Есть ли способ указать конкретное имя? – Tums
Я не могу принимать решения за вас, так как я не знаю спецификации. Если вы разрешаете более одного автора на документ, я думаю, лучше всего создать таблицу автора. Если вы не храните гораздо больше информации, чем просто имя и фамилию, и то же самое верно для всех других лиц в вашей базе данных, вы можете решить объединить таблицы. Но я бы лично начал с моделирования каждого вида человека как отдельного объекта. Сливать их легко, но расщепления нет. Я не возражаю против того, какое соглашение об именах вы используете, но я могу только рекомендовать, чтобы он был последовательным. – Ronald
Спасибо. Я удалил «людей» и поместил их в новые таблицы. Мне пришлось сделать еще пару изменений, но ваши отзывы помогли. – Tums