|
|
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Делаю диплом, стоит такая задача: Есть таблица сотрудников, каждый сотрудник может иметь от 1 до 4 ученых званий (звания берутся из подчиненной таблицы, их количество может измениться). Как более рационально организовать таблицы? Сделал 4 поля (под ученые звания), вроде-бы все устраивало, но что-то свербило в душе, теперь вылез первый подводный камень - не могу сделать запрос чтобы идентификаторы званий заменялись на данные из подчиненной таблицы. Еще есть идентичная задача: В научных трудах может быть до 6 соавторов... Извините если не в ту ветку написал, все делаю на yaffil, поэтому и написал здесь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 07:25 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий007Как более рационально организовать таблицы? Как вариант СотрудникиКодДругие данные Ученые званияКодЗвание Присвоеные званияКод сотрудникаКод званияДата присвоенияДругие данные ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 08:54 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Спасибо! Мдя... как же я сам не допер... Буду делать. Если не прокатит с работами то еще раз задам вопрос ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2009, 14:51 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Вопрос номер 2: Есть таблица сотрудников. Есть несколько таблиц научных работ (монографии, дисертации, патенты и т.п.) всё затолкать в одну таблицу не получается, т.к. описательные атрибуты очень разные. В каждой работе может быть до 6 соавторов. Пробую сделать через промежуточную таблицу AUTHORS как и в предыдущем примере, но низнаю как привязать таблицы научных работ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2009, 18:22 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий007Вопрос номер 2: Есть таблица сотрудников. Есть несколько таблиц научных работ (монографии, дисертации, патенты и т.п.) всё затолкать в одну таблицу не получается, т.к. описательные атрибуты очень разные. В каждой работе может быть до 6 соавторов. Пробую сделать через промежуточную таблицу AUTHORS как и в предыдущем примере, но низнаю как привязать таблицы научных работ.Например, сделать таблицы-связки (стандартно для связи "многие-ко-многим") от авторов к каждому типу публикации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2009, 22:25 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Думаю потом сложновато будет выбирать все работы принадлежащие одному сотруднику... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2009, 03:19 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
А возможно ли в промежуточной таблице сделать несколько внешних ключей на таблицы научных работ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2009, 05:14 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий007Думаю потом сложновато будет выбирать все работы принадлежащие одному сотруднику... 1.1 Нисколько. В запросе придется смотреть во всех таблицах публикаций. 1.2 Возможно, есть смысл поместить их все-таки в 1 таблицу? Ну не верю я, что публикации могут иметь сильно различающиеся атрибуты... Дмитрий007 А возможно ли в промежуточной таблице сделать несколько внешних ключей на таблицы научных работ? 2. Обязательно. Но только 1 FK на таблицу работ и 1 - на таблицу авторов. Только кол-во промежуточных таблиц = кол-ву типов публикаций = кол-ву таблиц публикаций. Не слишком сложно получается? Может, все-таки п. 1.2? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2009, 07:22 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Michael_N 1.1 Нисколько. В запросе придется смотреть во всех таблицах публикаций. Я это и имел ввиду - придется шерстить все промежуточные таблицы, составлять кучу однотипных запросов для этих таблиц. Michael_N 1.2 Возможно, есть смысл поместить их все-таки в 1 таблицу? Ну не верю я, что публикации могут иметь сильно различающиеся атрибуты... Если все обьединить в 1 таблицу, то получится полотенце с 20 или более полями, причем в различных видах работ, некоторые будут незаполненными. Придумал другой способ, оцените пожалуйста его рациональность: Промежуточная таблица Authors, которая хранит в себе соавторов, и по ключу публикации ссылается на другую промежуточную таблицу, в которой хранится оригинал работы и название таблицы (публикации), и на эту же таблицу по ключу публикации ссылаются все таблицы публикаций ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2009, 08:49 |
|
||
|
Помогите с организацией таблиц
|
|||
|---|---|---|---|
|
#18+
Дмитрий007Я это и имел ввиду - придется шерстить все промежуточные таблицы, составлять кучу однотипных запросов для этих таблиц. Прийдется. Но UNION ALL, имхо, будет получше, чем пытаться "впихнуть в непихуемое" :) То, что проще в понимании - точно. Кстати, можно использовать хранимые агрегаты и тогда для выборка всех публикаций автора будет представлять собой запрос к одной таблице. Дмитрий007Придумал другой способ, оцените пожалуйста его рациональность: Промежуточная таблица Authors, которая хранит в себе соавторов, и по ключу публикации ссылается на другую промежуточную таблицу, в которой хранится оригинал работы и название таблицы (публикации), и на эту же таблицу по ключу публикации ссылаются все таблицы публикацийВот чего не надо делать (опять же имхо) - это хранить названия отношений. Кроме того, ничто не мешает одновременно двум разным публикациям ссылаться на "промежуточную таблицу". Кстати, при обсуждении темы не мешало бы условные названия таблиц давать для взаимопонимания. И вообще, чтобы оценить два подхода проделайте следующее. 1. Набросайте две структуры. 2. Составьте список наиболее типичных запросов. 3. Сравните запросы при использовании двух моделей 4. То, что сложнее - в корзину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2009, 09:46 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=35828538&tid=1543424]: |
0ms |
get settings: |
11ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
212ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 295ms |
| total: | 605ms |

| 0 / 0 |
