【问题标题】: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 答案。