2017-01-15 2 views
-1

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

запасные части 0, м-> Ремонт

Так запасные части могут быть частью ремонта, но при каждом ремонте не нужно иметь запасные части, и когда я создаю таблицы, которые я поместил для замены частей id null, но проблема в том, что когда я создаю первичный ключ, он может быть только с непустым. Что делать?

+0

вместо этого используйте уникальный ключ. thats позволяет иметь ** NULL ** –

+0

Так вот так; Запасные части (уникальный идентификатор, дата, описание nvarchar (255)) ??? –

+0

Вам может потребоваться много и много отношений между ремонтом и частями. –

ответ

0

Вопрос описывает только половину соотношения между ремонтом и запасными частями. Вы заявили, что ремонт может состоять из нулевой руды с более запасными частями.

Но (1) можно заменить одну и ту же заменяемую часть нулевым или более ремонтным ремонтом или (2) заменить запасную часть, потребляемую ремонтом так, чтобы она могла произойти только при ноль или один раз при ремонте?

Необходимо сделать это ясно, потому что (1) и (2) приводят к различным схемам баз данных:

(1) представляет собой многие - ко - многим отношениям и приводит к отдельной таблице соединительной части и ремонтные работы:

create table part (
    partId int primary key 
); 

create table repair (
    repairId int primary key 
    ); 

create table part_repair (
    partId int references part (partId), 
    repairId int references repair (repairId) 
    primary key (partId, repairId) 
    ); 

(2) часть может быть использована в нулевом или одного ремонта; магазин ремонтно-идентификатор в части:

create table repair (
    repairId int primary key 
    ); 

create table part (
    partId int primary key, 
    repairId int references repair(repairId) 
); 

Обратите внимание, что repairId частично может взять на себя NULL значений для тех частей, которые не назначены для ремонта.

Надеюсь, что это поможет.

+0

Hm - @Strawberry: Почему вы так думаете? –

+0

Потому что я неправильно читаю. Первая часть в порядке. Вторая идея вряд ли маловероятна, но я думаю, что вы сказали так же – Strawberry

Смежные вопросы