Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Реализация инфологической схемы. Новичок. / 11 сообщений из 11, страница 1 из 1
02.12.2014, 16:59
    #38822804
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
Добрый день! Подскажите пожалуйста как я могу реализовать такую схему? (часть инфологической схемы БД).
...
Рейтинг: 0 / 0
02.12.2014, 17:05
    #38822810
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
AndrewMG,
Вот как создавал и связывал таблицы (изначально планировалась связь многое ко многим). Но после мозгования понял что надо делать один ко многим, но возникла сложность. Т.к. поидее должны храниться внешние ключи связанные с разными таблицами. Т.е. в таблице должен находится либо client_id, либо provider_id. Подскажите как решить эту задачу максимально корректно?

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
CREATE TABLE Clients
(
	client_id INT NOT NULL IDENTITY,
	client_Name varchar(40) NOT NULL,
	PRIMARY KEY (client_id)
);

CREATE TABLE Providers
(
	provider_id INT NOT NULL IDENTITY,
	provider_Name varchar(40) NOT NULL,
	PRIMARY KEY (provider_id)
);

CREATE TABLE Contracts
(
	contract_id INT NOT NULL IDENTITY,
	contract_Name varchar(40) NOT NULL,
	PRIMARY KEY (contract_id)
);

CREATE TABLE clients_contracts
(
	client_id INT NOT NULL,
        --provider_id?
	contract_id INT NOT NULL,
	PRIMARY KEY(client_id, contract_id),
	FOREIGN KEY (client_id) REFERENCES Clients(client_id),
	FOREIGN KEY (contract_id) REFERENCES Contracts(contract_id)
	--FOREIGN KEY (provider_id) REFERENCES Providers(provider_id)
);



Меня смущает то, что всегда одно поле будет не использовано, подскажите пожалуйста нормально ли это?)

Спасибо.
...
Рейтинг: 0 / 0
02.12.2014, 17:05
    #38822812
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
Как учили так и реализовывай
...
Рейтинг: 0 / 0
02.12.2014, 17:08
    #38822817
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
SERG1257, самоучка
...
Рейтинг: 0 / 0
02.12.2014, 17:12
    #38822826
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
AndrewMG надо делать один ко многимИ зачем тогда таблица clients_contracts
AndrewMG в таблице должен находится либо client_id, либо provider_idНа схеме (да и по жизни) в договоре хранится и client_id и provider_id
AndrewMG Подскажите как решить эту задачу максимально корректно?Если вопрос абстрактный - как реализовать либо, то либо другое, то делается два нуллабле поля, client_id и provider_id, навешиваются два FK ограничения, и check на таблицу чтобы не нулл было только одно поле.
...
Рейтинг: 0 / 0
02.12.2014, 17:20
    #38822841
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
AndrewMGМеня смущает то, что всегда одно поле будет не использовано, подскажите пожалуйста нормально ли это?)
clients_contracts - это договор?
А Contracts - это счёт?
Странный перевод, вызывает путаницу.

Так вот, по вашей инфологической модели нужно сделать в договоре поля ИД клиента и ИД поставщика
А счёт и договор у вас связаны отношением 1:1, то есть просто ПК из таблицы счёт связывается с ПК из таблицы договор

Но вообще лучше сначала продумать инфологическую модель.
...
Рейтинг: 0 / 0
02.12.2014, 17:26
    #38822855
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
alexeyvg, из-за отсутствия опыта схема(её часть) была нарисована именно так. В схеме я пытался показать что договор может быть заключён между дилером(нет на схеме) и клиентом, а так же между дилером и поставщиком.
...
Рейтинг: 0 / 0
02.12.2014, 17:29
    #38822861
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
SERG1257, просто я пытаюсь объяснить, что в моём договоре должен быть либо client_id, либо provider_id. Т.е. я заключаю либо договор на продажу продукции (где мне необходимо знать ид клиента которому я продаю товар), либо я заключаю договор на поставку продукции мне (где необходимо знать ид поставщика продукции у которого Я покупаю товар). Вот собственно поэтому и возник вопрос.

А по поводу таблицы clients_contracts - в ней я как-раз и хотел хранить ид клиента/ ид поставщика и ид договора. Согласен что название для таблицы - неудачное, уже исправил.
...
Рейтинг: 0 / 0
02.12.2014, 17:32
    #38822867
AndrewMG
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
alexeyvg,

clients_contracts - подразумевалась как промежуточная таблица для связи таблиц клиенты/договоры (для связи многие ко многим). Я выложил её для понимая того, как я пытался реализовать связь в БД.
...
Рейтинг: 0 / 0
02.12.2014, 17:36
    #38822876
SERG1257
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
Тогда дай правильное (полное) условие задачи,
Исправленное (последнее) решение
Проблемы, непонятки и т.д.

а то тут считаем, тут не считаем, тут вообще рыбу заворачивали
...
Рейтинг: 0 / 0
03.12.2014, 00:23
    #38823140
alexeyvg
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Реализация инфологической схемы. Новичок.
AndrewMGSERG1257, просто я пытаюсь объяснить, что в моём договоре должен быть либо client_id, либо provider_id. Т.е. я заключаю либо договор на продажу продукции (где мне необходимо знать ид клиента которому я продаю товар), либо я заключаю договор на поставку продукции мне (где необходимо знать ид поставщика продукции у которого Я покупаю товар). Вот собственно поэтому и возник вопрос.А, вот как...

Обычно в таком случае делают таблицу "Контрагент", который может быть либо поставщиком, либо покупателем. И тогда все связи будут на эту таблицу.

Или ведут договора на закупку и продажу в разных таблицах.
SERG1257Тогда дай правильное (полное) условие задачи,
Исправленное (последнее) решение
Проблемы, непонятки и т.д.

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


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