Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Создание БД из, предположительно, трёх таблиц  [new]
Zлостный
Member

Откуда:
Сообщений: 4
Здравствуйте!

Помогите, пожалуйста, разобраться со следующей проблемой (задача для допуска к зачёту по дисциплине БД, а вернее её часть):
- требуется создать БД о клиентах, для каждого клиента нужно хранить такую информацию, как имя, адрес и т.п., при этом для частных клиентов необходимо также хранить фамилию, а для корпоративных - название компании.

Что делаю:
- создаю три таблицы: Клиенты, Частные клиенты, Корпоративные клиенты;
- для клиентов делаю ключ из поля "id номер", для частных и корпоративных из "Клиенты$id номер";
- из частных и из корпоративных вывожу ключи (как я понимаю, внешние) к главной таблице Клиенты, соединяю поля "фамилия" из таблицы частных и "название компании" из корпоративных с полем "id номер" в Клиентах.
Тип данных везде один и тот же, по умолчанию, nchar(10). Таблицы вручную успешно заполняются и результаты можно вынуть с помощью SELECT...FROM применительно к таблицам, и по одной, и ко всем разом. Но является ли это решением? Дело в том, что SELECT...FROM к базе данных в целом применить нельзя (функция "не активна",т.е. серым написана). А если всё только вручную можно посмотреть, то какой толк от привязки таблиц друг к другу?

Я хотел, чтобы, допустим, при запросе на определённый "id номер", выдавалась бы сразу вся информация с ним связанная. В данном случае, и имя, и адрес, и либо фамилия, либо компания - в одном флаконе, т.е. одной таблицей как-нибудь.

С SQL Server'ом я познакомился только сегодня, так что, пожалуйста, не ругайтесь, если вопрос глупый. =)

Может кто-нибудь подскажет, что к чему тут, по Вашему мнению?
В правильном ли направлении я вообще мыслю? Может это одной таблицей делать надо?

P.S.: все названия здесь написал на русском просто для упрощения изложения.
14 май 11, 20:39    [10652940]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31953
Zлостный
Я хотел, чтобы, допустим, при запросе на определённый "id номер", выдавалась бы сразу вся информация с ним связанная. В данном случае, и имя, и адрес, и либо фамилия, либо компания - в одном флаконе, т.е. одной таблицей как-нибудь.
Нужно написать запрос, выбирающий данные сразу из нескольких таблиц.

Для этого есть оператор JOIN - "соединение".

Посмотрите в документации: SELECT и FROM

Там есть пример выборки из 2-х таблиц:
Е. Использование синтаксиса SQL-92 для INNER JOIN
SELECT p.Name, sod.SalesOrderID
FROM Production.Product AS p
INNER JOIN Sales.SalesOrderDetail AS sod
ON p.ProductID = sod.ProductID
ORDER BY p.Name ;
14 май 11, 21:03    [10653004]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
Zлостный
Member

Откуда:
Сообщений: 4
Я пока ничего не понял (буду ещё вникать, перечитывать), но большое Вам спасибо! =)
18 май 11, 00:42    [10668575]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
Zлостный
Member

Откуда:
Сообщений: 4
С поставленной задачей справился, в общем-то, и близок практически к завершению базы данных! =)

Но тут вот ещё какая есть загагулина:
- необходимо держать список рецептов, при этом для некоторых рецептов в качестве ингредиентов используются названия других рецептов.

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

Не подскажите, как это можно сделать? Это, по идее, как то просто должно замыкаться, но я что-то не могу сообразить, в чём суть такой связи...
21 май 11, 03:22    [10687940]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
обычное "дерево"

id_Записи, id_Родителя...

"раскрутить" всю связь можно рекурсивно, через СТЕ
21 май 11, 06:21    [10687964]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
Zлостный
Member

Откуда:
Сообщений: 4
Спасибо!
27 май 11, 18:24    [10722118]     Ответить | Цитировать Сообщить модератору
 Re: Создание БД из, предположительно, трёх таблиц  [new]
П-Л
Guest
Zлостный
С SQL Server'ом я познакомился только сегодня, так что, пожалуйста, не ругайтесь, если вопрос глупый. =)

С поставленной задачей справился, в общем-то, и близок практически к завершению базы данных! =)

Да вы, батенька, гений!
27 май 11, 18:47    [10722273]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить