powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная ссылка
20 сообщений из 20, страница 1 из 1
Правильная ссылка
    #35460865
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите как правильнее поступить?
у меня вот такие таблицы:
1.список филиалов
fil_id (PK)
fil_name

2. список подразделений
pod_id (PK)
pod_name

3. Список подразделений в филиалах
fil_pod_id (PK)
fil_id (FK)
pod_id (Fk)

4. Документы
doc_id (PK)
вопрос:Как правильнее в документе указать ссылку на филиалы и подразделения?
вариант 1:
DOC_id (PK)
fil_pod_id (FK)

или
вариант 2:
DOC_id (PK)
fil_id (FK)
pod_id (Fk)

и почему?
какие минусы и плюсы у этих вариантов?
спасибо
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461035
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Плюсы первого варианта - ключ (а следовательно, индекс) короче, занимает меньше места, выборка происходит быстрее.
Минусы - для того, чтобы узнать название филиала по документу, придется джойнить 3 таблицы вместо двух.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461161
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Наверное плюс первого варианта еще в том что я не могу ошибочно указать связку Подразделение - Филиал.
А какой вариант всетаки правильный с точки зрения постоения БД?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461219
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovan_zА какой вариант всетаки правильный с точки зрения постоения БД?
Все подразделения в одну иерарх. таблицу
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461233
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я так предалагал но начальник грит что разные сущности и могут иметь разные атрибуты, поэтому сделал так. Как его убедить - не знаю!У меня нет аргументов!Подскажите если знаете?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461373
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovan_zНаверное плюс первого варианта еще в том что я не могу ошибочно указать связку Подразделение - Филиал.
А какой вариант всетаки правильный с точки зрения постоения БД?
Возможность или невозможность неправильно указать связку - это вопрос constraint'ов, а не структуры.
Если буквально следовать Вашей схеме, то правильней первый вариант - внешний ключ должен ссылаться на первичный ключ родительской таблицы, а не на произвольный набор полей.
Но если во второй вариант внести отказ от поля fil_pod_id и определение первичным ключом в таблице "Список подразделений в филиалах" сочетание (fil_id, pod_id ) - то все становится менее очевидным.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461899
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а когда рано или поздно появятся операции между подразделениями и филиалами фиг вы их сведете - должен быть вообще единый реестр подразделений. а разные атрибуты и что? делайте широкую таблицу и в зависимости от того, что это, такие атрибуты и заполняйте.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35461900
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если уж свербит видеть филиал в одной таблице, то заполняйте это значение триггером на основе подразделения.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462000
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovan_zЯ так предалагал но начальник грит что разные сущности и могут иметь разные атрибуты, поэтому сделал так. Как его убедить - не знаю!У меня нет аргументов!Подскажите если знаете?
Изделие - это одна сущность. Ессно разные типы одной сущности имеют разные атрибуты, но это видно только на экране, а в БД д.б. одна таблица на одну сущность.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462004
_мод
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovan_z
Сорри: Подразделения - одна сущность.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462022
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин
Возможность или невозможность неправильно указать связку - это вопрос constraint'ов, а не структуры.
Если буквально следовать Вашей схеме, то правильней первый вариант - внешний ключ должен ссылаться на первичный ключ родительской таблицы, а не на произвольный набор полей.
Но если во второй вариант внести отказ от поля fil_pod_id и определение первичным ключом в таблице "Список подразделений в филиалах" сочетание (fil_id, pod_id ) - то все становится менее очевидным.

Как я могу в варианте 2 с помощью constraint'ов заблокировать вставку подразделения которое не входит в данный филиал?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462054
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_мод
Изделие - это одна сущность. Ессно разные типы одной сущности имеют разные атрибуты, но это видно только на экране, а в БД д.б. одна таблица на одну сущность.
Аргунемент начальника таков - что типа если я все свалю в одну табилцу, все атрибуты этих одинаковых (а он грит разных) сущностей то начнется каша, и будет не понятно какие поля к одному типу, а какое к другому, и пришедший после меня человек не разберется никогда. И еще получается не нормализованная схема, т.к. запись в таблице имеет поля, которые к этой записи не относятся.
В общем я так понимаю что надо выбрать подход:
1. Нормализованная схема, но неудобно с ней работать
2. Не совсем нормализованная, но зато очень удобная для работы
третьего не дано!

Я правильно понимаю?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462097
думаю так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovan_z _мод
Изделие - это одна сущность. Ессно разные типы одной сущности имеют разные атрибуты, но это видно только на экране, а в БД д.б. одна таблица на одну сущность.
Аргунемент начальника таков - что типа если я все свалю в одну табилцу, все атрибуты этих одинаковых (а он грит разных) сущностей то начнется каша, и будет не понятно какие поля к одному типу, а какое к другому, и пришедший после меня человек не разберется никогда. И еще получается не нормализованная схема, т.к. запись в таблице имеет поля, которые к этой записи не относятся.
В общем я так понимаю что надо выбрать подход:
1. Нормализованная схема, но неудобно с ней работать
2. Не совсем нормализованная, но зато очень удобная для работы
третьего не дано!

Я правильно понимаю?
имхо стоит хранить все подразделения в одной таблице - таблице которая будет описывать сущность подразделения. по мне так все подразделения вне зависимости от их уровня есть сущности одного рода.
с другой стороны если по логике бизнес процессов это различные сущности то разделение таблиц оправдано. но не знаю что то причин считать их различными сущностями.
по моему любое организационное подразделение имеет одни и те же характеристики - название, уровень в ОАО, начальник, зам, сотрудники... но эти свойства имхо лучше не хранить в той же таблице, а хранить эти сущности в отдельной таблице и связывать их при помощи кросс-таблиц с таблицей подразделений. вроде бы это классический способ описания организационной структуры
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462147
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
т.е. правильный подход таков:
Сделать древовидный справочник подразделений с полями скажем:
pod_id (PK)
pod_name
podtype_id (FK ссылка на тип подразделения)
pod_par_id (ссылка на pod_id) для оргинизации дерева

и потом сделать для каждого типа подразделения с различными атрибутами свою таблицу атрибутов.(например filial,office...)

Все так думают?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462167
думаю так
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vovan_zт.е. правильный подход таков:
Сделать древовидный справочник подразделений с полями скажем:
pod_id (PK)
pod_name
podtype_id (FK ссылка на тип подразделения)
pod_par_id (ссылка на pod_id) для оргинизации дерева

и потом сделать для каждого типа подразделения с различными атрибутами свою таблицу атрибутов.(например filial,office...)

Все так думают?
http://www.sql.ru/forum/actualthread.aspx?tid=507182&pg=-1

тема по моему для тебя
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462370
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну не совсем то что я спрашивал
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462561
Кот Матроскин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vovan_z
Как я могу в варианте 2 с помощью constraint'ов заблокировать вставку подразделения которое не входит в данный филиал?

Обьявляете в таблице "документы" Foreign key на таблицу "Список подразделений в филиалах", колонки fil_id ,pod_id.
Ваша СУБД так не умеет, что ли?
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462587
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если все задокументировать,то все разберутся. Так что отмаза начальника голима.
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462754
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кот Матроскин
Обьявляете в таблице "документы" Foreign key на таблицу "Список подразделений в филиалах", колонки fil_id ,pod_id.
Ваша СУБД так не умеет, что ли?
Да, точно. так будет работать. но все же буду использовать вариант 1. он вроде получше
...
Рейтинг: 0 / 0
Правильная ссылка
    #35462773
vovan_z
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо.
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Правильная ссылка
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]