【问题标题】:Sql-server how to store database with this relationSql-server如何用这种关系存储数据库
【发布时间】:2013-12-09 09:39:01
【问题描述】:

我不知道如何创建这样的数据库 示例我有很多项目类别 我有人员表,他们拥有一些物品。

水果桌:

标识项

1 个苹果

2 葡萄

3 樱桃

小吃桌:

标识项

1 个芯片

2 热狗

人员表

身份证名称

1 詹姆斯

2 杰克

我想创建类似的东西

詹姆斯有苹果,芯片 杰克有苹果,热狗

所以请给我一些方法来创建这个数据库

非常感谢您的任何回答

【问题讨论】:

    标签: sql-server database-design relationship


    【解决方案1】:

    这是多对多的关系(一个人可以拥有多个项目,每个项目可以由多个人拥有)。但首先,我认为不需要有两张小吃和水果桌。您最好合并它们并添加“类型”。像这样:

    create table Food (
      id int,
      item varchar(255),
      typeid int
    );
    create table FoodType (
      id int,
      type varchar(255)
    );
    

    然后,您必须添加用于存储人员和食物 ID 的中间表:

    create table FoodPerson (
      PersonId int,
      FoodId int
    );
    

    从此结构中选择的示例将是:

    select
       p.Name, f.Item, t.Type
    from Person p
    join FoodPerson fp
      on p.id=fp.personid
    join Food f
      on f.id=fp.foodid
    join FoodType t
      on t.id=f.typeid
    

    【讨论】:

      【解决方案2】:

      我认为弗里克是对的。

      否则,您必须再创建两个表,例如 PersonFruit 和 Personsnack。 但是,如果您的类型(如蔬菜)增加,那么再增加一张这样的桌子。

      所以我想我会选择 frikozoid 答案。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 2010-10-26
        • 1970-01-01
        • 1970-01-01
        • 2023-03-25
        • 1970-01-01
        相关资源
        最近更新 更多