Вопрос:
Моя школьная книга Database Systems определяет кардинальность следующим образом:
Мощность отношения – это число кортежей, которые оно содержит. Напротив, количество кортежей называется количеством отношений, и оно изменяется по мере добавления или удаления кортежей. Высокая кардинальность – много кортежей, низкая кардинальность – мало кортежей.
В то время как статья Википедии о кардинальности (операторы SQL), определяет ее следующим образом:
Под кардинальностью понимается уникальность значений данных, содержащихся в определенном столбце (атрибуте) таблицы базы данных. Чем меньше количество элементов, тем больше дублирующихся элементов в столбце. Существует 3 типа кардинальности: высокая мощность, нормальная мощность и низкая мощность.
Они оба могут быть правы, но я не могу связать два определения как связанные определения. Перефразировка будет цениться!
Лучший ответ:
Они говорят одно и то же, и это связано с кортежами (relational algebra) или строками (термин непрофессионала).
Когда он говорит, что высокая мощность – это возможные значения конкретного атрибута (или поля), которые являются уникальными, и поэтому число строк или кортежей выше:
Пример:
StudentID Lastname Firstname Gender 101 Smith John M 102 Jones James M 103 Mayo Ann F 104 Jones George M 105 Smith Suse F
Насколько StudentID cardinality является high, потому что он уникален. В нем имеется пять (5) кортежей/строк.
С другой стороны, Lastname имеет нормальную мощность, в частности, существует только три (3) уникальных кортежа/строки. Таким образом, он имеет normal cardinality.
И наконец, Пол имеет только два возможных уникальных набора, таким образом Low Cardinality.
Вы, вероятно, путаете cardinality здесь с Degree отношения, которое имеет что-то делать с числом attributes/fields в отношении (или таблице).
С другой стороны, учебник для Database, говоря о cardinality, обычно имеет отношение к сущности по отношению к другому объекту, то есть к числу возможных отношений вхождения для объекта, участвующего в данном типе отношений, Так, например, для binary relationship cardinality может быть либо one-to-one, one-to-many, либо many-to-many.
Ответ №1
Оба определения пытаются сказать, что мощность – это “количество строк”. Разница заключается в том, является ли сравнение “в таблице” или “в конкретном столбце”.
Версия в учебнике базы данных сосредоточена на реляционной алгебре и структуре таблиц ( “отношения” в этом языке).
Википедия более практична. Он охватывает определение учебника, предполагая, что таблица имеет первичный ключ (мощность первичного ключа совпадает с базой данных). Тем не менее, он может быть применен, скажем, к столбцу флага. Если флаг принимает только два значения (0 versus 1), то можно сказать, что мощность столбца равна 2.
Это важно для оптимизации запросов. Кардинальность – это один из компонентов выбора лучших методов объединения, агрегации и выбора данных. На практике большинство баз данных используют больше информации, чем мощность, так называемую “статистику” о столбцах и их значениях для оптимизации.
Ответ №2
Если у нас есть таблицы A и B, подумайте о мощности как числе строк таблицы B, которые будут связаны с строкой из таблицы A. Если таблицы PERSON и VEHICLE, а отношение RODE_ON, то мощность равна поскольку большинство людей ездили на много разных транспортных средств в прошлом, и большинство автомобилей вели многих людей. Если отношение является СОБСТВЕННЫМ, тогда мощность низкая – у большинства людей есть одно транспортное средство, у кого-то нет никого, а у транспортного средства обычно есть один или два владельца, не более.
Заметим, что мощность с одной стороны отношения не равна мощности с другой стороны. Если таблицы – ЧЕЛОВЕК и ПАЛЬЦЫ, а отношение НЕПОЛАГАЕТ, тогда у человека много пальцев, но каждый палец принадлежит только одному человеку.
Ответ №3
Есть две концепции
- Индекс мощности
- мощность
Я полагаю, что это относится к количеству элементов индекса, которое ОЧЕНЬ отличается. Https://www.ibm.com/developerworks/data/library/techarticle/dm-1309cardinal/
- Индекс мощности считается количеством уникальных значений в индексе.
- Термин используется для обсуждения создания индексов, сканирования таблиц, доступа к индексам и доступа к таблицам, как это влияет на вставки, обновления, удаления, пространство хранения.
Вот еще один пример: https://en.wikipedia.org/wiki/Cardinality_(SQL_statements)
- В SQL (язык структурированных запросов) термин “мощность” относится к уникальности значений данных, содержащихся в определенном столбце (атрибуте) таблицы базы данных.
- Чем меньше количество элементов, тем больше дублирующихся элементов в столбце. Таким образом, столбец с минимально возможным количеством элементов будет иметь одинаковое значение для каждой строки. Базы данных SQL используют количество элементов, чтобы помочь определить оптимальный план запроса для данного запроса.
Я полагаю, что слово “кардинальность” фокусируется на отношениях между таблицами. В частности, это не термин, используемый для обсуждения единой таблицы или уникальности данных.
Документация IBM (если вы ищете слово уникальное, оно не упоминается) https://www.ibm.com/support/knowledgecenter/en/SSEP7J_10.2.2/com.ibm.swg.ba.cognos.ug_cog_rlp.10.2. 2.doc/c_cog_rlp_rel_cardinality.html Когда вы интерпретируете количество элементов, вы должны учитывать нотацию, которая отображается на обоих концах отношения. Возможные метки конца показаны в следующем списке:
- 0..1 (ноль или одно совпадение)
- 1..1 (ровно одно совпадение)
- 0..n (ноль или более совпадений)
- 1..n (один или несколько совпадений)
В математике мощность множества является мерой “количества элементов множества”. (без упоминания уникального btw) https://en.wikipedia.org/wiki/Cardinality
В проектировании базы данных кардинальность или фундаментальный принцип одного аспекта данных по отношению к другому является критической характеристикой. Отношения одного к другому должны быть точными и точными между собой, чтобы объяснить, как каждый аспект связывает воедино. В реляционной модели таблицы могут быть связаны как “один-ко-многим”, “многие-ко-многим”, “один-к-ну-или-одному” и т.д. Это называется кардинальностью данная таблица по отношению к другой. https://en.wikipedia.org/wiki/Cardinality_(data_modeling)