Верно или неверно ... Путаница в отношении базы данных .... Мне нужно немного объяснений для этих - PullRequest
1 голос
/ 12 марта 2012
  1. Любые два кортежа в отношении имеют разные значения хотя бы для одного атрибута.
  2. Кортежи, принадлежащие одному и тому же отношению, хранятся в произвольном порядке.
  3. Программист может указатькортежи в том же отношении должны отображаться в определенном порядке согласно значениям одного или нескольких атрибутов.

Я бы сказал ... True, False, True ....

Мне бы хотелось услышать мнение ваших парней, потому что вы, люди, были в этой области дольше, чем я :))

Заранее благодарны, ребята:)

Ответы [ 3 ]

2 голосов
/ 13 марта 2012
  1. Верно.Две полностью идентичные строки должны логически представлять один и тот же кортеж.Кортеж в отношении (или строка в таблице) - это, по сути, утверждение правды, например, строка («Джон Смит», 1/1/2000) может означать «Сотрудник по имени Джон Смит начал работу 1/1 /2000.»Если таблица в СУБД имеет строк («Джон Смит», 1/1/2000) и («Джон Смит», 1/1/2000), это нене делайте утверждение более верным - здесь представлен только один кортеж . * Реляционная модель не говорит, что вы не можете хранить несколько копий строки;это только говорит о том, что если вы измените одну копию, вы должны сделать то же самое изменение и для всех других копий;и когда вы запрашиваете его, следует использовать только одну из этих копий.На практике удобнее / эффективнее применять уникальность с ограничением и хранить только одну физическую копию.

  2. True (или точнее: не применимо).Реляционная модель не заботится о том, в каком порядке хранятся утверждения истинностиПорядок, в котором представлены кортежи, не имеет значения для их значения истинности.

  3. Также «не применимо».То, как результаты запросов в реляционной базе данных представляются пользователям, выходит за рамки реляционной модели.Это действительно не заботит.

(* не говорите мне, что могут быть два человека по имени "Джон Смит", которые начали работать в эту конкретную дату; в реляционной модели,вы должны найти что-то другое в этих двух бедняках, чтобы отличить их от базы данных, в противном случае, логически, эти строки должны ссылаться на одно и то же утверждение истинности - если нет, то естьобновить и удалить аномалии, которые не могут быть устранены - например, если «Джону Смиту» внезапно надоест быть ошибочно принятым за другого Джона Смита и уйти в отставку, как бы вы написали инструкцию UPDATE, чтобы установить дату его отставки?)

2 голосов
/ 12 марта 2012

Я не знаю ни одной СУБД, которая вынуждает разработчика иметь неповторяющиеся строки (кортежи). Таким образом, на практике ответы являются ложными, истинными * и истинными.

* Опять же, на практике ответ на # 2 может быть Ложным в некоторых обстоятельствах, в зависимости от СУБД, но это не обязательно, и разработчик должен предположить, что # 2 - Истина.

1 голос
/ 14 марта 2012

Любые два кортежа в отношении имеют разные значения хотя бы для одного атрибута.

True.Это требование реляционной модели.

Кортежи, принадлежащие одному и тому же отношению, хранятся в произвольном порядке.

Ни истина, ни ложь.

Это правда, что отношения не имеют упорядочения кортежей по определению.Тем не менее, отношение не «хранится».Мастер теста, вероятно, хотел сказать переменная отношения (relvar).

Это правда, что реляционной модели нечего сказать, хранятся ли кортежи relvar в определенном порядке;скорее это особенность СУБД.Большинство продуктов SQL, основанных на непрерывном хранилище, позволяют пользователям указывать кластеризованный индекс для базовой таблицы, который будет влиять на физический порядок на диске.Однако стандарт SQL не имеет ничего общего с такими индексами.Нет причин, по которым реляционная СУБД не могла бы иметь подобную особенность.

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

Это утверждение не относится к языку реляционных баз данных.Если бы язык базы данных имел такую ​​особенность, то результатом не было бы отношение (оно не отображало бы кортежи), и, следовательно, рассматриваемый язык не был бы реляционным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...