Попробуйте найти Частичные и транзитивные зависимости

Cust_id| Name |Ord_no|Ord_Date     |PROD-ID|Descr |Qty_ord|
C001   | Pink | O81  |    15-Apr   |P005   |Chisel|6      |
C001   | Pink | O81  |    15-Apr   |P004   |Jane  |14     |
C0075  | Red  | O99  |    16-Apr   |P015   |Saw   |3      |
C009   | Black| O56  |    16-Apr   |P033   |Punch |24     |
C009   | Black| O56  |    16-Apr   |P004   |Jane  |9      |
C001   | Pink | O88  |    17-Apr   |P015   |Saw   |10     |    

Из этого примера таблицы я пытаюсь понять обе эти зависимости. По моему мнению, частичные зависимости имеют первичный составной ключ, а транзитивные - нет.

Я думаю, что первичный ключ - это Ord_no и Prod_id. Не уверен насчет Cust_id.

Единственным неключевым столбцом, который зависит от всего ключа, является количество. Все остальные являются частичными зависимостями. Не уверен, что транзитивная зависимость существует или нет в этой таблице.

Частичные зависимости в таблице: • Cust_id и Name • Prod_id и Decr

Кроме того, транзитивная зависимость в таблице выглядит следующим образом: • Ord no_ и Ord_date могут быть ?

Диаграмма, извините, не могу вставить это в пост.

Обновление 1. Я пытаюсь понять, но не уверен в своем ответе. Я просто хочу уточнить, например, что номер заказа уникален и определяет клиента, так как два разных order_no 81 и 88 могут иметь один и тот же идентификатор клиента C001 . Поэтому я думаю, что нет транзитивной зависимости.


person Rohan Kapoor    schedule 05.04.2018    source источник
comment
Пожалуйста, погуглите «домашнюю работу по stackexchange». Дайте и/или процитируйте свой учебник, покажите и оправдайте свою работу после него. Объясните, где и почему вы застряли. Это просто набор утверждений, не связанных ни с какими определениями или алгоритмами.   -  person philipxy    schedule 05.04.2018
comment
Частичные и транзитивные FD определяются без ссылки на CK. NF связаны с транзитивными FD и CK.   -  person philipxy    schedule 05.04.2018
comment
Возможный дубликат Идентификация транзитивных зависимостей   -  person philipxy    schedule 05.04.2018


Ответы (1)


Я вижу много зависимостей в вашей текущей таблице, которые можно было бы реорганизовать:

  • Cust_id скорее всего определяет имя клиента
  • Ord_no определяет набор продуктов, включенных в этот заказ.
  • PROD-ID определяет описание этого продукта

Я бы предложил следующую схему, включающую четыре таблицы:

Customers

Cust_id (PK) | Name
C001         | Pink
C009         | Black
C0075        | Red

Products

PROD-ID (PK) | Descr
P004         | Jane
P005         | Chisel
P015         | Saw
P033         | Punch

Orders

Ord_no (PK) | Ord_Date | Cust_id
056         | 16-APR   | C009
081         | 15-APR   | C001
088         | 18-APR   | C001
099         | 16-APR   | C0075

OrdersDetails

Ord_no | PROD-ID | Qty-ord   (primary key is Ord_no, PROD-ID)
O56    | P004    | 9
O56    | P033    | 24
O81    | P004    | 14
O81    | P005    | 6
O88    | P015    | 10
O99    | P015    | 3

Теперь, если вам нужен текущий результат, вы можете получить его с помощью запроса на соединение:

SELECT
    c.Cust_id,
    c.Name,
    o.Ord_no,
    o.Ord_Date,
    od.PROD-ID,
    p.Descr,
    od.Qty-ord
FROM Customers c
INNER JOIN Orders o
    ON c.Cust_id = o.Cust_id
INNER JOIN OrdersDetails od
    ON o.Ord_no = od.Ord_no
INNER JOIN Products p
    ON od.PROD-ID = p.PROD-ID;
person Tim Biegeleisen    schedule 05.04.2018
comment
Итак, что такое первичный ключ? - person Rohan Kapoor; 05.04.2018
comment
@RohanKapoor Я пометил столбцы первичного ключа. Мой подход может быть не на 100% правильным, но он находится на правильном пути и намного лучше, чем то, что вы начали. - person Tim Biegeleisen; 05.04.2018
comment
извините, мужчины, в моей таблице была ошибка, я забыл добавить одну из колонок. - person Rohan Kapoor; 05.04.2018
comment
Cust-id, Ord_no и Prod_id? являются первичным ключом, который я думал - person Rohan Kapoor; 05.04.2018
comment
Сделайте шаг назад здесь. У вас еще даже нет нормализованных таблиц, и вы спрашиваете, что такое первичные ключи. Во-первых, понятно, почему я сгенерировал приведенные выше таблицы? Если да, то можно говорить о первичных ключах. - person Tim Biegeleisen; 05.04.2018
comment
У вас есть после удаления всех частичных зависимостей и рисования новых диаграмм зависимостей. Я прав? - person Rohan Kapoor; 05.04.2018
comment
Первичными ключами являются крайние левые столбцы, за исключением OrdersDetails, где первичным ключом является комбинация идентификаторов заказа и продукта. - person Tim Biegeleisen; 05.04.2018
comment
NAME зависит от CUST_NO, который зависит от ORD_NO. Это транзитивная зависимость. и Единственный неключевой столбец, который зависит от всего ключа, — это Количество. Все остальное является частичными зависимостями. Я прав? не ругай меня пожалуйста. :) - person Rohan Kapoor; 05.04.2018
comment
CUST_NO действительно зависит от ORD_NO в той мере, в какой у каждого заказа есть один клиент (по крайней мере, согласно моему предположению). Это зависимость, но поскольку у нас есть отдельная таблица для клиентов, это не проблема. Таблица заказов записывает только идентификатор клиента. - person Tim Biegeleisen; 05.04.2018
comment
Я задолбался. Я не знаю, как еще улучшить то, что я уже дал вам. - person Tim Biegeleisen; 05.04.2018
comment
Извините, ребята, но я смущен, вы сказали, что cust_id является PK или нет? - person Rohan Kapoor; 05.04.2018
comment
подождите, дайте мне нарисовать схему и дайте мне знать, прав я или нет? - person Rohan Kapoor; 05.04.2018
comment
Кажется, все в порядке. Я действительно не думаю с точки зрения диаграмм. Чтобы построить правильную диаграмму, вам нужно пройти процесс, который я прошел, и некоторое время смотреть на свои данные, чтобы увидеть, как они связаны. - person Tim Biegeleisen; 05.04.2018
comment
Я лучше понимаю это. Еще один вопрос. Я все еще думаю, что Cust_ID не зависит от Ord_ num, так как в последней строке C001 есть ord_no 088. Правильно? Вот почему нет транзитивной зависимости - person Rohan Kapoor; 05.04.2018
comment
Мне трудно ответить, используя ваши термины. Идентификатор заказа уникален и определяет клиента, но простое указание клиента не означает, что вы знаете, о каком заказе идет речь. - person Tim Biegeleisen; 05.04.2018
comment
Я понял, у одного клиента может быть много заказов. Но у одного заказа не может быть много клиентов. извините, если веду себя как тупица - person Rohan Kapoor; 05.04.2018
comment
Я только что понял, что может быть зависимость заказанного количества от продукта. Предположим, что определенные продукты всегда необходимо заказывать в определенном количестве. Но если нет, то то, что я тебе дал, должно подойти. - person Tim Biegeleisen; 05.04.2018
comment
В вопросе упоминалось предположение Вы можете предположить, что номер заказа относится к более чем одному продукту и что таблица не содержит повторяющихся групп. - person Rohan Kapoor; 06.04.2018