我必须按如下方式构建数据库:
我们有一个名为Organization的表。组织可以销售一种或多种产品。然后,我有一个名为Products的表,其中列出了产品名称,成本和销售量。
如何创建一个关系,其中organization.product可以包含对products表中多行的引用?
我想我可能需要创建另一个表吗?
谢谢!
答案 0 :(得分:3)
假设您的组织和产品表格中包含类似的内容。
Organization
Id (Primary Key)
Name
....
Product
Id (Primary Key)
Name
Cost
....
然后,您将创建一个这样的连接表,将您的组织链接到产品。
OrganizationProduct
Id (Primary Key)
OrganizationId (Foreign Key to Organization Table)
ProductId (Foreign Key to Product Table)
答案 1 :(得分:1)
您要在此处执行的操作是有一个表格代表您的产品,在该表格中,其中一个字段应代表具有该产品的组织,称为org_id。
然后在您的组织表中,您将有一个id列与产品表中的org_id连接。
例如:
Products:
id int
org_id int
name varchar
colour varchar
.....
any other information about products
Organisations:
id int
name varchar
type varchar
...
other organisation details
现在,当您要为每个公司列出所有产品时:
SELECT products.name, organisations.name
FROM products
JOIN organisations
ON products.org_id = organisations.id;
新信息,产品可属于多个组织。现在你需要一个名为organisationProducts的表来充当两个表之间的中介并创建多对多的关系:
Products:
id int
name varchar
Organisations:
id int
name varchar
OrgnisationProducts:
id int
Org_id
Prod_id
您将prod_id加入到products.id和org_id加入organisations.id
答案 2 :(得分:0)
您想要的是一个关联表。我们称它为OrgProduct(我用单数命名所有表格;有些商店将它们命名为复数,但要保持一致)。
OrgProduct至少将组织密钥和产品密钥作为列,两个密钥的组合将成为OrgProduct的关键。
如果存在关系的属性,例如组织销售产品的权利到期的日期,则这些属性也将成为此表中非关键列的候选对象。