2010-07-14 5 views
1

У меня есть таблица продуктов и размеры стола. Каждый продукт может иметь несколько размеров. Как я могу создать свою базу данных, чтобы не иметь повторных записей одного и того же продукта?Вопрос по дизайну базы данных

Заранее спасибо

+3

Является ли это домашнее задание? Если это так, отметьте это [Домашнее задание]. Пожалуйста, покажите нам, что вы сделали до сих пор. Это не 'www.do_my_homework_for_me.com' –

+0

Это не домашнее задание. Это я пытаюсь понять нормализацию. Я уже создал базу данных и таблицы, но не смог вычислить таблицу сопоставления ... – chchrist

+0

Это отношение m: n. Вы не можете избежать повторения ваших продуктов или ваших размеров. Вот почему вы должны использовать первичные ключи с эффективной памятью. –

ответ

2

Типичный подход к многим-многим, чтобы иметь таблицу сопоставления с именем 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)) 
+1

За исключением того, что я не использовал бы уникальный идентификатор, как ПК в таблице по соображениям удобства, если у меня не было другого выбора. INT - лучший выбор в большинстве случаев. – HLGEM

1
product Table 

1. product id 
2. product name 
...... 

Product Size 

1. Id 
2. ProductId(Foreign key form product table) 
3. Size 
1

Это зависит от того, каждый продукт может иметь несколько размеров, но могут разные продукты имеют одинаковый размер?

Если они не могут, то у вас есть отношения «один-много», и вам нужна таблица ProductSize, которая содержит первичный ключ продукта.

ProductSize (SizeID, ProductID, Size)

Если они могут, то у вас есть отношения многих ко многим, и вы можете разорвать это затронут три таблицы, продукт, размер и ProductSize, где продукт содержит продукты, размер содержит размеры и ProductSize отображает каждый продукт к имеющимся размерам, удерживая первичный ключ продукта и размера.

Product (ProductID, ProductName) 
Size (SizeID, SizeName) 
ProductSize (ProductID, SizeID) 
0

попробовать что-то вроде этого:

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 
Смежные вопросы