确定表结构

时间:2019-08-18 18:46:25

标签: sql entity-relationship

我想为动漫创建数据库。这是我的ER结构: https://ibb.co/ctRk8f6

有什么改善建议吗?

每个动漫的形象,与品牌和剧集的关系都有斑点,每个剧集可能有多个链接和与标签的关系。

我想知道这种结构是否良好,还是应该为图像或其他提示制作单独的表格

CREATE TABLE Brand
(
    id INT NOT NULL,
    name INT NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE Tag
(
    id INT NOT NULL,
    name INT NOT NULL,
    PRIMARY KEY (id)
);

CREATE TABLE Anime
(
    id INT NOT NULL,
    name INT NOT NULL,
    img INT NOT NULL,
    id INT,
    PRIMARY KEY (id),
    FOREIGN KEY (id) REFERENCES Brand(id)
);

CREATE TABLE Episode
(
    order INT NOT NULL,
    rating INT NOT NULL,
    date INT NOT NULL,
    id INT NOT NULL,
    PRIMARY KEY (order, id),
    FOREIGN KEY (id) REFERENCES Anime(id)
);

CREATE TABLE Link
(
    link INT NOT NULL,
    host INT NOT NULL,
    order INT NOT NULL,
    id INT NOT NULL,
    PRIMARY KEY (link, order, id),
    FOREIGN KEY (order, id) REFERENCES Episode(order, id)
);

CREATE TABLE TagOfAnime
(
    id INT NOT NULL,
    id INT NOT NULL,
    PRIMARY KEY (id, id),
    FOREIGN KEY (id) REFERENCES Anime(id),
    FOREIGN KEY (id) REFERENCES Tag(id)
);

1 个答案:

答案 0 :(得分:0)

这里有几个问题:

  • 为什么所有类型均为INT?我假设name可能是某个最大长度nvarchar的{​​{1}}?
  • 您的nvarchar(200)表有两列,名为TagOfAnime。这是行不通的。如果它们是对idtag表的主键的引用,则应这样命名它们:AnimeTag_id
  • 我不会命名表Anime_id。什么是“链接”?我将使其更具描述性。
  • 通常,如果在另一个表中有与单个行相关联的多个项目,则添加一个表-就像处理Animes的标签一样。否则,如果数据可以出现在基表的单行的其他列中,则请合并表以避免复杂性。 除此之外,请问您陷入困境的具体问题,我相信有人会帮助您。