SQL の初心者です。ブログを作成しようとしています。計画では、1 つのブログに 1 つの AUTHOR しか持てず、1 つのブログに複数のブログを持つことができ、1 つのブログに複数の画像を含めることができます。
SQLマッピングでこれとの関係がどのようになるかを理解してもらえますか??
Create table Author
(
Id int
, Name nvarchar(max)
);
Create table Image
(
Id int
,ImagePath nvarchar(max)
);
Create table Blog
(
Id int
,Name nvarchar(max)
,AuthorId int
);
Create table BlogImages
(
Id int
,BlogId int
,ImageId int
);
ALTER TABLE Blog
ADD FOREIGN KEY (AuthorId)
REFERENCES Author(Id);
ALTER TABLE BlogImages
ADD FOREIGN KEY (BlogId)
REFERENCES Blog(Id);
ALTER TABLE BlogImages
ADD FOREIGN KEY (ImageId)
REFERENCES Image(Id);
上記の関係では、 と を持つテーブルBlogImages
がblogId
ありますImageId
。つまり、単一imageID
の に複数の を含めることができるblogIds
ため、要件を満たす同じ画像を使用する複数のブログ
著者 ----> ブログ -------> 画像..
ということで、プランの説明を少し。
著者のすべての詳細を含むテーブル authors があります。PK は author_id です。ブログテーブルにはブログの詳細が含まれます。Blog_id は PK であり、author テーブルによって参照される外部キー author_id を持ちます。画像テーブルには画像の詳細が含まれます。image_id は pk であり、blog テーブルによって参照される外部キー blog_id を持ちます。
この動作は、1 対多の関係として知られています。
ID を使用して author テーブルを設定します。ブログ テーブルでブログの一意の ID を使用し、著者 ID を列として含めます。最後に、画像テーブルにブログ ID と、場合によっては著者 ID を含めます。次のようなものを取得する必要があります。
Author id -------------> Blog Id -------------->Image ID
Other Author details AuthorID Blog Id
Other Blog details Author ID
Other Image data
これにより、作成者 ID またはブログ ID で SQL Join を使用して、次のテーブルのデータを取得できます。