Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> несколько значений в одном поле 
:(
    Опции темы
derek
Дата 6.8.2008, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Вот возникла такая задача. Допустим у нас есть две базы таблицы (с, на деле будет ситуация другая, но основной смысл передан) - 

первая - "Фио", "Адрес", "Специализации"
вторая - "Название отдела","Описание",......,"Сотрудники"

Так вот данные в графу "сотрудники" вносятся методом выбора фамилий из первой базы таблицы - и это впринципе не проблема сделать(связать две базы таблицы). Но необходимо чтобы можно было выбрать несколько фамиилий и все они так или иначе занеслись во вторую базу таблицу. Вносить по очереди каждого сотрудника - недопустимо в этой задаче. Ну и все должно быть по честному - т.е. потом например возможны такие SQL запросы - "Кто из сотрудников по "такой то" специализации работает в "таком то" отделе"

Я на самом деле когда услышал это, глаза округлил. С базами протсо никогда серьезно не работал и я вообще не представляю как решить эту задачу. Поэтому кто знает что делать, просьба по-подробнее - а если пример  подкинете - вообще шикарно!

спасибо!
PM MAIL   Вверх
Idsa
Дата 6.8.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



derek, есть такое понятие, как нормализация базы данных: http://ru.wikipedia.org/wiki/%D0%9D%D0%BE%...%80%D0%BC%D0%B0
Так вот вышеописанный подход нарушает первую нормальную форму:
Цитата

Таблица находится в первой нормальной форме, если каждый её атрибут атомарен и все строки различны. Под выражением «атрибут атомарен» понимается, что атрибут может содержать только одно значение. Таким образом, не соответствуют 1NF таблицы, в полях которых могут храниться списки значений. Для приведения таблицы к 1NF обычно требуется разбить таблицу на несколько отдельных таблиц.

Разруливается все достаточно просто:
1. Из второй таблицы убирается поле "Сотрудники"
2. Созадется новая таблица "Сотрудники Отдела" со следующей схемой:
PK СотрудникId
PK ОтделId

Имеем составной первичный ключ, который ставит в соответствие сотрудников и отдел. 

Цитата(derek @  7.8.2008,  02:50 Найти цитируемый пост)
Ну и все должно быть по честному - т.е. потом например возможны такие SQL запросы - "Кто из сотрудников по "такой то" специализации работает в "таком то" отделе"

При нормализованной схеме эти задачи решаются при помощи JOIN'ов.




--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
derek
Дата 6.8.2008, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Idsa, Спасибо большое за быстрый ответ!

а примеров нету? чтобы прям можно было запустить и посмотреть. 
я знаю что Google и codeproject.com рулят, просто я пока не пойму что собственно искать )
PM MAIL   Вверх
Idsa
Дата 6.8.2008, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(derek @  7.8.2008,  03:32 Найти цитируемый пост)
а примеров нету? чтобы прям можно было запустить и посмотреть. 

Да Вы же даже СУБД не указали. 6-е чувство подсказывает мне, что речь об Access.

Цитата(derek @  7.8.2008,  03:32 Найти цитируемый пост)
я знаю что Google и codeproject.com рулят, просто я пока не пойму что собственно искать ) 

А я, честно говоря, не пойму, что Вы собрались искать. Как нормализовать Вашу схему, я написал (примеры есть и по ссылке в Википедии, которую я указывал выше). Какие еще примеры нужны?





--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
derek
Дата 6.8.2008, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



Idsa, мне бы элементарные примеры по работе с базами. я с ними сталкивался только в теории...
smile

СУБД - MS SQL
PM MAIL   Вверх
Idsa
Дата 7.8.2008, 00:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



derek, 1 топик - 1 вопрос. Вопрос с нормализацией решен. Теперь проанализируйте, какие шаги Вам нужно будет выполнить и действуйте:
1. поиск в гугле
2. поиск по форуму
3. если предыдущие два пункта не дали результатов, создавайте тему с конкретным вопросом (вопрос "как мне быть" - не конкретный).


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
derek
Дата 7.8.2008, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



вообще я теперь не особо понимаю как это реализовать на уровне интерфейса 
как нормализовать таблицу я понял, но я хочу чтоб выглядело это в ненормализованном виде smile т.е. вот так

Отдел                 Сотрудники

Механический.    Иванов, Петров
Электрический            Сидоров, Федоров, Попов

ну и т.д.

вот такой пример я бы и хотел увидеть 
PM MAIL   Вверх
MasterOfCode
Дата 7.8.2008, 08:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


elwin
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 24.4.2008
Где: World.Russia.Tyum en

Репутация: 4
Всего: 27



2 базы можно слинковать. Вставку и выбор производить по линку.


--------------------
user posted image
PM ICQ   Вверх
Partizan
Дата 7.8.2008, 08:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Idsa

Цитата

Разруливается все достаточно просто:
1. Из второй таблицы убирается поле "Сотрудники"
2. Созадется новая таблица "Сотрудники Отдела" со следующей схемой:
PK СотрудникId
PK ОтделId

Имеем составной первичный ключ, который ставит в соответствие сотрудников и отдел.


особого смысле включать ОтделId в PK не вижу...вполне достаточно PK Сотрудник ID...


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
Idsa
Дата 7.8.2008, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2086
Регистрация: 5.12.2006
Где: Томск

Репутация: 15
Всего: 62



Цитата(Partizan @  7.8.2008,  12:12 Найти цитируемый пост)

особого смысле включать ОтделId в PK не вижу...вполне достаточно PK Сотрудник ID... 

Как правило, к первой нормальной форме приводят при помощи таблицы с составным PK. В этом же случае, если не включать ОтделId в PK, мы соглашаемся с тем фактом, что один сотрудник может работать только в одном отделе. Нужно ли нам такое ограничение? Думаю, что нет, ибо ситуация вполне вероятная.

Добавлено через 1 минуту и 43 секунды
Цитата(MasterOfCode @  7.8.2008,  12:04 Найти цитируемый пост)
2 базы можно слинковать. Вставку и выбор производить по линку. 

Мне кажется, в первом посте про две базы - это опечатка. derek, имелось же в виду две таблицы?


--------------------
Мой блог: alexidsa.blogspot.com
PM MAIL ICQ   Вверх
Partizan
Дата 7.8.2008, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Let's do some .NET
****


Профиль
Группа: Модератор
Сообщений: 2828
Регистрация: 19.12.2005
Где: Санкт-Петербург

Репутация: нет
Всего: 67



Цитата

мы соглашаемся с тем фактом, что один сотрудник может работать только в одном отделе. Нужно ли нам такое ограничение? Думаю, что нет, ибо ситуация вполне вероятная.


Согласен.


--------------------
СУВ,
       Partizan.
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
derek
Дата 7.8.2008, 17:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 124
Регистрация: 16.7.2006

Репутация: нет
Всего: нет



да, я имел ввиду две таблицы. база одна
PM MAIL   Вверх
mr.DUDA
Дата 7.8.2008, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


3D-маньяк
****


Профиль
Группа: Экс. модератор
Сообщений: 8244
Регистрация: 27.7.2003
Где: город-герой Минск

Репутация: 8
Всего: 232



поправил  smile 


--------------------
user posted image
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0855 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.