Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Вниз

primary key   Найти похожие ветки 

 
gentos   (2007-08-06 15:25) [0]

Здрасте мастерам. Есть следующая ситуация. Имеется 2 таблички.
В одной табличке 2 кея. В другой есть поле IDDOCUMENTBODY NUMBER NOT null пишу следующее CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY (IDDOCUMENTBODY) REFERENCES WDS$DOCUMENTBODY (ID) ругается и это не страно, как можно с одной таблички получить доступ к другой табличке , если у этой другой таблички 2 праймари кей вот, ниже представлени эти самый 2 мои таблички REATE TABLE WDS$Documents
(
 ID NUMBER NOT NULL,
 IDUSER NUMBER NOT NULL,
 IDDOCUMENTTYPE NUMBER NOT null,
 IDDOCUMENTBODY NUMBER NOT null,
 COMM VARCHAR2(1000),
 USERS VARCHAR2(100) NOT NULL,
 TIME DATE NOT NULL,

 CONSTRAINT PK_WDS$Documents PRIMARY KEY (ID),
 CONSTRAINT FK_IDUSER FOREIGN KEY (IDUSER) REFERENCES WDS$USERS(ID),
 CONSTRAINT FK_IDDOCUMENTTYPE FOREIGN KEY (IDDOCUMENTTYPE) REFERENCES WDS$DOCUMENTTYPE(ID),
 CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY (IDDOCUMENTBODY) REFERENCES WDS$DOCUMENTBODY (ID)
);
и вторая CREATE TABLE WDS$DocumentBody
(
 ID       NUMBER        NOT NULL,
 LVL NUMBER NOT NULL,
 PICTURE  BLOB          NOT NULL,
 CONSTRAINT PK_WDS$DocumentBody PRIMARY KEY (ID,LVL)
 )


 
gentos   (2007-08-06 15:28) [1]

может unique key ?


 
Sergey13 ©   (2007-08-06 15:31) [2]

> [0] gentos   (06.08.07 15:25)
> В одной табличке 2 кея

Не два, а составной из двух полей. Это разные вещи. Зачем кстати там 2 поля? Почему не просто ИД?


 
gentos   (2007-08-06 15:46) [3]

а у меня там будет следующее
ид = 1
лвл = 1
означает 1 страничка первого документа
1
2
означает 2 страничка 1 документа
.
.
.
n
m
означает m страничка n-го документа
документа же может состоять из нескольких страничек , вот и так приходится делать


 
Bel ©   (2007-08-06 15:50) [4]

> а у меня там будет следующее ид = 1лвл = 1 означает 1 страничка первого документа

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


 
Sergey13 ©   (2007-08-06 15:52) [5]

> [3] gentos   (06.08.07 15:46)

Если я не запутался в твоих IDDOCUMENTBODY , то ты кажется перепутал что на что должно ссылаться. Не первая на вторую, а наборот.


 
Anatoly Podgoretsky ©   (2007-08-06 15:57) [6]

> gentos  (06.08.2007 15:25:00)  [0]

Не может быть двух первичных ключей. Он потому и называется первичный.


 
gentos   (2007-08-06 15:59) [7]


> Anatoly Podgoretsky ©  

What is a primary key?
A primary key is a single field or combination of fields that uniquely defines a record. None of the fields that are part of the primary key can contain a null value. A table can have only one primary key.

Note: In Oracle, a primary key can not contain more than 32 columns.

A primary key can be defined in either a CREATE TABLE statement or an ALTER TABLE statement.

Using a CREATE TABLE statement
The syntax for creating a primary key using a CREATE TABLE statement is:

CREATE TABLE table_name
(column1 datatype null/not null,
column2 datatype null/not null,
...
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, . column_n)
);

http://www.techonthenet.com/oracle/primary_keys.php


 
gentos   (2007-08-06 16:01) [8]

та я сам уже запутался , дают всякую фигню начальники , а сами не понимают чего хотят :), и вот и пишешь туда сюда обратно, одни дропы и альтеры :)


 
Sergey13 ©   (2007-08-06 16:03) [9]

> [7] gentos   (06.08.07 15:59)

Ну, и в чем ты нашел противоречие?
> A table can have only one primary key.

> [8] gentos   (06.08.07 16:01)

Ну да, начальники казлы, а мы белые и пушистые. Знакомая ситуация.8-)
Ты не спеши писать - сядь и подумай.


 
gentos   (2007-08-06 16:07) [10]


> Sergey13 ©  

A table can have only one primary key.

а потом пишут
In Oracle, a primary key can not contain more than 32 columns.
типа не больше 32 :), странно как-то и вот тут
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, . column_n)
тоже похоже что один можна :)
та да, а что остается, буду сидеть и думать


 
Anatoly Podgoretsky ©   (2007-08-06 16:11) [11]

> gentos  (06.08.2007 16:07:10)  [10]

Опять неправильно читаешь, один составной ключ, не более чем из 32 колонок.


 
Jeer ©   (2007-08-06 16:12) [12]


> gentos   (06.08.07 16:07) [10]
>
>


Учи вражеский, а написано очень просто: PK один, но состоять должен не более чем из 32 полей, но может и из одного поля.
Ферштейн ?


 
gentos   (2007-08-06 16:19) [13]


> Anatoly Podgoretsky ©


согласен читал неправильно
добавил просто еще одну колонку
IDDOCUMENTLVL NUMBER NOT null
и написал следующее
CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY (IDDOCUMENTBODY,IDDOCUMENTLVL) REFERENCES WDS$DOCUMENTBODY (ID,LVL) заработало


 
gentos   (2007-08-06 16:21) [14]

Sergey13 ©   (06.08.07 15:52) [5]
а вот тут непонятно чего так ?
сначала создается в child таблице запись, а потом уже по айдишника чайлда вставляются данные в таблицу WDS$Documents
вот так вот будет, по логике правильно ... как бы слово references и заключает в себе ссылаться на что-то ... или как ? :)


 
Sergey13 ©   (2007-08-06 16:22) [15]

> [13] gentos   (06.08.07 16:19)
> заработало

Правильно? Что-то меня сомнения берут.

ЗЫ: Машину с ручника снял, она и поехала. И никакого зажигания не надо. 8-)


 
gentos   (2007-08-06 16:22) [16]


> Jeer ©   (06.08.07 16:12) [12]


сенкс, разобрался


 
Sergey13 ©   (2007-08-06 16:24) [17]

> [14] gentos   (06.08.07 16:21)
> по логике правильно

По чьей? По моей неправильно. Документ ОДИН, а страниц МНОГО. На каждую страницу будешь документ создавать?


 
gentos   (2007-08-06 16:27) [18]


> Sergey13 ©   (06.08.07 16:24) [17]



CREATE TABLE WDS$DocumentBody
(
ID       NUMBER        NOT NULL,
LVL NUMBER NOT NULL,
PICTURE  BLOB          NOT NULL,
CONSTRAINT PK_WDS$DocumentBody PRIMARY KEY (ID,LVL)
CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY  (ID,LVL) REFERENCES WDS$DOCUMENTS (IDDOCUMENTBODY,IDDOCUMENTLVL)
)

то есть вы это имеет ввиду ?


 
Sergey13 ©   (2007-08-06 16:35) [19]

> [18] gentos   (06.08.07 16:27)
Я бы сделал так
CREATE TABLE WDS$DocumentBody
(
IDDOCUMENT  NUMBER        NOT NULL,
LVL NUMBER NOT NULL,
PICTURE  BLOB          NOT NULL,
CONSTRAINT PK_WDS$DocumentBody PRIMARY KEY (IDDOCUMENT,LVL)
CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY  (IDDOCUMENT) REFERENCES WDS$DOCUMENTS (ID)
)

Точнее я бы сделал свой искусственнй ключ ID, его бы сделал примари кеем, а ИДДокумента+страница сделал бы уникальным ключем. Плюс ИДДокумента - ссылка на Документ, как в скрипте.


 
Bel ©   (2007-08-06 16:36) [20]

> gentos   (06.08.07 16:27) [18]
> CREATE TABLE WDS$DocumentBody
> (  ID       NUMBER        NOT NULL,
>    LVL NUMBER NOT NULL,
>   PICTURE  BLOB          NOT NULL,
>   CONSTRAINT PK_WDS$DocumentBody PRIMARY KEY (ID,LVL) CONSTRAINT FK_IDDOCUMENTBODY
>   FOREIGN KEY  (ID,LVL) REFERENCES WDS$DOCUMENTS (IDDOCUMENTBODY,IDDOCUMENTLVL) )
> то есть вы это имеет ввиду ?

Имелось в виду:
FOREIGN KEY (ID) REFERENCES WDS$DOCUMENTS (ID)


 
gentos   (2007-08-06 16:54) [21]


> Sergey13 ©   (06.08.07 16:35) [19]

вот если сделать вот так вот как вы сказали

CREATE TABLE WDS$DocumentBody
(
IDDOCUMENT  NUMBER        NOT NULL,
LVL NUMBER NOT NULL,
PICTURE  BLOB          NOT NULL,
CONSTRAINT PK_WDS$DocumentBody PRIMARY KEY (IDDOCUMENT,LVL)
CONSTRAINT FK_IDDOCUMENTBODY FOREIGN KEY  (IDDOCUMENT) REFERENCES WDS$DOCUMENTS (ID)
)
то вначале в какую таблицу необходимо вводить данные в таблицу WDS$DocumentBody или же в WDS$DOCUMENTS ?



 
gentos   (2007-08-06 16:56) [22]

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


 
Sergey13 ©   (2007-08-06 16:56) [23]

> [21] gentos   (06.08.07 16:54)

ВСЕГДА вводится сначала в ГЛАВНУЮ (WDS$DOCUMENTS в твоем случае). Иначе никак.


 
gentos   (2007-08-06 16:59) [24]

так мне надо не в главную !!!


 
gentos   (2007-08-06 17:01) [25]

в WDS$DOCUMENTS  у меня будет TdxDBGridLookupColumn дбгрида и потом через чайлдовскую таблицу я получу данные в главную ! :)


 
Sergey13 ©   (2007-08-07 08:23) [26]

> [24] gentos   (06.08.07 16:59)
> так мне надо не в главную !!!

Не понятно что тебе вообще надо.

> [25] gentos   (06.08.07 17:01)

Ты бы все таки купил себе книжку по БД. После прочтения можно вновь воспользоваться советом из [9] Sergey13 ©   (06.08.07 16:03)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.09.02;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.048 c
15-1186323056
@!!ex
2007-08-05 18:10
2007.09.02
Resize java приложений


2-1186858301
инженер
2007-08-11 22:51
2007.09.02
Microsoft Word


3-1178029672
Sapos
2007-05-01 18:27
2007.09.02
Дисконнект по таймауту


1-1182862301
mif99
2007-06-26 16:51
2007.09.02
Ошибка в приложение клиент сервер (CANNOT ALLOCATE SOCKET)


2-1186561409
Кирей
2007-08-08 12:23
2007.09.02
Кфму 5





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский