Отношение один ко многим для изображений в SQL Server - PullRequest
3 голосов
/ 28 апреля 2011

Я использую SQL Server. На данный момент в моей базе данных есть две таблицы.

Одна таблица - CmsContents, которая представляет страницы для моего блога, вторая таблица - CmsImagesContents, которая собирает информацию об изображениях, связанных с конкретной страницей.

Отношение между двумя таблицами имеет тип One to Many, на одной странице может быть много изображений, но на одном изображении может быть только одна страница.

Я понимаю, что этот дизайн довольно прост, и я начал осознавать некоторые ограничения, вот мои вопросы:

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

  • Не могли бы вы предложить мой дизайн для этого сценария? Вы знаете лучшую альтернативу?

Спасибо за вашу помощь!

CREATE TABLE [dbo].[CmsImagesContents](
   [ImageContentId] [int] IDENTITY(1,1) NOT NULL,   
   [ContentId] [int] NOT NULL,
   [RowGuid] [uniqueidentifier] NOT NULL,   
   [Title] [varchar](64) NOT NULL,
   [AltTag] [nvarchar](256) NOT NULL,
   [Caption] [nvarchar](256) NOT NULL,
   [CopyrightNote] [nvarchar](256) NOT NULL,  

   CONSTRAINT [PK_CmsImagesContents_ImageContentId]
   PRIMARY KEY CLUSTERED  ([ImageContentId] ASC)
)


ALTER TABLE [dbo].[CmsImagesContents] WITH CHECK 
 ADD CONSTRAINT [FK_CmsImagesContents_ContentId]
  FOREIGN KEY([ContentId]) REFERENCES [dbo].[CmsContents] ([ContentId]) 

1 Ответ

1 голос
/ 28 апреля 2011

Вы можете создать пересекающуюся таблицу.Если бы я называл таблицы, они бы назывались

    Content
    --------
    ContentID (PK)
    Title
    Text
    etc...

    Image
    -----
    ImageID (PK)
    Size
    Title
    etc....

    ContentImages
    --------------
    ContentImagesID (PK)
    ContentID
    ImageID

А теперь добавьте уникальное ограничение на imageID в таблице ContentImages (чтобы он мог появляться только в пересекающейся) таблице)

СейчасВы можете добавлять контент и изображения по своему желанию, а затем связывать изображение с контентом, заполняя пересекающуюся таблицу

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...