powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Декомпозиция
7 сообщений из 7, страница 1 из 1
Декомпозиция
    #39374236
boguc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть отношение Student с атрибутами: ID, Name, DateOfBirth, Group, GroupLeaderID.
Необходимо разделить его на два без потерь.

ID - номер студ. билета, первичный ключ
Name - ФИО студента. Могут совпадать.
DateofBirth - дата рождения
Group - номер студ. группы, студент может учиться только в одной группе
GroupLeaderID - номер студ. билета старосты группы, ВНЕШНИЙ КЛЮЧ, СССЫЛАЮЩИЙСЯ НА АТРИБУТ ID. В каждой группе обязательно есть староста и только один.

Гуглил, по примерам понимаю суть декомпозиции. Но "ВНЕШНИЙ КЛЮЧ, СССЫЛАЮЩИЙСЯ НА АТРИБУТ ID" сбивает с толку. Помогите пожалуйста.

Есть несколько вариантов ответа:
{ ID(key), Name, Group, GroupLeaderID}, {Name(key), DateOfBirth}
{ ID(key), Group, GroupLeaderID}, {Name(key), DateOfBirth}
{ ID(key), Name, DateOfBirth}, {Group(key), GroupLeaderID}
{ ID(key), Name, DateOfBirth, Group}, {Group(key), GroupLeaderID}

Больше склоняюсь к 4-ому, но не уверен.
...
Рейтинг: 0 / 0
Декомпозиция
    #39374244
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bogucНо "ВНЕШНИЙ КЛЮЧ, СССЫЛАЮЩИЙСЯ НА АТРИБУТ ID" сбивает с толку.
https://en.wikipedia.org/wiki/Foreign_key
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Декомпозиция
    #39374255
boguc
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry Sibiryakov, так и не понял, к сожалению, как в одном и том же отношении может быть первичный и внешний ключ вместе.
...
Рейтинг: 0 / 0
Декомпозиция
    #39374351
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
boguc,

У Вас в паспорте есть ФИО - это первичный ключ. А ещё есть ФИО жены - это внешний ключ.
...
Рейтинг: 0 / 0
Декомпозиция
    #39374600
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bogucGroupLeaderID - номер студ. билета старосты группы
этот столбец сюда вообще не налазит, никак.
Должна быть таблица групп, на которую как раз ссылается столбец Group. И вот уже там, в таблице групп, будет GroupLeaderID. А в таблице Student этому столбцу делать нечего. Иначе он будет избыточным - одинаковым у всех студентов одной группы, которые не GroupLeader.
Если у вас там фигурными скобками выделены две таблицы, то тогда верный ответ только 4
{ ID(key), Name, DateOfBirth, Group}, {Group(key), GroupLeaderID}
Причем, таблицы ссылаются друг на друга.
Student.Group ссылается на первичный ключ Group(key), а GroupLeaderID ссылается обратно на Student.ID.
В этом случае GroupLeaderID должно допускать null, иначе нельзя будет добавлять записи ни в одну эту таблицу.
...
Рейтинг: 0 / 0
Декомпозиция
    #39375106
Cane Cat Fisher
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bogucID - номер студ. билета, первичный ключ


Кстати, никудышнее решение. Первый же оболтус, потерявший студенческий билет, обрушит информационную систему. Потому что получит новый билет с новым номером.
...
Рейтинг: 0 / 0
Декомпозиция
    #39379793
fsharp_fsharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
bogucЕсть отношение Student с атрибутами: ID, Name, DateOfBirth, Group, GroupLeaderID.
Необходимо разделить его на два без потерь.

ID - номер студ. билета, первичный ключ
Name - ФИО студента. Могут совпадать.
DateofBirth - дата рождения
Group - номер студ. группы, студент может учиться только в одной группе
GroupLeaderID - номер студ. билета старосты группы, ВНЕШНИЙ КЛЮЧ, СССЫЛАЮЩИЙСЯ НА АТРИБУТ ID. В каждой группе обязательно есть староста и только один.

Гуглил, по примерам понимаю суть декомпозиции. Но "ВНЕШНИЙ КЛЮЧ, СССЫЛАЮЩИЙСЯ НА АТРИБУТ ID" сбивает с толку. Помогите пожалуйста.

Есть несколько вариантов ответа:
{ ID(key), Name, Group, GroupLeaderID}, {Name(key), DateOfBirth}
{ ID(key), Group, GroupLeaderID}, {Name(key), DateOfBirth}
{ ID(key), Name, DateOfBirth}, {Group(key), GroupLeaderID}
{ ID(key), Name, DateOfBirth, Group}, {Group(key), GroupLeaderID}

Больше склоняюсь к 4-ому, но не уверен.

Студент: ID, Name, DateOfBirth, GroupID
Группа: ID, Name, GroupLeaderID
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Декомпозиция
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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