У меня есть таблица продуктов и размеры стола. Каждый продукт может иметь несколько размеров. Как я могу создать свою базу данных, чтобы не иметь повторных записей одного и того же продукта?Вопрос по дизайну базы данных
Заранее спасибо
У меня есть таблица продуктов и размеры стола. Каждый продукт может иметь несколько размеров. Как я могу создать свою базу данных, чтобы не иметь повторных записей одного и того же продукта?Вопрос по дизайну базы данных
Заранее спасибо
Типичный подход к многим-многим, чтобы иметь таблицу сопоставления с именем 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))
За исключением того, что я не использовал бы уникальный идентификатор, как ПК в таблице по соображениям удобства, если у меня не было другого выбора. INT - лучший выбор в большинстве случаев. – HLGEM
product Table
1. product id
2. product name
......
Product Size
1. Id
2. ProductId(Foreign key form product table)
3. Size
Это зависит от того, каждый продукт может иметь несколько размеров, но могут разные продукты имеют одинаковый размер?
Если они не могут, то у вас есть отношения «один-много», и вам нужна таблица ProductSize, которая содержит первичный ключ продукта.
ProductSize (SizeID, ProductID, Size)
Если они могут, то у вас есть отношения многих ко многим, и вы можете разорвать это затронут три таблицы, продукт, размер и ProductSize, где продукт содержит продукты, размер содержит размеры и ProductSize отображает каждый продукт к имеющимся размерам, удерживая первичный ключ продукта и размера.
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
Является ли это домашнее задание? Если это так, отметьте это [Домашнее задание]. Пожалуйста, покажите нам, что вы сделали до сих пор. Это не 'www.do_my_homework_for_me.com' –
Это не домашнее задание. Это я пытаюсь понять нормализацию. Я уже создал базу данных и таблицы, но не смог вычислить таблицу сопоставления ... – chchrist
Это отношение m: n. Вы не можете избежать повторения ваших продуктов или ваших размеров. Вот почему вы должны использовать первичные ключи с эффективной памятью. –