powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Нужен совет по проектированию БД
12 сообщений из 12, страница 1 из 1
Нужен совет по проектированию БД
    #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
Нужен совет по проектированию БД
    #38620822
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexWeiПо сотруднику надо помнить все его предыдущие компании, а так же даты
поступления и увольнения из этих компаний. По компаниям нужно помнить всех уволенных
сотрудников. Как мне лучше организовать таблицы?
Это всего одна таблица с полями (Сотрудник, Компания, Дата приёма, Дата увольнения).
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #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
Нужен совет по проектированию БД
    #38620844
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ты называешь "агрегирующей таблицей"?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #38620847
AlexWei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
company_employee
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #38620853
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему ты считаешь, что эта таблица - агрегирующая если в ней нет агрегатов?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #38620864
AlexWei
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное потому, что агрегирующие операция я буду к ней применять потом. Кстати, а как можно сделать поля таблицы агрегатами и когда это вообще практикуется?
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #38620875
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как и любая другая денормализация, хранимые агрегаты используются когда остальные методы
борьбы за быстродействие уже исчерпаны.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #38621027
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexWeiУ меня есть две таблицы

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

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

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

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


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

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

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

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

Организовать необходимые foreign_key между таблицами.
Используя group by по полям можно будет вести различные подсчёты по сотрудниками и организациям.
...
Рейтинг: 0 / 0
Нужен совет по проектированию БД
    #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]