代码之家  ›  专栏  ›  技术社区  ›  Rosamunda

mySQL数据库结构的两个示例,哪一个更有效并保持数据完整性?

  •  1
  • Rosamunda  · 技术社区  · 7 年前

    我正在为一个小博客创建一个mySQL数据库。这个博客将有不同类型的文章,如“公共利益”、“DIY”等。

    我的问题是关于如何组织数据库结构:我应该为文章创建一个表,为类型创建一个表,并创建一个连接这两个项目的第三个表吗?或者我应该只创建前两个表,并在articles表中添加一个字段,指出types表的id号吗?

    备选案文1:

    CREATE TABLE articles(
        id int unsigned not null auto_increment primary key,
        title varchar(300) NULL,
        body TEXT NULL
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE articleType(
        id int unsigned not null auto_increment primary key,
        name char(200) NULL
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO `articleType` (`name`) VALUES
    ('public interest'),
    ('DIY')
    
    CREATE TABLE articlesArticleType (
        ID int unsigned not null auto_increment primary key,
        typeID int not null,
        articleID int not null
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    

    备选案文2:

    CREATE TABLE articles(
        id int unsigned not null auto_increment primary key,
        title varchar(300) NULL,
        body TEXT NULL,
        articleType int NOT NULL DEFAULT 1
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    CREATE TABLE articleType(
        id int unsigned not null auto_increment primary key,
        name char(200) NULL
    )ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    INSERT INTO `articleType` (`nombre`) VALUES
    ('public interest'),
    ('DIY')
    

    在第二种情况下,我只需要两张桌子。哪种方法更有效并保持数据完整性?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Simrandeep Singh    7 年前

    Articles and Types

    1. One to One
    2. One to Many
    3. Many to Many

    选项1将满足以下条件: One to Many Many to Many One to One 基数。