Database design 数据库设计:如何设计数据库以避免同一产品的重复条目?
我有一张桌子的产品和尺寸。每个产品可以有多种尺寸。如何设计数据库以避免相同产品的重复条目?处理多个关系的典型方法是使用一个名为product_Size的映射表,该表包含每个表的主键Database design 数据库设计:如何设计数据库以避免同一产品的重复条目?,database-design,Database Design,我有一张桌子的产品和尺寸。每个产品可以有多种尺寸。如何设计数据库以避免相同产品的重复条目?处理多个关系的典型方法是使用一个名为product_Size的映射表,该表包含每个表的主键 create table Product ( id uniqueidentifier not null, name varchar(255), primary key (id)) create table Size ( id int, name varchar(255),
create table Product (
id uniqueidentifier not null,
name varchar(255),
primary key (id))
create table Size (
id int,
name varchar(255),
primary key (id))
create table Product_Size (
productId uniqueidentifier,
sizeId int,
primary key (productId, sizeId),
foreign key (productId) references Product(id),
foreign key (sizeId) references Size(id))
多对多关系的典型方法是使用一个名为Product_Size的映射表,该表包含每个表的主键
create table Product (
id uniqueidentifier not null,
name varchar(255),
primary key (id))
create table Size (
id int,
name varchar(255),
primary key (id))
create table Product_Size (
productId uniqueidentifier,
sizeId int,
primary key (productId, sizeId),
foreign key (productId) references Product(id),
foreign key (sizeId) references Size(id))
视情况而定,每个产品可以有多种尺寸,但不同的产品可以有相同的尺寸吗 如果他们不能,那么您就有一个一对多关系,您需要一个ProductSize表来保存产品的主键
ProductSize(SizeID、ProductID、Size)
如果可以,那么您就有了一个多对多关系,您可以通过拥有三个表来打破这一关系:Product、Size和ProductSize,其中Product包含products、Size包含Size和ProductSize,通过按住Product和Size的主键,将每个产品映射到可用的大小
Product (ProductID, ProductName)
Size (SizeID, SizeName)
ProductSize (ProductID, SizeID)
视情况而定,每个产品可以有多种尺寸,但不同的产品可以有相同的尺寸吗 如果他们不能,那么您就有一个一对多关系,您需要一个ProductSize表来保存产品的主键
ProductSize(SizeID、ProductID、Size)
如果可以,那么您就有了一个多对多关系,您可以通过拥有三个表来打破这一关系:Product、Size和ProductSize,其中Product包含products、Size包含Size和ProductSize,通过按住Product和Size的主键,将每个产品映射到可用的大小
Product (ProductID, ProductName)
Size (SizeID, SizeName)
ProductSize (ProductID, SizeID)
试着这样做:
Products
----------
ProductID PK, auto increment int
ProductName
....
Sizes
-------
SizeID PK, auto increment int
SizeInfo
....
ProductSizes
--------------
ProductID PK, FK to Products.ProductID
SizeID PK, FK to Sizes.SizeID
试着这样做:
Products
----------
ProductID PK, auto increment int
ProductName
....
Sizes
-------
SizeID PK, auto increment int
SizeInfo
....
ProductSizes
--------------
ProductID PK, FK to Products.ProductID
SizeID PK, FK to Sizes.SizeID
这是家庭作业吗?如果是,请在[作业]上做标记。请告诉我们你到目前为止做了什么。这不是
www.do\u my\u homo\u for\u me.com
这不是家庭作业。是我在努力理解规范化。我已经创建了数据库和表,但我无法计算映射表…这是一个m:n关系。您无法避免重复您的产品或尺寸。这就是为什么你应该使用内存有效的主键。这是家庭作业吗?如果是,请在[作业]上做标记。请告诉我们你到目前为止做了什么。这不是www.do\u my\u homo\u for\u me.com
这不是家庭作业。是我在努力理解规范化。我已经创建了数据库和表,但我无法计算映射表…这是一个m:n关系。您无法避免重复您的产品或尺寸。这就是为什么你应该使用内存效率高的主键。除非出于性能原因,我不会在表中使用唯一标识符作为主键,除非我别无选择。大多数情况下,INT是更好的选择。除非出于性能原因,我不会在表中使用唯一标识符作为PK,除非我别无选择。大多数情况下,整数是更好的选择。