现在有3个表,分别是:
items表(产品表), shops表(商家表) , sub_shops表(商家门店表)
一个shops(商家表)有多个门店表,一个(sub_shops)门店有多个产品, 痛一个商家的多个门店也可能有相同的产品.
现在的问题是如果多个门店有同一个产品,items表中应该用一条数据存(增加一个门店的字段,用逗号把多个门店隔开)还是用多条数据来存(每一个items对应一个门店,但是如果有很多分店都用这一个产品的话,就会出现很多重复的数据,只有其中的门店id不同,其他数据全部相同).
大家帮忙看看还有没有其他更好的方式数据库
items表(产品表), shops表(商家表) , sub_shops表(商家门店表)
一个shops(商家表)有多个门店表,一个(sub_shops)门店有多个产品, 痛一个商家的多个门店也可能有相同的产品.
现在的问题是如果多个门店有同一个产品,items表中应该用一条数据存(增加一个门店的字段,用逗号把多个门店隔开)还是用多条数据来存(每一个items对应一个门店,但是如果有很多分店都用这一个产品的话,就会出现很多重复的数据,只有其中的门店id不同,其他数据全部相同).
大家帮忙看看还有没有其他更好的方式数据库
因为是严格1对多,门店表有商家id就行了
产品和门店是多对多,需要一个产品和门店对照表:item_sub表,字段为产品id和门店id
--门店 1对多 产品
--产品 1对多 门店--商家
if exists(select * from sysobjects where name = 'shops')
drop table shops
go
create table shops
(
id nvarchar(10) primary key,
shopsName nvarchar(20)
)
go
if exists(select * from sysobjects where name = 'sub_shops')
drop table sub_shops
go
create table sub_shops
(
id nvarchar(10) primary key,
sub_shopsName nvarchar(20),
shopsid nvarchar(10) foreign key references shops(id)--外键
)
go
if exists(select * from sysobjects where name = 'items')
drop table items
go
create table items
(
id nvarchar(10) primary key,
itemsName nvarchar(20)
)
go
if exists(select * from sysobjects where name = 'subItems')
drop table subItems
go
create table subItems
(
id int primary key identity(1,1),
sub_shopsid nvarchar(10) foreign key references sub_shops(id) ,--外键
itemsid nvarchar(10) foreign key references items(id)--外键
)
goinsert into shops values('WJF001','万家福')
insert into shops values('HRWJ001','华润超市')goinsert into sub_shops values('TJFD001','唐家分店','WJF001')
insert into sub_shops values('XZFD001','香洲分店','WJF001')goinsert into items values('DHP001','蛋黄派')
insert into items values('FBM001','方便面')GO
-- 一个产品对应多个门店
insert into subItems values('TJFD001','DHP001')
insert into subItems values('XZFD001','DHP001')
--多个产品对应一个门店
insert into subItems values('XZFD001','DHP001')
insert into subItems values('XZFD001','FBM001')goselect * from shops
select * from sub_shops
select * from items
select * from subItems