powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интересная связь в БД
10 сообщений из 10, страница 1 из 1
Интересная связь в БД
    #36603075
sanda87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую всех форумчан.
Имеем несколько таблиц: читатели, студенты, сотрудники, другие. В таблице читатели есть № читательского билета и читателем могут быть сотрудники, студенты и другие читатели. У всех этих типов читателей отдельные таблицы. Как связать это все воедино? От куда и куда должен идти внешний ключ?
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36603090
mcureenab
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну сделай таблицу связей...

Разве ФИО не достаточно, для определения принадлежности документа?
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36603156
Фотография ChA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почитайте это:
http://www.orm.net/pdf/Subtype.pdf

http://www.idi.ntnu.no/~heggland/cv/ForeignSuperkeys.pdf
Далее, по ключевым словам.
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36604053
sanda87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю таблицы в ORACLE:
create table chits (
chit varchar2(5) PRIMARY KEY,
t char(1) NOT NULL,
join_date date,
CONSTRAINT tpk UNIQUE (t)
);

create table sot (
sot_id number(3) PRIMARY KEY,
chit varchar2(5),
constraint foreign key (chit, 'x') references chits(chit, t)
);

при создании второй таблицы выпадает ошибка ORA-00904: : invalid identifier. Что не так делаю?
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36605045
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanda87,

Есть другой вариант - сделать таблицу "Readers" с внешним ключом на "Persons" и в ней поле с форинкеем на таблицу "Pers_type", содержащей записи типа персоны.

Readers
reader_id r_ticket_numopen_date person_id111223321.03.19871222113331.07.19822333221104.02.19603

Persons
pers_idfiotype_id1Pupkin P.P.12Sidorov A.B.23Petrov V.V3

Pers_type
type_idtype_name1student2employee3others
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36605249
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sanda87,

В DDL это будет выглядеть так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
create table Readers (
reader_id number PRIMARY KEY,
r_ticket_num number ,
open_date date,
person_id number
);
/
ALTER TABLE Readers ADD CONSTRAINT Readers_FK1 FOREIGN KEY (person_id)
	  REFERENCES  Persons (pers_id) ENABLE
/
create table Persons (
pers_id number PRIMARY KEY,
fio varchar2( 100 ) ,
type_id number
);
/
ALTER TABLE Persons ADD CONSTRAINT Persons_FK1 FOREIGN KEY (type_id)
	  REFERENCES  Pers_type (type_id) ENABLE
/
create table Pers_type (
type_id number PRIMARY KEY,
type_name varchar2( 100 ) 
);
/
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36606192
sanda87
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо ребята за ответы, все усвоил:)
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36606472
Фёдоров
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A1ek5andr0sanda87,

Есть другой вариант - сделать таблицу "Readers" с внешним ключом на "Persons" и в ней поле с форинкеем на таблицу "Pers_type", содержащей записи типа персоны.

Readers
reader_id r_ticket_numopen_date person_id111223321.03.19871222113331.07.19822333221104.02.19603

Persons
pers_idfiotype_id1Pupkin P.P.12Sidorov A.B.23Petrov V.V3

Pers_type
type_idtype_name1student2employee3others

Может быть ещё стоит учесть, что Person может оказаться и employee, и studeнт и вообще other :)
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36606804
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фёдоров,

ФёдоровМожет быть ещё стоит учесть, что Person может оказаться и employee, и studeнт и вообще other :)

Можно.

Link_Pers_type
Pers_id type_id112233

с форинкеями на персов и типы
...
Рейтинг: 0 / 0
Интересная связь в БД
    #36606861
A1ek5andr0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A1ek5andr0,

Только убрать поле type_id из табл. Persons.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Интересная связь в БД
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]