![]() |
Модераторы: gambit |
![]() ![]() ![]() |
|
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Вот возникла такая задача. Допустим у нас есть две базы таблицы (с, на деле будет ситуация другая, но основной смысл передан) -
первая - "Фио", "Адрес", "Специализации" вторая - "Название отдела","Описание",......,"Сотрудники" Так вот данные в графу "сотрудники" вносятся методом выбора фамилий из первой базы таблицы - и это впринципе не проблема сделать(связать две базы таблицы). Но необходимо чтобы можно было выбрать несколько фамиилий и все они так или иначе занеслись во вторую базу таблицу. Вносить по очереди каждого сотрудника - недопустимо в этой задаче. Ну и все должно быть по честному - т.е. потом например возможны такие SQL запросы - "Кто из сотрудников по "такой то" специализации работает в "таком то" отделе" Я на самом деле когда услышал это, глаза округлил. С базами протсо никогда серьезно не работал и я вообще не представляю как решить эту задачу. Поэтому кто знает что делать, просьба по-подробнее - а если пример подкинете - вообще шикарно! спасибо! |
|||
|
||||
Idsa |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
derek, есть такое понятие, как нормализация базы данных: http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%...%80%D0%BC%D0%B0
Так вот вышеописанный подход нарушает первую нормальную форму:
Разруливается все достаточно просто: 1. Из второй таблицы убирается поле "Сотрудники" 2. Созадется новая таблица "Сотрудники Отдела" со следующей схемой: PK СотрудникId PK ОтделId Имеем составной первичный ключ, который ставит в соответствие сотрудников и отдел.
При нормализованной схеме эти задачи решаются при помощи JOIN'ов. |
||||
|
|||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Idsa, Спасибо большое за быстрый ответ!
а примеров нету? чтобы прям можно было запустить и посмотреть. я знаю что Google и codeproject.com рулят, просто я пока не пойму что собственно искать ) |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Да Вы же даже СУБД не указали. 6-е чувство подсказывает мне, что речь об Access.
А я, честно говоря, не пойму, что Вы собрались искать. Как нормализовать Вашу схему, я написал (примеры есть и по ссылке в Википедии, которую я указывал выше). Какие еще примеры нужны? |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
Idsa, мне бы элементарные примеры по работе с базами. я с ними сталкивался только в теории...
![]() СУБД - MS SQL |
|||
|
||||
Idsa |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
derek, 1 топик - 1 вопрос. Вопрос с нормализацией решен. Теперь проанализируйте, какие шаги Вам нужно будет выполнить и действуйте:
1. поиск в гугле 2. поиск по форуму 3. если предыдущие два пункта не дали результатов, создавайте тему с конкретным вопросом (вопрос "как мне быть" - не конкретный). |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
вообще я теперь не особо понимаю как это реализовать на уровне интерфейса
как нормализовать таблицу я понял, но я хочу чтоб выглядело это в ненормализованном виде ![]() Отдел Сотрудники Механический. Иванов, Петров Электрический Сидоров, Федоров, Попов ну и т.д. вот такой пример я бы и хотел увидеть |
|||
|
||||
MasterOfCode |
|
|||
![]() elwin ![]() ![]() Профиль Группа: Участник Сообщений: 740 Регистрация: 24.4.2008 Где: World.Russia.Tyum en Репутация: 4 Всего: 27 |
2 базы можно слинковать. Вставку и выбор производить по линку.
-------------------- ![]() |
|||
|
||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
Idsa,
особого смысле включать ОтделId в PK не вижу...вполне достаточно PK Сотрудник ID... -------------------- СУВ, Partizan. |
|||
|
||||
Idsa |
|
||||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2086 Регистрация: 5.12.2006 Где: Томск Репутация: 15 Всего: 62 |
Как правило, к первой нормальной форме приводят при помощи таблицы с составным PK. В этом же случае, если не включать ОтделId в PK, мы соглашаемся с тем фактом, что один сотрудник может работать только в одном отделе. Нужно ли нам такое ограничение? Думаю, что нет, ибо ситуация вполне вероятная. Добавлено через 1 минуту и 43 секунды
Мне кажется, в первом посте про две базы - это опечатка. derek, имелось же в виду две таблицы? |
||||
|
|||||
Partizan |
|
|||
![]() Let's do some .NET ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 2828 Регистрация: 19.12.2005 Где: Санкт-Петербург Репутация: нет Всего: 67 |
Согласен. -------------------- СУВ, Partizan. |
|||
|
||||
derek |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 16.7.2006 Репутация: нет Всего: нет |
да, я имел ввиду две таблицы. база одна
|
|||
|
||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 8 Всего: 232 |
поправил
![]() -------------------- ![]() |
|||
|
||||
![]() ![]() ![]() |
Прежде чем создать тему, посмотрите сюда: | |
|
Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов. Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Базы данных под .NET | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |