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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как правильно организовать таблицы 
:(
    Опции темы
nextzi0
Дата 3.2.2009, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

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



У меня есть 3 таблицы 

Категории: 
id        - ключевое поле (код категории)
descr  - описание

Подразделения:
id       - ключевое поле (код подразделения)
name - название

Виды работ:
id       - ключевое поле (код вида работ)
idpod - код подразделения(й) (из таблицы Подразделения)
name - название работ

Смысл в чем - для каждой категории есть свои работы (таблица Виды работ), причем в поле idpod может быть несколько значений, тоесть там может находится одно или несколько id из таблицы Категории (определенные категории занимаются определенными видами работ)

Знаю, что это не все, помоему нужны еще таблицы, чтобы довести это все до рабочего состояния, и помоему еще надо поменять одну или несколько из этих таблиц.. Кто нибудь поможет?
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
ТоляМБА
Дата 3.2.2009, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

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



Цитата(nextzi0 @  3.2.2009,  16:40 Найти цитируемый пост)
для каждой категории есть свои работы (таблица Виды работ)
Да ну? А по таблицам этого не скажешь - связываются то они по ками полям?

Цитата(nextzi0 @  3.2.2009,  16:40 Найти цитируемый пост)
причем в поле idpod может быть несколько значений, тоесть там может находится одно или несколько id из таблицы Категории (определенные категории занимаются определенными видами работ)
Если это хочешь выводить в одну строку, то указывай тип СУБД, ибо реализация например в MySQL и в MS-SQL ьудет различна.

Цитата(nextzi0 @  3.2.2009,  16:40 Найти цитируемый пост)
Кто нибудь поможет?
А ты написал вопрос? Задача то в чем состоит???

PM   Вверх
nextzi0
Дата 3.2.2009, 14:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

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



Вот и я не знаю, как связать их, в этом и вопрос. База на MS SQL Server 2005.
В таблице Виды работ еще одно поле - idcat, по которому она связывается с таблицей Категории. Только мне кажется это неправильно
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
ТоляМБА
Дата 3.2.2009, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Котэ
***


Профиль
Группа: Завсегдатай
Сообщений: 1607
Регистрация: 15.12.2004

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



Цитата(nextzi0 @  3.2.2009,  16:54 Найти цитируемый пост)
Только мне кажется это неправильно
Ну чтобы Вам так не казалось, может стоит почитать основы реляционных СУБД. А потом основы SQL-запросов, для вашего примера обратите внимание на JOIN-ы.

PM   Вверх
nextzi0
Дата 3.2.2009, 15:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

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



Основной вопрос в том, как потом данные извлекать из строки со столбца idpod, там же их несколько, и как их туда, через запятую, потом отделять?
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
FINANSIST
Дата 3.2.2009, 20:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Статус: Жив
**


Профиль
Группа: Участник
Сообщений: 526
Регистрация: 11.4.2008
Где: Москва

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



Цитата(nextzi0 @  3.2.2009,  15:50 Найти цитируемый пост)
там же их несколько, и как их туда, через запятую, потом отделять?

Чего отделять, куда отделять, через какую запятую? smile 
Понятно что данные нужно извлечь, а вот какие поля и из каких таблиц тебе хочется в запросе видеть - вот это уже не понятно


--------------------
“...Брали корову рыжую одну, отдавать будем корову рыжую одну, чтобы не нарушать отчетности”
Эдуард Успенский, “Каникулы в Простоквашино”
PM MAIL ICQ   Вверх
nextzi0
Дата 4.2.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

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



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

таблица WorkTypes:
+==+=======+=====+======+======+======+======+=====+
| id  | idsubunit  |idcat    + name    | norma1  | norma2 | norma3  | remark|
+==+=======+=====+======+======+======+======+=====+
+ 1                        31         имя1       0.1           0.3            0.4              -     +
+ 2                        31         имя2       0.4           0.5            0.2              -     +
+ 3                        31         имя3       0.2           0.8            1.0              -     +
+==================================================+

таблица SubUnits:

+===+=========+
| id     |  description  |
+===+=========+
+ 101    отдел1       +                 
+ 201    отдел2       +              
+ 301    отдел3       +              
+=============+

таблица Categories:

+===+=========+
| id     |  description  |
+===+=========+
+ 31    описание1   +                 
+ 32    описание2   +              
+ 33    описание3   +              
+=============+


С полем idcat в таблице WorkTypes все понятно - указывается для какой категории (таблица Categories) разрешен данный тип работ. В поле idsubunit должны указываются один или несколько отделов (id таблицы SubUnits).
Этих таблиц достаточно? Как мне организовать запись/выборку в/из поля idsubunit? Там же (по моим соображениям) должны храниться одно или несколько значений, что то вроде такой структуры:

WorkTypes:
+==+=======+=====+======+======+======+======+=====+
| id  | idsubunit  |idcat    + name    | norma1  | norma2 | norma3  | remark|
+==+=======+=====+======+======+======+======+=====+
+ 1     101,201      31         имя1       0.1           0.3            0.4              -     +
+ 2      201            31         имя2       0.4           0.5            0.2              -     +
+ 3      201,301     32         имя3       0.2           0.8            1.0              -     +
+==================================================+




--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
vladimir74
Дата 4.2.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



nextzi0, 
если у тебя таблмцы WorkTypes и SubUnits имеют отношение N-M то надо создать еще одну таблицу
Код

[U]WorkTypes2SubUnits[/U]
SubUnitsId
WorkTypesId

если же отношение 1-N То в таблицу с N-связями заносят id второй основной таблицы...
Это из аксиом...

Добавлено через 13 минут и 30 секунд
это к тому - что в таблице WorkTypes нет смысла держать idsubunit  т.к. это противоречит первой форме БД. 
Код

Таблица находится в первой нормальной форме, если каждый её атрибут атомарен.

т.к. у тебя в обеих таблицах может находится N соединений со второй таблицей и наоборот, то создавай третью таблицу, и JOIN тебе в руки smile
--------------------
* В доме помешанного не говорят о миксере.* На любой Ваш вопрос у меня есть любой мой ответ.
PM MAIL   Вверх
nextzi0
Дата 4.2.2009, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 220
Регистрация: 28.5.2008
Где: о. Корсика

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



Цитата(vladimir74 @ 4.2.2009,  10:44)
nextzi0, 
если у тебя таблмцы WorkTypes и SubUnits имеют отношение N-M то надо создать еще одну таблицу
Код

[U]WorkTypes2SubUnits[/U]
SubUnitsId
WorkTypesId

если же отношение 1-N То в таблицу с N-связями заносят id второй основной таблицы...
Это из аксиом...

Добавлено @ 10:58
это к тому - что в таблице WorkTypes нет смысла держать idsubunit  т.к. это противоречит первой форме БД. 
Код

Таблица находится в первой нормальной форме, если каждый её атрибут атомарен.

т.к. у тебя в обеих таблицах может находится N соединений со второй таблицей и наоборот, то создавай третью таблицу, и JOIN тебе в руки smile

Спасибо что понял меня, то что надо ;)  smile 
--------------------
Не бойся начинать что-то новое, помни, что ковчег построили любители - профессионалы построили "Титаник"
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


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

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


 




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


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

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