Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию БД / 12 сообщений из 12, страница 1 из 1
21.04.2014, 18:39
    #38620782
AlexWei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
У меня есть две таблицы

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE IF NOT EXISTS company (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250) NOT NULL
);

CREATE TABLE IF NOT EXISTS employee (
    id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR (250),
    company_id INT,
    FOREIGN KEY (company_id) REFERENCES Company (id)
);



Нужно создать еще несколько таблиц, которые отвечали бы за статистику по сотрудникам и статистику по компаниям. По сотруднику надо помнить все его предыдущие компании, а так же даты поступления и увольнения из этих компаний. По компаниям нужно помнить всех уволенных сотрудников. Как мне лучше организовать таблицы?
...
Рейтинг: 0 / 0
21.04.2014, 19:47
    #38620822
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
AlexWeiПо сотруднику надо помнить все его предыдущие компании, а так же даты
поступления и увольнения из этих компаний. По компаниям нужно помнить всех уволенных
сотрудников. Как мне лучше организовать таблицы?
Это всего одна таблица с полями (Сотрудник, Компания, Дата приёма, Дата увольнения).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.04.2014, 20:10
    #38620835
AlexWei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
То есть можно добавить агрегирующую таблицу, вроде

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
CREATE TABLE IF NOT EXISTS company_employee (
    company_id INT NOT NULL,
    employee_id INT NOT NULL,
    hire_date DATE,
    resign_date DATE,
    FOREIGN KEY (company_id) REFERENCES Company (id),
    FOREIGN KEY (employee_id) REFERENCES Employee (id)
);



и потом с нее уже вытаскивать данные?
...
Рейтинг: 0 / 0
21.04.2014, 20:17
    #38620844
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
Что ты называешь "агрегирующей таблицей"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.04.2014, 20:19
    #38620847
AlexWei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
company_employee
...
Рейтинг: 0 / 0
21.04.2014, 20:25
    #38620853
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
Почему ты считаешь, что эта таблица - агрегирующая если в ней нет агрегатов?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.04.2014, 20:35
    #38620864
AlexWei
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
Наверное потому, что агрегирующие операция я буду к ней применять потом. Кстати, а как можно сделать поля таблицы агрегатами и когда это вообще практикуется?
...
Рейтинг: 0 / 0
21.04.2014, 21:01
    #38620875
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
Как и любая другая денормализация, хранимые агрегаты используются когда остальные методы
борьбы за быстродействие уже исчерпаны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
22.04.2014, 07:22
    #38621027
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
AlexWeiУ меня есть две таблицы

Нужно создать еще несколько таблиц, которые отвечали бы за статистику по сотрудникам и статистику по компаниям. По сотруднику надо помнить все его предыдущие компании, а так же даты поступления и увольнения из этих компаний. По компаниям нужно помнить всех уволенных сотрудников. Как мне лучше организовать таблицы?

Для сотрудника/ов завести таблицу "Трудовая книжка".
Взять поля из "Трудовой книжки".

Для компании/й завести таблицу "форма Т1".
Взять нужные поля из формы Т1.

Где-то так
<:o)
...
Рейтинг: 0 / 0
22.04.2014, 12:33
    #38621365
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
> Нужно создать еще несколько таблиц, которые отвечали бы за статистику по
> сотрудникам и статистику по компаниям. По сотруднику надо помнить все
> его предыдущие компании, а так же даты поступления и увольнения из этих
> компаний.


Тогда это у тебя не сотрудник, а человек.
По сотруднику никогда не нужно помнить историю увольнений и поступлений.

По компаниям нужно помнить всех уволенных сотрудников. Как мне
> лучше организовать таблицы?

create table...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
08.05.2014, 07:38
    #38636161
gema
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
MasterZiv,

1.Таблица Организация(Название и тд);
2. Таблица Сотрудников (ФИО и тд);
3. Таблица приемов и увольнений(сотрудник-организация-дата_приема-дата_увольнения).

Организовать необходимые foreign_key между таблицами.
Используя group by по полям можно будет вести различные подсчёты по сотрудниками и организациям.
...
Рейтинг: 0 / 0
08.05.2014, 10:37
    #38636318
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет по проектированию БД
gema1.Таблица Организация(Название и тд);
2. Таблица Сотрудников (ФИО и тд);
3. Таблица приемов и увольнений(сотрудник-организация-дата_приема-дата_увольнения).

http://www.sql.ru/forum/1093444/bd-po-kontrolu-dvizheniya-obektov
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию БД / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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